我正在使用函数SSL_CTX_set_cipher_list来设置SSL连接支持的密码。传递给SSL_CTX_set_cipher_list以禁用弱密码的参数是什么。
我尝试传递ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
但它似乎不起作用。
我的工具用于检测以下启用的弱密码报告
** SSLv3:DES-CBC-SHA - ENABLED - WEAK 56 bits ** ** TLSv1:DES-CBC-SHA - ENABLED - WEAK 56 bits ** ** SSLv2:RC4-MD5 - ENABLED - WEAK 128 bits ** ** SSLv2:RC2-CBC-MD5 - ENABLED - WEAK 128 bits ** ** SSLv2:RC4-64-MD5 - ENABLED - WEAK 64 bits ** ** SSLv2:DES-CBC-MD5 - ENABLED - WEAK 56 bits ** ** SSLv2:EXP-RC4-MD5 - ENABLED - WEAK 40 bits ** ** SSLv2:EXP-RC2-CBC-MD5 - ENABLED - WEAK 40 bits ** ** SSLv2:DES-CBC3-MD5 - ENABLED - WEAK 168 bits **
传递给SSL_CTX_set_cipher_list以禁用上述密码的参数是什么?
答案 0 :(得分:12)
HIGH:!DSS:!aNULL @ STRENGTH 应该有效。
openssl ciphers -v'HIGH:!DSS:!aNULL @ STRENGTH'打印以下密码列表:
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
DES-CBC3-MD5 SSLv2 Kx=RSA Au=RSA Enc=3DES(168) Mac=MD5
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
有关OpenSSL密码字符串及其含义的完整列表,请查看:http://www.openssl.org/docs/apps/ciphers.html
答案 1 :(得分:1)
传递给SSL_CTX_set_cipher_list以禁用弱密码的参数
这取决于你使用的弱者的定义。在2015年,您必须实现有效HIGH:!aNULL
,因为现代浏览器会拒绝 HIGH
中包含的某些密码。如果您允许MD5和/或RC4,那么您将获得obsolete cryptography warning。
HIGH:!aNULL:!MD5:!RC4
电话会是这样的:
rc = SSL_CTX_set_cipher_list(ctx, "HIGH:!aNULL:!MD5:!RC4");
ASSERT(rc >= 1);
您还应该禁用SSLv2,SSLv3和可能的压缩。你是这样做的:
const long flags = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION;
SSL_CTX_set_options(ctx, flags);
SSL_CTX_set_options
没有返回值,因此无需测试以确保调用成功。