Espace Client

 Espace Client

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

installer acme.sh

Sections

    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