Я ищу конфигурацию веб-сервера (nginx), которая поддерживает текущие (ноябрь 2015 г.) требования PCI-DSS к SSL:
После многих сканирований с использованием Nexpose I. создал конфигурацию 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» в середине page) после удаления CBC, RC4 и других «слабых» элементов я не вижу возможности использовать протоколы TLSv1.0 или TLSv1.1. Я также не вижу возможности использовать TLSv1.2 с большим количеством шифров.
Кто-нибудь знает, что в моей конфигурации можно изменить, для повышения совместимости с браузерами / библиотеками / системами и при этом соответствовать требованиям PCI-DSS?
Если отключить TLS1.0 и отключить все шифры CBC, то для увеличения совместимости с браузерами не так уж и много нужно сделать.
Однако, CBC-шифры НЕ считаются "слабыми", если TLS1.0 отключен. Атака уязвимости BEAST основана на отсутствии в TLS1.1 и выше.
.