В настоящее время я веду борьбу с упрямой реализацией SSL. Я заменил старое хранилище ключей хранилищем ключей, в которое входило:
Несмотря на это, я все еще получаю ошибку "weak diffie-hellman key" для моих клиентов Chrome (Firefox копает ее сейчас, я думаю, по крайней мере: D). Я провел несколько тестов через nmap, чтобы увидеть, что сервер готов говорить, и он предположительно проверяет ОК:
root@ubuntu14-en:~# nmap --script ssl-enum-ciphers -p 443 artifactory.mydomain.com
Starting Nmap 6.40 ( http://nmap.org ) at 2015-09-10 08:41 CDT
Nmap scan report for artifactory.mydomain.com (xxx.xx.x.xx)
Host is up (0.00026s latency).
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_MD5 - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.1:
| ciphers:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_MD5 - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.2:
| ciphers:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - strong
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - strong
| TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA - strong
| TLS_RSA_WITH_AES_128_CBC_SHA256 - strong
| TLS_RSA_WITH_AES_256_CBC_SHA - strong
| TLS_RSA_WITH_AES_256_CBC_SHA256 - strong
| TLS_RSA_WITH_RC4_128_MD5 - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
|_ least strength: strong
Nmap done: 1 IP address (1 host up) scanned in 1.42 seconds
Может ли кто-нибудь еще поделиться своими знаниями о том, как я могу повысить безопасность до общепринятых стандартов, которых ожидает Chrome? Я подозреваю, что это что-то глупое, будто мне нужно больше блокировать эти шифры, но я думал, что шифры "DHE_EXPORT" - это те, на которые нужно обратить внимание.
Заранее большое спасибо.
Помимо отключения экспортных комплектов шифров DHE, вам необходимо использовать 2048-битную группу Диффи-Хелмана, а не 1024-битную, которую, вероятно, использует Tomcat. Считается, что кто-то с ресурсами АНБ может взломать 1024-битное. Для этого добавьте -Djdk.tls.ephemeralDHKeySize=2048
к вашим вариантам Java или Catalina. Обратите внимание, что это работает только в Java 8 или новее - если вы используете 7 (или более раннюю версию), то пора обновить.
И пока вы это делаете, отключите комплекты шифров RC4 - RC4 больше не безопасен.
Ни один из них специально не касается «слабого ключа diffie-hellman», но они помогут.
Хеши MD5 не работают; Избавься от них.
Шифры RC4 слабые / сломанные; Избавься от них.
Хеши SHA1 ("SHA") также считаются слабыми. Если ваш сертификат SSL (не разрешенное шифрование в конфигурации ssl) использует SHA1, хром будет жаловаться. Однако я думаю, что вы не можете избавиться от конфигураций шифров SHA и по-прежнему поддерживать TLS 1.0, так что вы застряли на этом.
Я бы также предложил отключить 3DES; он очень медленный по сравнению с AES и не имеет преимуществ в плане безопасности.