在SSL连接中禁用弱密码

时间:2010-09-23 06:14:48

标签: ssl cryptography openssl elliptic-curve

我正在使用函数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以禁用上述密码的参数是什么?

2 个答案:

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