我目前的命令:
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命令来删除对这些的支持?
为了解决这种情况,我build议使用openssl ciphers命令行工具, 例如 :
openssl ciphers -v 'RSA+AES' | sort
其中将列出该OpenSSL密码名称的单个密码套件; -v命令行选项提供更多信息(如该密码组的协议版本),并使输出格式更像SSLScan输出。 sort的使用是可选的; 我个人发现使用sorting列表search名称比较容易,比如您提供的名称。
我build议在密码名称周围使用单引号,以便它不被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指令中提到的所有有罪的名字,只要你的客户端有足够的剩余受支持的密码组。
希望这可以帮助!