SSL : une configuration correcte

 

L'objectif de cet article est de décrire comment configurer Apache correctement pour obtenir un bon niveau de sécurité et pour, en utilisant un certificat de type Gandi, celui-ci soit reconnu sur une grande partie des terminaux, dont Android.

Objectif 1 : A+ aux tests Qualys

Qualys est une société spécialisée en sécurité et elle met à disposition des outils d'analyse de sécurité dont un test d'analyse de la qualité de la sécurité SSL d'un site WEB.

L'url du testeur est la suivante : https://www.ssllabs.com/ssltest

Voici la configuration de mon vhost Apache 2.4 sous Debian 8

SSLEngine on
  SSLCertificateFile      /var/www/site1/ssl/fichier.crt
  SSLCertificateKeyFile   /var/www/site1/ssl/fichier.key
  SSLCertificateChainFile    /var/www/site1/ssl/GandiStandardSSLCA2.pem
 

  # modern configuration, tweak to your needs
  SSLProtocol             all -SSLv3 -TLSv1
  SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
  SSLHonorCipherOrder     on
  SSLCompression          off

  # OCSP Stapling, only in httpd 2.3.3 and later
  SSLUseStapling          on
  SSLStaplingResponderTimeout 5
  SSLStaplingReturnResponderErrors off

  # HSTS (mod_headers is required) (15768000 seconds = 6 months)
  Header always set Strict-Transport-Security "max-age=15768000"

Pour d'autres versions d'Apache ou Nginx il existe un générateur pour trouver la bonne configuration :

https://mozilla.github.io/server-side-tls/ssl-config-generator/

Voici ce que ça donne sur le test :

qualys_ssl

 

Objectif 2 : faire reconnaître le certificat sous Android

Plusieurs fois avec le certificat SSL de Gandi je me suis retrouvé avec des erreurs de ce type lors de la configuration de la synchronisation caldav sous Android :

android_agenda_09Pourtant le certificat devrait être reconnu sans problèmes. Après quelques recheche il s'avère que l'intermédiaire que j'avais récupéré n'était pas complet. Il faut que l'intermédiaire contienne toute la chaîne de certification pour qu'il soit validé complètement.

Vérifier le fichier GandiStandardSSLCA2.pem, il doit contenir deux blocs -----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

Et avec la configuration précédente le certificat devrait être reconnu sans problèmes.

 

Voilà de quoi satisfaire un bon fonctionnement de nos sites https.