Я ищу конфигурацию веб-сервера (nginx), которая поддерживает текущие (ноябрь 2015 г.) требования PCI-DSS к SSL:
После многих сканирований с использованием Nexpose я создал конфигурацию Nginx, которая в конечном итоге соответствует этим очень строгим требованиям. Моя текущая тестовая конфигурация выглядит так:
server {
#(..)
ssl_certificate asdf.crt;
ssl_certificate_key sadf.key;
ssl_protocols TLSv1.1 TLSv1.2; #see about TLSv1.1 below
ssl_ecdh_curve secp521r1;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_dhparam asdf-dh2048.pem; #sorry, no support for Java 6u45
ssl_ciphers #ssh_ciphers of course should be in one line
ECDHE-ECDSA-AES256-GCM-SHA384:
ECDHE-ECDSA-AES128-GCM-SHA256:
ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-RSA-AES128-GCM-SHA256:
DHE-RSA-AES256-GCM-SHA384:
DHE-RSA-AES128-GCM-SHA256:
AESGCM:
!aNULL:!eNULL:!EXPORT:!RC4:!MD5:!PSK;
}
К сожалению:
Nginx использует openssl, поэтому согласно https://www.openssl.org/docs/manmaster/apps/ciphers.html (глава «CIPHER SUITE NAMES» в середине страницы) после удаления CBC, RC4 и других «слабых» элементов я не вижу возможности использовать протоколы TLSv1.0 или TLSv1.1. Я также не вижу возможности использовать TLSv1.2 с большим количеством шифров.
Кто-нибудь знает, что в моей конфигурации можно изменить для повышения совместимости с браузерами / библиотеками / системами и при этом соответствовать требованиям PCI-DSS?
Если вы отключите TLS1.0 и все шифры CBC, то для повышения совместимости с браузерами особо нечего делать.
Однако шифры CBC НЕ считаются «слабыми», если TLS1.0 отключен. Уязвимость, на которой основана атака BEAST, отсутствует в TLS1.1 и выше.