Как вы оцениваете A+ со 100 во всех категориях в тесте SSL Labs с Let Encrypt и Nginx?

Я пытаюсь забить 100 баллов по всем категориям при тестировании моих сертификатов SSL по адресу: www.ssllabs.com

Тем не менее, я изо всех сил стараюсь получить A+ и 100 во всех баллах.

Любые подсказки относительно того, какую конфигурацию NGINX я должен использовать? Или как я должен сгенерировать свои сертификаты Let Encrypt? спасибо

Ответ 1

Эти инструкции относятся ко всем сертификатам (включая сертификаты Let Encrypt). Тем не менее, заданы один или два типа Шифрование.

Конфигурация протокола NGINX SSL, приведенная ниже, даст вам следующие оценки SSL Labs. Твой выбор:

рекомендуемые

  • A+
  • Сертификат 100/100
  • Поддержка протокола 95/100
  • Обмен ключами 90/100
  • Шифратор 90/100

Идеальный, но ограничительный

  • A+
  • Сертификат 100/100
  • Поддержка протокола 100/100
  • Обмен ключами 100/100
  • Шифратор 100/100

NGINX SSL config - Извлеките нужные биты. В примечаниях разъясняется, как данная директива NGINX будет влиять на ваш рейтинг SSL Labs:

# Your listen directive should be .. listen 443 ssl http2;
# gzip off; # gzip over ssl? really?

ssl_certificate      /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key  /etc/letsencrypt/live/yourdomain.com/privkey.pem;

#################### ssllabs.com Protocol Support

ssl_protocols TLSv1.2 TLSv1.1 TLSv1; # Score=95 (recommended)
# ssl_protocols TLSv1.2; # Score=100

#################### ssllabs.com Key Exchange

# Score=90 (recommended)
ssl_dhparam          /etc/letsencrypt/live/yourdomain.com/dhparam2048.pem; # openssl dhparam -out dhparam2048.pem 2048
ssl_ecdh_curve       secp384r1; # optional

# Score=100 (must generate letsencrypt certs with flag --rsa-key-size 4096)
# ssl_dhparam        /etc/letsencrypt/live/yourdomain.com/dhparam4096.pem; # openssl dhparam -out dhparam4096.pem 4096
# ssl_ecdh_curve     secp384r1; # required

#################### ssllabs.com Cipher Strength - see https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:EC
DHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES25
6-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS; # Score=90 (recommended)
# ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL; # Score=100

#################### ssllabs.com A+ - Enable HSTS on all subdomains

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# add_header Strict-Transport-Security "max-age=0; includeSubDomains"; # Delete browser cached HSTS policy (i.e. turn HSTS off)

# THE PRELOAD DIRECTIVE WILL HAVE SEMI-PERMANENT CONSEQUENCE AND IS IRREVERSIBLE - DO NOT USE UNTIL FULLY TESTED AND YOU UNDERSTAND WHAT YOU ARE DOING!
# add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

#################### Other typical SSL settings that DO NOT effect the ssllabs.com score

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 10s;

add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Обратите внимание: вы можете получить только 100 на Key Exchange, если:

  • сертификаты Размер ключа RSA равен 4096 (для Let Encrypt использовать -rsa-key-size-4096 при создании сертификата, иначе вы застряли с размером ключа RSA, используемым, когда ваш CA сгенерировал вам сертификат) AND
  • dhparam - 4096 (openssl dhparam -out dhparam4096.pem 4096). Это занимает около 1 часа, чтобы создать, бесполезно для автоматизированного решения

РЕДАКТИРОВАТЬ

  • 2048 достаточно для обеспечения безопасности в течение следующих 40 лет. Никто никогда не треснул 1024, не говоря уже о 2048!

  • openssl dhparam -dsaparam -out dhparam4096.pem 4096... намного быстрее, чем один час (см. флаг -dsaparam), но я не знаю, следует ли его использовать или нет... не тестировал его на SSL Лабораторный тест, так как я собираюсь с 2048