我当前的命令:
SSLProtocol -ALL -SSLv2 -SSLv3 -TLSv1 +TLSv1.1 +TLSv1.2
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!RC4
然而,当我运行 SSLScan 时,我发现以下密码仍然可用:
Accepted TLSv1 256 bits DHE-RSA-AES256-SHA
Accepted TLSv1 256 bits AES256-SHA
Accepted TLSv1 128 bits DHE-RSA-AES128-SHA
Accepted TLSv1 128 bits AES128-SHA
Accepted TLSv1 168 bits EDH-RSA-DES-CBC3-SHA
Accepted TLSv1 168 bits DES-CBC3-SHA
我如何修改我的 SSLCipherSuite 命令以删除对这些的支持?
答案1
为了解决这种情况,我建议使用openssl ciphers
命令行工具,例如:
openssl ciphers -v 'RSA+AES' | sort
这将列出该 OpenSSL 密码名称的各个密码套件;-v
命令行选项提供更多信息(例如该密码套件的协议版本),并使输出格式更像输出SSLScan
。使用sort
是可选的;我个人觉得使用排序列表更容易搜索名称(例如您提供的名称)。
我建议使用单引号将密码名称括起来,这样 shell 就不会解释它。请注意,使用协议版本也是可行的,例如:
openssl ciphers 'TLSv1.2'
使用此方法并查看协议版本和密码名称,我们发现罪魁祸首是DH+AES256
,它提供:
openssl ciphers -v `DH+AES256`
...
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
...
另一个罪魁祸首是DH+AES
:
openssl ciphers -v 'DH+AES' | sort
...
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
...
还有DH+3DES
,它提供:
openssl ciphers -v 'DH+3DES' | sort
...
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
...
该RSA+AES
名称提供二您不需要的密码套件:
openssl ciphers -v 'RSA+AES' | sort
...
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
...
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
...
最后,还有RSA+3DES
:
openssl ciphers -v 'RSA+3DES' | sort
...
DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
那么你可以从您的指令中删除所有提到的有罪名称SSLCipherSuite
,只要您的客户端有足够的剩余受支持的密码套件。
希望这可以帮助!