为了减轻“贵宾犬”漏洞,我想在我的(在本例中为 TLS,而不是 HTTPS)服务器中禁用 SSLv3 支持。我如何使用它openssl s_client
来验证我是否已完成此操作?
如何使用“openssl s_client”来测试(不存在)SSLv3 支持?
信息安全
tls
openssl
2021-09-01 00:55:15
4个回答
OpenSSL s_client
要检查您是否禁用了 SSLv3 支持,请运行以下命令
openssl s_client -connect example.com:443 -ssl3
这应该产生类似的东西
3073927320:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1258:SSL alert number 40
3073927320:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:
意味着 SSLv3 在服务器上被禁用。否则连接将成功建立。
地图
或者,您可以使用 nmap扫描服务器以获取支持的版本:
# nmap --script ssl-enum-ciphers example.com
Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-15 03:19 PDT
Nmap scan report for example.com (203.0.113.100)
Host is up (0.090s latency).
rDNS record for 203.0.113.100: edge.example.com
Not shown: 997 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
| ssl-enum-ciphers:
| **SSLv3: No supported ciphers found**
| TLSv1.0:
在旁注中,您可以使用nmap
ssl-enum-ciphers 脚本,如下所示
nmap --script ssl-enum-ciphers -p 443 example.com
你会得到这样的回应。
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| SSLv3:
| ciphers:
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_MD5 - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.0:
| ciphers:
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_MD5 - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.1:
| ciphers:
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
| compressors:
| NULL
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong
| compressors:
| NULL
|_ least strength: strong
如您所见,它列出了所有受支持的 ssl/tls 版本以及密码套件
如果仅禁用 SSLv3,您也可以强制openssl s_client
仅使用 TLS:
openssl s_client -connect exmaple.com:443 -tls1
我为 SSLv3 协议的可用性创建了这个测试。可能有更好的方法来搜索也显示正在使用 CBC 密码的字符串,但大多数人似乎只是想知道 SSLv3 是否可用。
需要注意的几点:
- 为 Mac OS X 上的 bash 编写,所以不能肯定它会在任何地方工作
- 使用 gtimeout 与超时,因为 Mac 对这些核心工具很奇怪
- allexternal.txt 是一个文件,每行有一个主机名或 IP
脚本:
for ip in `awk '{print $1}' < allexternal.txt`; do
if gtimeout 30 openssl s_client -connect $ip:443 -ssl3 | grep -q 'Protocol : SSLv3' ; then
echo $ip SSLv3 detected >> sslv3output;
else
echo $ip SSLv3 NOT detected >> sslv3output;
fi;
done
其它你可能感兴趣的问题