web-dev-qa-db-fra.com

Comment obtenez-vous un A + avec 100 dans toutes les catégories lors du test SSL Labs avec Let's Encrypt et Nginx?

J'essaie de marquer 100 sur toutes les catégories lors du test de mes certificats SSL sur www.ssllabs.com

Cependant, j'ai du mal à obtenir A + et 100 sur tous les scores.

Des conseils sur la configuration NGINX à utiliser? Ou comment dois-je générer mes certificats Let's Encrypt? THX

23
danday74

Ces instructions s'appliquent à tous les certificats (y compris les certificats Let's Encrypt). Cependant, un ou deux conseils spécifiques à Let's Encrypt sont donnés.

La configuration SSL NGINX ci-dessous vous donnera les scores SSL Labs suivants. Tu choisis:

Recommandé

  • A +
  • Certificat 100/100
  • Prise en charge du protocole 95/100
  • Échange de clés 90/100
  • Force de chiffrement 90/100

parfait mais restrictif

  • A +
  • Certificat 100/100
  • Prise en charge du protocole 100/100
  • Échange de clés 100/100
  • Force de chiffrement 100/100

Configuration SSL NGINX - Extrayez les bits que vous voulez. Les notes expliquent comment une directive NGINX donnée affectera votre score 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;

Remarque, vous ne pouvez obtenir 100 sur Key Exchange que si:

  • certificats la taille de la clé RSA est 4096 (pour Let's Encrypt, utilisez --rsa-key-size 4096 lors de la génération du certificat, sinon vous êtes coincé avec la taille de la clé RSA utilisée lorsque votre autorité de certification a généré le certificat pour vous) ET
  • dhparam est 4096 (openssl dhparam -out dhparam4096.pem 4096) - Cela prend environ 1 heure à générer, inutile pour une solution automatisée

MODIFIER

  • 2048, c'est assez de sécurité pour les 40 prochaines années. Personne n'a jamais craqué un 1024, encore moins un 2048!

  • openssl dhparam -dsaparam -out dhparam4096.pem 4096 ... est beaucoup plus rapide qu'une heure (voir l'indicateur -dsaparam) mais je ne sais pas si vous devez l'utiliser ou non ... je ne l'ai pas testé sur SSL Labs test depuis Je vais avec 2048

51
danday74