====== Acme.sh ====== Cas pratique pour un certificat avec un wildcard et donc par la méthode DNS. ===== Installation ===== On installe acme.sh : $ sudo apt install socat $ curl https://get.acme.sh | sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 705 0 705 0 0 2439 0 --:--:-- --:--:-- --:--:-- 2447 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 186k 100 186k 0 0 1513k 0 --:--:-- --:--:-- --:--:-- 1500k [jeudi 12 septembre 2019, 19:39:53 (UTC+0000)] Installing from online archive. [jeudi 12 septembre 2019, 19:39:53 (UTC+0000)] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz [jeudi 12 septembre 2019, 19:39:54 (UTC+0000)] Extracting master.tar.gz [jeudi 12 septembre 2019, 19:39:54 (UTC+0000)] Installing to /home/simon/.acme.sh [jeudi 12 septembre 2019, 19:39:54 (UTC+0000)] Installed to /home/simon/.acme.sh/acme.sh [jeudi 12 septembre 2019, 19:39:55 (UTC+0000)] Installing alias to '/home/simon/.bashrc' [jeudi 12 septembre 2019, 19:39:55 (UTC+0000)] OK, Close and reopen your terminal to start using acme.sh [jeudi 12 septembre 2019, 19:39:55 (UTC+0000)] Installing cron job no crontab for simon no crontab for simon [jeudi 12 septembre 2019, 19:39:55 (UTC+0000)] Good, bash is found, so change the shebang to use bash as preferred. [jeudi 12 septembre 2019, 19:39:57 (UTC+0000)] OK [jeudi 12 septembre 2019, 19:39:57 (UTC+0000)] Install success! simon@Quercus:~$ source ~/.bashrc ===== Utilisation avec les DNS d'OVH ===== On se rend chez OVH pour créer une application : https://eu.api.ovh.com/createApp/ On récupère la "clé" et le "secret", qu'on met dans des variables d'environnement. On lance ensuite la commande pour générer le certificat : $ export OVH_AK="bgl2XXXXXXXXXX" $ export OVH_AS="4xNTBXXXXXXXXXXXXXXX" $ acme.sh --issue -d artanux.be -d '*.artanux.be' --dns dns_ovh --keylength ec-384 [jeudi 12 septembre 2019, 19:43:13 (UTC+0000)] Multi domain='DNS:artanux.be,DNS:*.artanux.be' [jeudi 12 septembre 2019, 19:43:13 (UTC+0000)] Getting domain auth token for each domain [jeudi 12 septembre 2019, 19:43:16 (UTC+0000)] Getting webroot for domain='artanux.be' [jeudi 12 septembre 2019, 19:43:16 (UTC+0000)] Getting webroot for domain='*.artanux.be' [jeudi 12 septembre 2019, 19:43:16 (UTC+0000)] Adding txt value: Nj7HF3ggJ1XXXXXXXXXXXXXXXXXXXXXXXXXXXXX for domain: _acme-challenge.artanux.be [jeudi 12 septembre 2019, 19:43:16 (UTC+0000)] Using OVH endpoint: ovh-eu [jeudi 12 septembre 2019, 19:43:16 (UTC+0000)] OVH consumer key is empty, Let's get one: [jeudi 12 septembre 2019, 19:43:16 (UTC+0000)] Please open this link to do authentication: https://eu.api.ovh.com/auth/?credentialToken=3IYjH0eGcoevXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [jeudi 12 septembre 2019, 19:43:16 (UTC+0000)] Here is a guide for you: https://github.com/Neilpang/acme.sh/wiki/How-to-use-OVH-domain-api [jeudi 12 septembre 2019, 19:43:17 (UTC+0000)] Please retry after the authentication is done. [jeudi 12 septembre 2019, 19:43:17 (UTC+0000)] Error add txt for domain:_acme-challenge.artanux.be [jeudi 12 septembre 2019, 19:43:17 (UTC+0000)] Please add '--debug' or '--log' to check more details. [jeudi 12 septembre 2019, 19:43:17 (UTC+0000)] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh On se rend sur le lien donné par la commande pour valider la demande : https://eu.api.ovh.com/auth/?credentialToken=3IYjH0eGcoevXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX $ acme.sh --issue -d artanux.be -d '*.artanux.be' --dns dns_ovh --keylength ec-384 [jeudi 12 septembre 2019, 19:44:08 (UTC+0000)] Multi domain='DNS:artanux.be,DNS:*.artanux.be' [jeudi 12 septembre 2019, 19:44:08 (UTC+0000)] Getting domain auth token for each domain [jeudi 12 septembre 2019, 19:44:10 (UTC+0000)] Getting webroot for domain='artanux.be' [jeudi 12 septembre 2019, 19:44:10 (UTC+0000)] Getting webroot for domain='*.artanux.be' [jeudi 12 septembre 2019, 19:44:11 (UTC+0000)] Adding txt value: Yt-kUDCrhXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX for domain: _acme-challenge.artanux.be [jeudi 12 septembre 2019, 19:44:11 (UTC+0000)] Using OVH endpoint: ovh-eu [jeudi 12 septembre 2019, 19:44:11 (UTC+0000)] Checking authentication [jeudi 12 septembre 2019, 19:44:11 (UTC+0000)] Consumer key is ok. [jeudi 12 septembre 2019, 19:44:12 (UTC+0000)] Adding record [jeudi 12 septembre 2019, 19:44:13 (UTC+0000)] Added, sleep 10 seconds. [jeudi 12 septembre 2019, 19:44:25 (UTC+0000)] The txt record is added: Success. [jeudi 12 septembre 2019, 19:44:25 (UTC+0000)] Adding txt value: EXnn3CW2CXXXXXXXXXXXXXXXXXXXXXXX for domain: _acme-challenge.artanux.be [jeudi 12 septembre 2019, 19:44:25 (UTC+0000)] Using OVH endpoint: ovh-eu [jeudi 12 septembre 2019, 19:44:25 (UTC+0000)] Checking authentication [jeudi 12 septembre 2019, 19:44:25 (UTC+0000)] Consumer key is ok. [jeudi 12 septembre 2019, 19:44:26 (UTC+0000)] Adding record [jeudi 12 septembre 2019, 19:44:28 (UTC+0000)] Added, sleep 10 seconds. [jeudi 12 septembre 2019, 19:44:39 (UTC+0000)] The txt record is added: Success. [jeudi 12 septembre 2019, 19:44:39 (UTC+0000)] Let's check each dns records now. Sleep 20 seconds first. [jeudi 12 septembre 2019, 19:45:01 (UTC+0000)] Checking artanux.be for _acme-challenge.artanux.be [jeudi 12 septembre 2019, 19:45:01 (UTC+0000)] Domain artanux.be '_acme-challenge.artanux.be' success. [jeudi 12 septembre 2019, 19:45:01 (UTC+0000)] Checking artanux.be for _acme-challenge.artanux.be [jeudi 12 septembre 2019, 19:45:01 (UTC+0000)] Domain artanux.be '_acme-challenge.artanux.be' success. [jeudi 12 septembre 2019, 19:45:01 (UTC+0000)] All success, let's return [jeudi 12 septembre 2019, 19:45:01 (UTC+0000)] Verifying: artanux.be [jeudi 12 septembre 2019, 19:45:05 (UTC+0000)] Success [jeudi 12 septembre 2019, 19:45:05 (UTC+0000)] Verifying: *.artanux.be [jeudi 12 septembre 2019, 19:45:08 (UTC+0000)] Success [jeudi 12 septembre 2019, 19:45:08 (UTC+0000)] Removing DNS records. [jeudi 12 septembre 2019, 19:45:08 (UTC+0000)] Removing txt: Yt-kUDCrhXXXXXXXXXXXXXXXXXXXXXXXXX for domain: _acme-challenge.artanux.be [jeudi 12 septembre 2019, 19:45:09 (UTC+0000)] Using OVH endpoint: ovh-eu [jeudi 12 septembre 2019, 19:45:09 (UTC+0000)] Checking authentication [jeudi 12 septembre 2019, 19:45:10 (UTC+0000)] Consumer key is ok. [jeudi 12 septembre 2019, 19:45:12 (UTC+0000)] Removed: Success [jeudi 12 septembre 2019, 19:45:12 (UTC+0000)] Removing txt: EXnn3CWXXXXXXXXXXXXXXXXXXXXXXXXXX for domain: _acme-challenge.artanux.be [jeudi 12 septembre 2019, 19:45:13 (UTC+0000)] Using OVH endpoint: ovh-eu [jeudi 12 septembre 2019, 19:45:13 (UTC+0000)] Checking authentication [jeudi 12 septembre 2019, 19:45:13 (UTC+0000)] Consumer key is ok. [jeudi 12 septembre 2019, 19:45:16 (UTC+0000)] Removed: Success [jeudi 12 septembre 2019, 19:45:16 (UTC+0000)] Verify finished, start to sign. [jeudi 12 septembre 2019, 19:45:16 (UTC+0000)] Lets finalize the order, Le_OrderFinalize: https://acme-v02.api.letsencrypt.org/acme/finalize/6583XXXXXXXXXXXXXXXX [jeudi 12 septembre 2019, 19:45:18 (UTC+0000)] Download cert, Le_LinkCert: https://acme-v02.api.letsencrypt.org/acme/cert/034XXXXXXXXXXXX [jeudi 12 septembre 2019, 19:45:19 (UTC+0000)] Cert success. -----BEGIN CERTIFICATE----- MIIErTC... -----END CERTIFICATE----- [jeudi 12 septembre 2019, 19:45:19 (UTC+0000)] Your cert is in /home/simon/.acme.sh/artanux.be_ecc/artanux.be.cer [jeudi 12 septembre 2019, 19:45:19 (UTC+0000)] Your cert key is in /home/simon/.acme.sh/artanux.be_ecc/artanux.be.key [jeudi 12 septembre 2019, 19:45:19 (UTC+0000)] The intermediate CA cert is in /home/simon/.acme.sh/artanux.be_ecc/ca.cer [jeudi 12 septembre 2019, 19:45:19 (UTC+0000)] And the full chain certs is there: /home/simon/.acme.sh/artanux.be_ecc/fullchain.cer Et on "installe" les certificats : $ sudo mkdir /etc/ssl/artanux.be $ sudo chown -R simon:simon /etc/ssl/artanux.be/ Pour permettre à l'utilisateur courant de relancer le service nginx : $ sudo visudo (...) %simon ALL= NOPASSWD: /bin/systemctl start nginx %simon ALL= NOPASSWD: /bin/systemctl stop nginx %simon ALL= NOPASSWD: /bin/systemctl restart nginx %simon ALL= NOPASSWD: /bin/systemctl reload nginx (...) Maintenant on peut "installer" les certificats dans le dossier voulu où nginx ira les chercher : $ acme.sh --install-cert -d artanux.be --ecc --keypath /etc/ssl/artanux.be/privkey.pem --fullchainpath /etc/ssl/artanux.be/fullchain.pem --reloadcmd "sudo systemctl reload nginx" [lundi 7 octobre 2019, 20:45:41 (UTC+0000)] Installing key to:/etc/ssl/artanux.be/privkey.pem [lundi 7 octobre 2019, 20:45:41 (UTC+0000)] Installing full chain to:/etc/ssl/artanux.be/fullchain.pem [lundi 7 octobre 2019, 20:45:41 (UTC+0000)] Run reload cmd: sudo systemctl reload nginx [lundi 7 octobre 2019, 20:45:42 (UTC+0000)] Reload success ===== Upgrade acme.sh ===== # acme.sh --upgrade [samedi 15 février 2020, 14:21:45 (UTC+0100)] Installing from online archive. [samedi 15 février 2020, 14:21:45 (UTC+0100)] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz [samedi 15 février 2020, 14:21:47 (UTC+0100)] Extracting master.tar.gz [samedi 15 février 2020, 14:21:47 (UTC+0100)] Installing to /root/.acme.sh [samedi 15 février 2020, 14:21:47 (UTC+0100)] Installed to /root/.acme.sh/acme.sh [samedi 15 février 2020, 14:21:47 (UTC+0100)] Good, bash is found, so change the shebang to use bash as preferred. [samedi 15 février 2020, 14:21:50 (UTC+0100)] OK [samedi 15 février 2020, 14:21:50 (UTC+0100)] Install success! [samedi 15 février 2020, 14:21:50 (UTC+0100)] Upgrade success! Activer l'upgrade automatique : # acme.sh --upgrade --auto-upgrade ===== Sources ===== * [[https://blog.fgribreau.com/2017/03/how-to-issue-and-renew-lets-encrypt.html|how to issue and renew let's encrypt (fgribreau.com)]]