Acme.sh - Certificats Let’s Encrypt
Pour interagir avec l’API de Let’s Encrypt et obtenir un certificat, un logiciel appelé « client ACME » est nécessaire.
Acme.sh (crontab)
Let’s Encrypt délivre des certificats par le biais d’une API automatisée basée sur le protocole ACME.
Certificats Let’s Encrypt

Automatiser la génération et le renouvellement des certificats de chiffrement avec acme.sh
Les dossiers
1
2
sudo mkdir -p /etc/ssl/private/
sudo chown $USER -R /etc/ssl/private/
Prérequis:
cron(sudo apt install cron) Non installé par défaut sur debian 13
Sur Debian 13, cron s’installe avecexim4, ce qui pose problème si vous voulez utiliser le port 25 avec un autre serveur de messagerie comme maddy ou autre
Installer acme.sh
1
2
3
4
# Git
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install
déconnexion et reconnexion utilisateur pour la prise en charge
Vérifier : acme.sh --version
1
2
https://github.com/acmesh-official/acme.sh
v3.1.2
La création des certificats pour le domaine rnmkcy.eu
Exporter les clés OVH
1
2
export OVH_AK="xxxxxxxxxxxxxxxxxx"
export OVH_AS="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
exécuter le script
1
2
3
4
acme.sh --dns dns_ovh --server letsencrypt \
--issue --keylength ec-384 \
-d 'rnmkcy.eu' \
-d '*.rnmkcy.eu'
Premier passage, il faut ouvrir le lien pour valider la DNS OVH
Puis exécuter une seconde fois le script
1
2
3
4
acme.sh --dns dns_ovh --server letsencrypt \
--issue --keylength ec-384 \
-d 'rnmkcy.eu' \
-d '*.rnmkcy.eu'
A la fin de l’exécution du script
1
2
3
4
[lun. 03 nov. 2025 11:27:44 CET] Your cert is in: /home/yick/.acme.sh/rnmkcy.eu_ecc/rnmkcy.eu.cer
[lun. 03 nov. 2025 11:27:44 CET] Your cert key is in: /home/yick/.acme.sh/rnmkcy.eu_ecc/rnmkcy.eu.key
[lun. 03 nov. 2025 11:27:44 CET] The intermediate CA cert is in: /home/yick/.acme.sh/rnmkcy.eu_ecc/ca.cer
[lun. 03 nov. 2025 11:27:44 CET] And the full-chain cert is in: /home/yick/.acme.sh/rnmkcy.eu_ecc/fullchain.cer
L’installation dans les dossiers
1
2
3
4
acme.sh --install-cert -d rnmkcy.eu --ecc \
--key-file /etc/ssl/private/rnmkcy.eu-key.pem \
--fullchain-file /etc/ssl/private/rnmkcy.eu-fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
Avec le résultat suivant
1
2
3
4
[lun. 03 nov. 2025 11:32:45 CET] Installing key to: /etc/ssl/private/rnmkcy.eu-key.pem
[lun. 03 nov. 2025 11:32:45 CET] Installing full chain to: /etc/ssl/private/rnmkcy.eu-fullchain.pem
[lun. 03 nov. 2025 11:32:45 CET] Running reload cmd: sudo systemctl reload nginx.service
[lun. 03 nov. 2025 11:32:45 CET] Reload successful
Renouvellement automatique
Le cron job
1
11 4 * * * "/home/yick/.acme.sh"/acme.sh --cron --home "/home/yick/.acme.sh" > /dev/null
Lors de l’exécution
--cron, tout nouveau certificat sera automatiquement installé, et lereloadcmdsera exécuté.
--cron installera automatiquement les certificats sur les informations de renouvellement réussies.
Il semble se baser sur la dernière fois que vous avez exécuté --install-cert, alors assurez-vous que vous exécutez manuellement au moins une fois pour être sûr que cron job fonctionnera comme prévu.
ACME.sh (systemd timer)
Les dossiers
1
2
sudo mkdir -p /etc/ssl/private/
sudo chown $USER -R /etc/ssl/private/
Création des certificats SSL Let’s encrypt via Acme
1
2
3
4
5
# Git
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
# Installation sans crontab --force
./acme.sh --install --force
Se reconnecter pour prise en charge
Les clé OVH
1
2
export OVH_AK="wxxxxxxxxxxxxxxxx"
export OVH_AS="yxxxxxxxxxxxxxxxxxxxxxxx"
Créer les certificats
1
acme.sh --dns dns_ovh --server letsencrypt --issue --keylength ec-384 -d 'xoyize.xyz' -d '*.xoyize.xyz'
Ouvrir le lien généré pour valider l’authentification OVH
puis relancer la commande
1
acme.sh --dns dns_ovh --server letsencrypt --issue --keylength ec-384 -d 'xoyize.xyz' -d '*.xoyize.xyz'
Les certificats sont générés dans $HOME/.acme.sh/xoyize.xyz_ecc/
Installation des certificats
Si vous utilisez acme.sh pour gérer vos certificats, vous pouvez simplement exécuter
1
2
3
acme.sh --ecc --install-cert -d 'xoyize.xyz' \
--key-file /etc/ssl/private/privkey.pem \
--fullchain-file /etc/ssl/private/fullchain.pem
Mise à jour des certificats
Le VPS n’a pas crontab installé, on va utiliser systemd timer
Le fichier de service
1
sudo nano /etc/systemd/system/update-certificat.service
contenu
1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Renouvellement certificat ACME
After=network-online.target
Wants=network-online.target
ConditionFileIsExecutable=/home/usxb/.acme.sh/acme.sh
[Service]
Type=oneshot
User=usxb
# Renew all certificates managed by acme.sh
ExecStart=/home/usxb/.acme.sh/acme.sh --cron --home /home/usxb/.acme.sh
Le fichier minuteur
1
sudo nano /etc/systemd/system/update-certificat.timer
Exécution service tous les jours (lundi au dimanche) à 1h20
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Renouvellement certificat ACME
[Timer]
OnCalendar=Mon..Sun *-*-* 1:20:00
# Spread the start time by up to 1 hour (reduces CA server load)
AccuracySec=1us
RandomizedDelaySec=1h
# Run at boot if the scheduled time was missed (e.g., system was off)
Persistent=true
[Install]
WantedBy=timers.target
Activer le minuteur
1
sudo systemctl enable update-certificat.timer --now
Vérification
1
systemctl list-timers
Résultat
1
2
NEXT LEFT LAST PASSED UNIT ACTIVATES
Thu 2026-07-30 01:22:35 CEST 6h - - update-certificat.timer update-certificat.service
Tester la mise à jour des certificats
On peut forcer (--force) la procédure et voir le résultat
1
/home/yann/.acme.sh/acme.sh --force --cron --home /home/usxb/.acme.sh

