13

我正在使用函数 SSL_CTX_set_cipher_list 来设置 SSL 连接支持的密码。传递给 SSL_CTX_set_cipher_list 以禁用弱密码的参数。

我试过通过ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH

但它似乎不起作用。

我的检测弱密码报告的工具仍然启用

** SSLv3:DES-CBC-SHA - 启用 - 弱 56 位 **

** TLSv1:DES-CBC-SHA - 启用 - 弱 56 位 **

** SSLv2:RC4-MD5 - 启用 - 弱 128 位 **
** SSLv2:RC2-CBC-MD5 - 启用 - 弱 128 位 **
** SSLv2:RC4-64-MD5 - 启用 - 弱 64 位 **
** SSLv2:DES-CBC-MD5 - 启用 - 弱 56 位 **
** SSLv2:EXP-RC4-MD5 - 启用 - 弱 40 位 **
** SSLv2:EXP-RC2-CBC-MD5 - 启用 - 弱 40 位 **
** SSLv2:DES-CBC3-MD5 - 启用 - 弱 168 位 **

传递给 SSL_CTX_set_cipher_list 以禁用上述密码的参数是什么?

4

2 回答 2

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

于 2010-09-23T11:20:11.140 回答
2

将什么参数传递给 SSL_CTX_set_cipher_list 以禁用弱密码

这取决于您使用的弱者的定义。在 2015 年,您必须有效地避开,HIGH:!aNULL因为现代浏览器拒绝了HIGH. 如果您允许 MD5 和/或 RC4,那么您会收到过时的加密警告

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不返回值,因此无需测试以确保调用成功。

于 2015-09-16T00:44:44.633 回答