====== 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)]]