отключить слабые шифры в SSL-соединении - PullRequest
13 голосов
/ 23 сентября 2010

Я использую функцию 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 ]

12 голосов
/ 23 сентября 2010

ВЫСОКИЙ:! DSS:! ANULL @ STRENGTH должен работать.

openssl шифры -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 голос
/ 16 сентября 2015

Какой аргумент передать в 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 не возвращает значение, поэтому нет ничего, что можно проверить, чтобы убедиться, что вызов успешен.

...