Générer un certificat auto-signé robuste : RSA et DH 4096 bits et SHA-2 512 bits
Si vous hébergez sur votre serveur web des services personnels type ownCloud, lecteur RSS, webmail, panel d'administration, etc, il peut être une bonne idée d'y accéder de manière chiffrée, c'est à dire en HTTPS. Je dirais même que cela est indispensable lorsque des données personnelles transitent.
Malheureusement, les certificats SSL/TLS sont payants (d'une dizaine d'euros à plusieurs centaines), enfin pour le moment, puisque Let's Encrypt arrive bientôt. ;)
Heureusement, on peut générer un certificat et le signer nous-même au lieu de le faire signer par une autorité de certification reconnue. Cela entraînera une alerte de sécurité dans les navigateurs, cette méthode n'est donc à utiliser que sur un site ou service accessible que de vous (ou petit groupe de personne).
Nous allons donc générer un certificat depuis une machine GNU/Linux, ce couple certificat/clé visant à être utilisé avec Nginx, Apache ou autre serveur web.
Génération de la clé
openssl genrsa -out key.pem 4096
La clé s'appellera key.pem, et sera généré sur 4096 bits avec RSA, un algorithme de chiffrement asymétrique.
Génération du certificat
openssl req -new -x509 -sha512 -days 3650 -key key.pem -out cert.pem
On crée le certificat cert.pem, auto-signé (-x509), hashé sur 512 bits avec SHA-2, et valable 10 ans.
Si vous souhaitez utiliser ce certificat pour des sous-domaine il faut rentrer quelque chose du type *.angrisan.fr dans le champ Common Name.
Génération du paramètre Diffie-Hellman
Pour améliorer la sécurité de l'échange chiffré, vous pouvez dire au serveur web d'utiliser un autre dhparam, comme par exemple celui que nous allons générer. Ce paramètre n'a pas de rapport direct avec le certificat, mais il est important dans le paramétrage de votre serveur web.
openssl dhparam 4096 -out dh4096.pem
Cette commande génère un paramètre DH de 4096 bits, contre 1024 de base.
N'oubliez pas de réduire au maximum les permissions de ces fichiers, avec un chmod 600 par exemple.
Voilà, nous avons généré les 3 fichiers pour notre implémentation de HTTPS.
Dans un prochain article, je parlerais des bons paramètres à avoir sur Nginx afin d'assurer une sécurité maximale.
L'article Générer un certificat auto-signé robuste : RSA et DH 4096 bits et SHA-2 512 bits a été publié sur Angristan