Dans ce tutoriel, nous allons voir comment utiliser acme.sh pour générer et installer un certificat SSL avec Nginx et EasyEngine. L’emplacement des fichiers de configuration avec EasyEngine peut varier par rapport à une installation Nginx standard.
Installer acme.sh
wget -O - https://get.acme.sh | sh
source ~/.bashrc
Étape 1 : Générer un certificat SSL
Méthode 1 : utiliser un dossier commun pour valider le vérification acme
Il faut tout d’abord créer un fichier de configuration, par exemple dans le dossier /etc/nginx/common
nommé acme.conf avec le contenu suiviant :
location /.well-known/acme-challenge/ {
alias /var/www/html/.well-known/acme-challenge/;
allow all;
}
On définit ensuite www-data en tant que propriétaire du dossier /var/www/html pour qu’il bénéficie des droits en écriture :
mkdir -p /var/www/html/.well-known/acme-challenge
chown -R www-data:www-data /var/www/html /var/www/html/.well-known
Et la dernière étape est d’ajouter ce fichier de configuration dans nos vhosts nginx, en y ajoutant la ligne :
include common/acme.conf;
On relance nginx avec la commande service nginx reload
et on peut désormais générer notre certificat SSL avec acme.sh :
# domaine
acme.sh --issue -d example.com -w /var/www/html
# domaine + www
acme.sh --issue -d example.com -d www.example.com -w /var/www/html
# mode SAN
acme.sh --issue -d example.com -d www.example.com -d dev.example.com -w /var/www/html
# Certificat ECDSA (384 Bits) avec mode SAN
acme.sh --issue -d votredomaine.tld -d www.votredomaine.tld -d blog.votredomaine.tld -k ec-384 -w /var/www/html
Méthode 2 : utiliser l’API de Cloudflare
On configure tout d’abord acme.sh en lui fournissant nos identifiants pour l’API
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="hi@acme.sh"
Puis on peut directement générer un certificat SSL avec acme.sh
# domaine
acme.sh --issue -d example.com --dns dns_cf
# domaine + www
acme.sh --issue -d example.com --dns dns_cf -d www.example.com
# mode SAN
acme.sh --issue -d example.com --dns dns_cf -d www.example.com -d dev.example.com
# Certificats ECDSA (384 Bits) avec mode SAN
acme.sh --issue -d votredomaine.tld -d www.votredomaine.tld -d blog.votredomaine.tld -k ec-384 --dns dns_cf
Étape 2: Installer le certificat SSL avec Nginx
Ne surtout pas utiliser directement les certificats stockés dans le dossier ~/.acme.sh/, ils sont utilisés par acme.sh et leur emplacement est susceptible de changer Créer un dossier pour stocker vos certificats en production :
mkdir -p /etc/letsencrypt/live/votredomaine.tld
Puis utiliser la directive –install-cert pour copier vos certificats SSL avec acme.sh :
# pour les certificats RSA
acme.sh --install-cert -d votredomaine.tld --ecc \
--cert-file /etc/letsencrypt/live/votredomaine.tld/cert.pem \
--key-file /etc/letsencrypt/live/votredomaine.tld/key.pem \
--fullchain-file /etc/letsencrypt/live/votredomaine.tld/fullchain.pem \
--ca-file /etc/letsencrypt/live/votredomaine.tld/ca.pem \
--reloadcmd "systemctl restart nginx.service"
pour les certificats ECDSA
Il ne reste plus qu’à ajouter le certificat dans la configuration nginx de votre domaine Voici un exemple de configuration pour la nomenclature d’EasyEngine dans laquelle chaque vhost contient la ligne include /var/www/votredomaine.tld/conf/nginx/*.conf;
# /var/www/votredomaine.tld/conf/nginx/ssl.conf
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/votredomaine.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/votredomaine.tld/key.pem;
ssl_trusted_certificate /etc/letsencrypt/live/votredomaine.tld/ca.pem;
Et pour la redirection depuis http vers https, on créer un autre fichier :
# /etc/nginx/conf.d/forcessl-yourdomain-tld.conf
server {
listen 80;
listen [::]:80;
server_name www.votredomaine.tld votredomaine.tld;
return 301 https://votredomaine.tld$request_uri;
}
Renouvellement des certificats
Tous les certificats sont renouvellés automatiquement par acme.sh tous les 60 jours, en utilisant la même configuration que celle définit avec la directive –install-certs. Mais vous pouvez forcer le renouvellement en utilisant les commandes suivantes :
# certificats RSA
acme.sh --renew -d example.com --force
certificats ECDSA