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/;
    }
    

    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 :

    chown -R www-data:www-data /var/www/html
    

    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 --keylength 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 --keylength 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/nginx/acme.sh/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 \
    --cert-file /etc/nginx/acme.sh/votredomaine.tld/cert.pem \
    --key-file /etc/nginx/acme.sh/votredomaine.tld/key.pem \
    --fullchain-file /etc/nginx/acme.sh/votredomaine.tld/fullchain.pem \
    --reloadcmd "systemctl reload nginx.service"
    
    # pour les certificats ECDSA 
    acme.sh --install-cert -d votredomaine.tld --ecc \
    --cert-file /etc/nginx/acme.sh/votredomaine.tld/cert.pem \
    --key-file /etc/nginx/acme.sh/votredomaine.tld/key.pem \
    --fullchain-file /etc/nginx/acme.sh/votredomaine.tld/fullchain.pem \
    --reloadcmd "systemctl reload nginx.service"

    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 on;
        ssl_certificate /etc/nginx/acme.sh/votredomaine.tld/fullchain.pem;
        ssl_certificate_key     /etc/nginx/acme.sh/votredomaine.tld/key.pem;
        ssl_trusted_certificate /etc/nginx/acme.sh/votredomaine.tld/cert.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 
    acme.sh --renew -d example.com --force --ecc

    in EasyEngine

    Feedback