Espace Client

 Espace Client

Installer un certificat SSL Let’s Encrypt avec acme.sh

installer acme.sh

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

in Nginx

Feedback