Aujourd’hui, je vous montre comment j’ai mis en place un certificat ECDSA avec Let’s Encrypt, que j’utilise depuis l’année dernière.
Let’s Encrypt a annoncé il y a quelques mois qu’il sera possible au courant de l’année 2018 de créer des certificats ECDSA, pour plus de sécurité et de rapidité.
L’algorithme ECDSA
L’algorithme ECDSA (abbréviation d’Elliptic Curve Digital Signature Algorithm) a été proposé pour la première fois par Scott Vanstone en 1992.
Les signatures basées sur l’algorithme d’ECS, l’ancêtre de ECDSA, présente plusieurs avantages majeurs par rapport aux algorithmes RSA : leur taille est plus réduite et ils sont créés bien plus rapidement.
La vérification basée sur les algorithmes ECC est extrêmement rapide également.
Les avantages d’utiliser ECDSA par rapport à RSA
L’utilisation d’ECDSA pour les signatures numériques présente d’importants avantages, dont notamment:
- un niveau de sécurité élevé,
- pas de problèmes avec la performance d’applications,
- un processus rapide de signature et de vérification (40% plus rapide que RSA),
- adapté à la montée en puissance de la sécurité des applications,
- support pour les pré-requis modernes de l’industrie
Une sécurité et une rapidité accrues donc, avec un usage de données réduit. Parfait.
Création d’un certificat ECDSA avec Let’s Encrypt
1. On crée les nouveaux répertoires pour notre certificat ECDSA:
mkdir -p /etc/letsencrypt/live-ecdsa/example.com/letmp
mkdir -p /etc/letsencrypt/live-ecdsa/example.com/backup
cd /etc/letsencrypt/live-ecdsa/example.com
2. On crée une clé privée avec l’algorithme secp384r1:
openssl ecparam -genkey -name secp384r1 > privkey-p384.pem
Code language: CSS (css)
3. On crée un Certificate Signing Request (CSR):
openssl req -new -sha256 -key privkey-p384.pem -subj "/CN=example.com" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:example.com,DNS:www.example.com,DNS:mail.example.com,DNS:static.example.com")) -outform der -out csr-p384.der
Code language: JavaScript (javascript)
4. On demande la création du certificat chez Let’s Encrypt:
cd letmp
certbot certonly -a webroot --webroot-path /home/public_html -d example.com -d www.example.com -d mail.example.com -d static.example.com --csr /etc/letsencrypt/live-ecdsa/example.com/csr-p384.der --renew-by-default --agree-tos --cert-path /etc/letsencrypt/live-ecdsa/example.com/cert_ecdsa.pem --fullchain-path /etc/letsencrypt/live-ecdsa/example.com/fullchain_ecdsa.pem --chain-path /etc/letsencrypt/live-ecdsa/example.com/chain_ecdsa.pem
Code language: JavaScript (javascript)
5. Il reste à éditer la configuration de votre serveur de fichier. Sous NginX:
nano /etc/nginx/sites-available/example.com
ajoutez-y le nouveau certificat:
# Let's Encrypt : ECDSA CERT
ssl_certificate /etc/letsencrypt/live-ecdsa/example.com/fullchain_ecdsa.pem;
ssl_certificate_key /etc/letsencrypt/live-ecdsa/example.com/privkey-p384.pem;
Code language: PHP (php)
et on redémarre NginX:
service nginx restart
Voilà, vous venez de mettre en place votre certificat ECDSA. Voyons maintenant comment cela se passe pour la mise à jour.