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.
Mettre à jour un certificat ECDSA avec Let’s Encrypt
Votre nouveau certificat ECDSA, comme tous les certificats standard chez Let’s Encrypt, expire dans 90 jours.
1. On se place dans notre répertoire de travail:
cd /etc/letsencrypt/live-ecdsa/example.com
Contenu du répertoire:
drwxr-xr-x 2 root root 4096 Dec 2 10:42 backup
drwxr-xr-x 2 4096 Sep 17 10:53 letmp
-rw-r--r-- 1 1631 Dec 2 10:43 cert_ecdsa.pem
-rw-r--r-- 1 1647 Dec 2 10:43 chain_ecdsa.pem
-rw-r--r-- 1 1647 Sep 17 10:48 chain.pem
-rw-r--r-- 1 376 Jul 3 16:20 csr-p384.der
-rw-r--r-- 1 3278 Dec 2 10:43 fullchain_ecdsa.pem
-rw-r--r-- 1 359 Jul 3 16:12 privkey-p384.pem
Code language: CSS (css)
2. On déplace les certificats existants dans le dossier backup
:
mv cert_ecdsa.pem backup/$(date +%Y-%m-%d)_cert_ecdsa.pem
mv fullchain_ecdsa.pem backup/$(date +%Y-%m-%d)_fullchain_ecdsa.pem
Code language: JavaScript (javascript)
3. On se déplace dans le répertoire letmp
et on lance la nouvelle génération du certificat:
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)
Il ne reste plus qu’à relancer NginX:
service nginx restart
Résultat:
Et voilà, un certificat tout neuf, en full Perfect Forward Secrecy. Un petit cron à tout cela et le certificat se renouvelle automatiquement.
Synopsis » Monter un serveur dédié de A à Z
- Serveur dédié : installation d’Apache, PHP, MySQL et Webmin
- Serveur dédié : créer la base de données MySQL et importer WordPress
- Serveur dédié : créer et activer un Virtual Host sous Apache
- Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur
- Serveur dédié : sécurisation des services avec iptables et fail2ban
- Serveur dédié : sécurisation de la couche TCP/IP
- Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels
- Serveur dédié : sécuriser Apache 2 avec ModSecurity
- Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande
- Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances
- Serveur dédié : afficher la véritable IP derrière un reverse-proxy comme Varnish
- Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les plugins et les thèmes
- Serveur dédié : installer la dernière version d’APC par SVN
- Serveur dédié : analyse des performances du serveur
- Serveur dédié : mettre à jour le noyau Debian de la Kimsufi
- Serveur dédié : sauvegarde automatique des fichiers avec Backup Manager sur le serveur de sauvegarde OVH
- Serveur dédié : configurer la limite mémoire pour PHP et Suhosin
- Bash : supprimer tous les fichiers et sous-répertoires d’un répertoire
- Serveur dédié : impossible de se connecter à un port distant
- Rsync: rapatrier les fichiers du serveur à la maison
- Bash : réparer les tables MySQL en cas de crash
- Serveur dédié : création d’une seedbox avec Transmission
- Serveur dédié : des paquets LAMP à jour sous Debian
- Serveur dédié : mise à jour vers Debian 7 Wheezy
- Serveur dédié : activer X11 forwarding pour SSH
- Serveur dédié : optimiser toutes les images JPG et PNG avec OptiPNG et JpegOptim
- Postfix : résoudre l’erreur “fatal: www-data(33): message file too big”
- Serveur dédié : mise en place de l’IPv6
- WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod
- WordPress : héberger les images sur un sous-domaine
- Serveur dédié : ajouter l’authentification SPF, Sender-ID et DKIM à Postfix et Bind9 avec opendkim
- Apache : lorsque le domaine seul (sans WWW) renvoie une erreur 403
- Serveur dédié : sécuriser Apache avec HTTPS (HTTP avec la couche TLS/SSL) en Perfect Forward Secrecy
- Serveur dédié : passer WordPress en HTTPS (TLS/SSL)
- Serveur dédié : configurer Webmin en TLS avec un certificat SSL
- Serveur dédié : configurer Transmission pour accéder au WebUI via TLS-SSL
- Serveur dédié : installer et configurer Varnish 4
- Serveur dédié : passage au mod FastCGI et PHP-FPM avec Apache MPM Worker
- Récupérer un serveur Kimsufi après un plantage de kernel avec le mode rescue OVH
- Serveur dédié : configurer Postfix et Courier pour utiliser TLS-SSL en Perfect Forward Secrecy
- Serveur dédié : retirer Varnish, devenu inutile avec HTTPS
- Serveur dédié : installer la dernière version d’OpenSSL sous Debian
- Serveur dédié : activer l’IP canonique du serveur sous Apache
- Serveur dédié : mise à jour vers PHP 5.6
- MySQL : convertir les tables MyISAM au format InnoDB
- Serveur dédié : optimiser toutes les images GIF avec GIFsicle
- Serveur dédié : migration de MySQL vers MariaDB
- BASH : lister, bloquer et débloquer des adresses IP avec iptables
- Serveur dédié : produire une meilleure réserve d’entropie avec haveged
- Serveur dédié : mettre en place DNSSEC pour sécuriser les DNS du domaine
- Serveur dédié : mise en place du protocole DANE
- 8 règles d’or pour bien déployer DNSSEC et DANE
- Serveur dédié : installer PHP7 FPM avec FastCGI sous Debian
- Serveur dédié : optimiser la couche TCP
- Fail2Ban: protéger Postfix contre les attaques DoS de types AUTH, UNKNOWN et EHLO
- Serveur dédié : mettre à jour Apache pour HTTP/2
- Serveur dédié : ajouter le domaine à la liste HSTS preload
- Serveur dédié : ajouter l’authentification DMARC à Postfix et BIND
- Serveur dédié : à la recherche de l’inode perdue ou comment résoudre le problème “no space left on device”
- Serveur dédié : installer NginX avec support HTTP2 et certificat SSL, PHP, MariaDB sous Debian
Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.