我想保护我的服务器免受FREAK攻击,因此我想禁用所有使用Openssl的导出级RSA密钥的密码套件.有没有办法在openssl中禁用特定的密码套件?如果是的话,我该怎么做?
有没有办法在openssl中禁用特定的密码套件?如果是的话,我该怎么做?
要回答禁用特定密码套件的直接问题,请将其从传递给SSL_CTX_set_cipher_list或的密码套件列表中删除SSL_CTX_set_cipher_list:
int rc = SSL_CTX_set_cipher_list(ctx, "ALL:!NULL-MD5:!NULL-SHA");
assert(0 != rc);
Run Code Online (Sandbox Code Playgroud)
你可以SSL*用:
int rc = SSL_set_cipher_list(ssl, "ALL:!NULL-MD5:!NULL-SHA");
assert(0 != rc);
Run Code Online (Sandbox Code Playgroud)
在上面,NULL-MD5是SSL_RSA_WITH_NULL_MD5和NULL-SHA是SSL_RSA_WITH_NULL_SHA.您可以从openssl ciphers命令中获取映射列表.
您还可以使用以下命令禁用导出密码!EXP:
int rc = SSL_CTX_set_cipher_list(ctx, "ALL:!EXP");
assert(0 != rc);
Run Code Online (Sandbox Code Playgroud)
你可以用以下方式做到SSL*:
int rc = SSL_set_cipher_list(ssl, "ALL:!EXP");
assert(0 != rc);
Run Code Online (Sandbox Code Playgroud)
你可以看到"ALL:!EXP"与OpenSSL命令相同的东西(注意单引号,所以shell不会抓住爆炸):
$ openssl ciphers 'ALL:!EXP'
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:
ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:SRP-DSS-AES-256-CBC-SHA:
SRP-RSA-AES-256-CBC-SHA:SRP-AES-256-CBC-SHA:DH-DSS-AES256-GCM-SHA384...
Run Code Online (Sandbox Code Playgroud)
您可以使用以下公式计算密码套件的数量:
$ openssl ciphers 'ALL:!EXP' | tr ':' ' ' | wc -w
124
Run Code Online (Sandbox Code Playgroud)
这告诉你ClientHello,由于124个密码套件,你将使用至少248个字节.理想情况下,您应该宣传您真正想要的16个左右的套房.
您通常"HIGH"只使用密码套件.它排除了"MEDIUM","LOW"和"EXP".这是我的电话有时看起来的样子:
int rc = SSL_CTX_set_cipher_list(ctx, "HIGH:!ADH:!MD5:!RC4:!SRP:!PSK:!DSS");
assert(0 != rc);
Run Code Online (Sandbox Code Playgroud)
请务必排除匿名gear(!ADH),因为默认情况下包含它.!MD5而!RC4被使用,因为它们是弱/人受伤.!SRP,!PSK和!DSS,用于进一步修剪密码列表,因为它们通常不被使用.
你也可以用a SSL*和SSL_set_cipher_list.
如果您在服务器上呼叫SSL_CTX_set_cipher_list,SSL_set_cipher_list则将根据证书中的密钥类型进一步修剪密码套件列表.
在上一个街区,我说......我的电话有时看起来如何.通常,我喜欢指定我想要使用的16个左右:
string GetCipherSuites()
{
static string ciphers = ""
#if defined(ALLOW_ECDSA)
"ECDHE-ECDSA-AES256-GCM-SHA384:"
"ECDHE-ECDSA-AES128-GCM-SHA256:"
#endif
"ECDHE-RSA-AES256-GCM-SHA384:"
"ECDHE-RSA-AES128-GCM-SHA256:"
#if defined(ALLOW_DSA)
"DHE-DSS-AES256-GCM-SHA384:"
#endif
"DHE-RSA-AES256-GCM-SHA384:"
#if defined(ALLOW_DSA)
"DHE-DSS-AES128-GCM-SHA256:"
#endif
"DHE-RSA-AES128-GCM-SHA256:"
#if defined(ALLOW_DSA)
"DHE-DSS-AES256-SHA:"
#endif
"DHE-RSA-AES256-SHA:"
#if defined(ALLOW_DSA)
"DHE-DSS-AES128-SHA:"
#endif
"DHE-RSA-AES128-SHA:"
#if defined(ALLOW_DSA)
"EDH-DSS-DES-CBC3-SHA:"
#endif
"EDH-RSA-DES-CBC3-SHA:"
#if defined(ALLOW_DSA)
"DH-DSS-DES-CBC3-SHA:"
#endif
"DH-RSA-DES-CBC3-SHA:";
return ciphers;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23602 次 |
| 最近记录: |