在 Linux 下,OpenSSL 本身并不直接提供端口扫描功能。但是,你可以使用 OpenSSL 的 s_client 命令来检查特定端口的连接状态。以下是如何使用 OpenSSL 进行端口扫描的方法:
打开终端。
输入以下命令,将 hostname
替换为目标主机的域名或 IP 地址,将 port
替换为要扫描的端口号:
openssl s_client -connect hostname:port
例如,要检查 example.com 上的端口 80 是否开放,可以使用以下命令:
openssl s_client -connect example.com:80
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=19:self signed certificate in certificate chain
verify return:1
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=0 CN = example.com
verify return:1
---
Certificate chain
0 s:CN = example.com
i:C = US, O = Let's Encrypt, CN = R3
1 s:C = US, O = Let's Encrypt, CN = R3
i:O = Digital Signature Trust Co., CN = DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIEbTJ9zANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJV
...
-----END CERTIFICATE-----
subject=CN=example.com
issuer=C = US, O = Let's Encrypt, CN = R3
---
No client certificate CA names sent
Peer signing digest: SHA256
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3544 bytes and written 394 bytes
Verification error: self signed certificate in certificate chain
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 19 (self signed certificate in certificate chain)
---
如果端口未开放或连接失败,你将看到类似于以下的输出:
139652025286144:error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:s3_pkt.c:1332:SSL alert number 42
139652025286144:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:877:
---
no peer certificate available
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 0 bytes and written 394 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
---
SSL-Session:
Protocol : TLSv1.3
Cipher : 0
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1633019202
Timeout : 7200 (sec)
Verify return code: 19 (self signed certificate in certificate chain)
---
请注意,这种方法只能检查单个端口,而不能扫描多个端口。如果你需要扫描多个端口,可以考虑使用 nmap 等专门的端口扫描工具。