La configuration d’un serveur SSL/TLS peut s’avérer compliqué. Il y a plusieurs paramètres à prendre en compte :
- Le protocole SSL/TLS lui-même, qui existe en 5 versions (SSLv2, SSLv3, TLSv1, TLSv1.1 et TLSv1.2)
- L’algorithme asymétrique utilisé. On en compte principalement 2 actuellement : RSA (basé sur de la factorisation en nombres premiers) et ECDSA (basé sur la géométrie des courbes elliptiques)
- L’algorithme symétrique utilisé. Ils sont déjà bien plus nombreux, tels que AES, Camellia, SEED, 3DES ou RC4.
- Le mécanisme de protection des données, pour éviter qu’un assaillant puisse modifier les messages chiffrés. On utilise pour cela HMAC ou AEAD.
- La présence ou non de confidentialité persistante ou PFS (Perfect Forward Secrecy) en anglais.
Il est facile de faire des erreurs de configuration qui affaibliront le chiffrement. Pour s’en prémunir, il existe de nombreux outils pour vérifier votre implémentation TLS.
J’utilise principalement les deux outils suivants :
- Le plus connu : Qualys SSL Server Test Un peu trop accommodant sur certains tests (il est possible de décrocher un A+ avec du 3DES parmi les suites de chiffrement).
- Moins connu et plus exigeant pour décrocher un “A” : CryptCheck
Une fois les points de faiblesse identifiés, il est temps de corriger.
Pour la configuration de vos serveurs Apache / Nginx, il existe de nombreux sites qui proposent des configurations de la moins à la plus sécurisée selon votre niveau de paranoïa et le pourcentage de navigateurs que vous souhaitez toucher. Par exemple :
Pour la génération de vos certificats, je ne peux que vous conseiller Let’s Encrypt, une autorité de certification gratuite, automatisée, ouverte à tous et parfaitement reconnue dans les navigateurs du marché. Lancé en décembre 2015 en béta publique, Let’s Encrypt avait délivré en septembre 2016 plus de 10 millions de certificats.
Et puisqu’on est en début d’année, voici donc les bonnes résolutions cryptographiques à souhaiter pour internet en 2017 :
- Du TLS 1.2 pour tout le monde
- Des certificat RSA de 4096 bits
- Des échanges de clé Diffie-Hellmann pour PFS (Perfect Forward Secrecy)
- … et SSLv3 définitivement aux oubliettes.
Pour aller plus loin : CryptCheck, vérifiez vos implémentations de TLS