Un client de protocole ACME écrit uniquement en langage Shell (shell Unix).
Implémentation complète du protocole ACME.
Prise en charge des certificats ECDSA
Prise en charge des certificats SAN et génériques
Simple, puissant et très facile à utiliser. Vous n'avez besoin que de 3 minutes pour l'apprendre.
Compatible Bash, Dash et Sh.
Purement écrit en Shell sans dépendance sur python.
Un seul script pour émettre, renouveler et installer automatiquement vos certificats.
NE nécessite PAS d'accès root/sudoer
.
Docker prêt
Prêt pour IPv6
Notifications de tâches Cron pour renouvellement ou erreur, etc.
Il s'agit probablement du script shell easiest & smartest
pour émettre et renouveler automatiquement les certificats gratuits.
Wiki : https://github.com/acmesh-official/acme.sh/wiki
Pour les fans de Docker : acme.sh ? Docker
Twitter : @neilpangxa
FreeBSD.org
ruby-china.org
Proxmox
pfsens
Loadbalancer.org
discours.org
Centminmod
splynx
opnsense.org
Panneau Web CentOS
lnmp.org
plus...
NON | Statut | Plate-forme |
---|---|---|
1 | MacOSX | |
2 | Windows (cygwin avec curl, openssl et crontab inclus) | |
3 | GratuitBSD | |
4 | Solaris | |
5 | Ubuntu | |
6 | N / A | pfsens |
7 | OpenBSD | |
8 | NetBSD | |
9 | DragonFlyBSD | |
10 | Omnios | |
11 | Debian | |
12 | CentOS | |
13 | ouvertSUSE | |
14 | Alpine Linux (avec curl) | |
15 | Archlinux | |
16 | feutre | |
17 | Kali Linux | |
18 | Oracle-Linux | |
19 | Magie | |
10 | Gentoo Linux | |
11 | ClairLinux | |
22 | ----- | Nuage Linux #111 |
23 | ----- | OpenWRT : testé et fonctionnel. Voir la page wiki |
24 | Proxmox : voir le wiki Proxmox VE. Versions 4.x, 5.0, 5.1, version 5.2 et supérieures |
Consultez notre projet de test :
https://github.com/acmesh-official/acmetest
CA ZeroSSL.com (par défaut)
Letsencrypt.org CA
BuyPass.com CA
SSL.com CA
Autorité de certification publique Google.com
Mode strict de galets
Toute autre autorité de certification conforme à la RFC8555
Mode racine Web
Mode autonome
Mode tls-alpn autonome
Mode Apache
Mode Nginx
Mode DNS
Mode alias DNS
Mode sans état
Vérifiez ce projet : https://github.com/acmesh-official/get.acme.sh
boucle https://get.acme.sh | sh -s [email protected]
Ou:
wget -O - https://get.acme.sh | sh -s [email protected]
Clonez ce projet et lancez l'installation :
git clone https://github.com/acmesh-official/acme.sh.gitcd ./acme.sh ./acme.sh --install -m [email protected]
Vous don't have to be root
dans ce cas, même si it is recommended
.
Installation avancée : https://github.com/acmesh-official/acme.sh/wiki/How-to-install
L'installateur effectuera 3 actions :
Créez et copiez acme.sh
dans votre répertoire personnel ( $HOME
): ~/.acme.sh/
. Tous les certificats seront également placés dans ce dossier.
Créez un alias pour : acme.sh=~/.acme.sh/acme.sh
.
Créez une tâche cron quotidienne pour vérifier et renouveler les certificats si nécessaire.
Exemple d'entrée Cron :
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
Après l'installation, vous devez fermer le terminal actuel et le rouvrir pour que l'alias prenne effet.
Ok, vous êtes prêt à émettre des certificats maintenant.
Afficher le message d'aide :
root@v1 :~# acme.sh -h
Exemple 1 : domaine unique.
acme.sh --issue -d exemple.com -w /home/wwwroot/exemple.com
ou:
acme.sh --issue -d exemple.com -w /home/username/public_html
ou:
acme.sh --issue -d exemple.com -w /var/www/html
Exemple 2 : plusieurs domaines dans le même certificat.
acme.sh --issue -d exemple.com -d www.exemple.com -d cp.exemple.com -w /home/wwwroot/exemple.com
Le paramètre /home/wwwroot/example.com
ou /home/username/public_html
ou /var/www/html
est le dossier racine Web dans lequel vous hébergez les fichiers de votre site Web. Vous DEVEZ avoir write access
à ce dossier.
Le deuxième argument "exemple.com" est le domaine principal pour lequel vous souhaitez émettre le certificat. Vous devez y avoir au moins un domaine.
Vous devez pointer et lier tous les domaines au même répertoire racine Web : /home/wwwroot/example.com
.
Les certificats seront placés dans ~/.acme.sh/example.com/
Les certificats seront renouvelés automatiquement tous les 60 jours.
Plus d'exemples : https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
Une fois le certificat généré, vous souhaiterez probablement l'installer/copier sur votre serveur Apache/Nginx ou d'autres serveurs. Vous DEVEZ utiliser cette commande pour copier les certificats dans les fichiers cibles, NE PAS utiliser les fichiers de certificats dans le dossier ~/.acme.sh/ , ils sont destinés à un usage interne uniquement, la structure des dossiers peut changer à l'avenir.
Exemple Apache :
acme.sh --install-cert -d exemple.com --cert-file /chemin/vers/certfile/in/apache/cert.pem --key-file /chemin/vers/keyfile/in/apache/key.pem --fullchain-file /chemin/vers/fullchain/certfile/apache/fullchain.pem --reloadcmd "service apache2 force-reload"
Exemple Nginx :
acme.sh --install-cert -d exemple.com --key-file /chemin/vers/keyfile/in/nginx/key.pem --fullchain-file /chemin/vers/fullchain/nginx/cert.pem --reloadcmd "service nginx force-reload"
Seul le domaine est obligatoire, tous les autres paramètres sont facultatifs.
Les informations de propriété et d'autorisation des fichiers existants sont conservées. Vous pouvez pré-créer les fichiers pour définir la propriété et l'autorisation.
Installez/copiez le certificat/la clé sur le chemin de production Apache ou Nginx.
Le certificat sera renouvelé tous les 60 jours par défaut (ce qui est configurable). Une fois le certificat renouvelé, le service Apache/Nginx sera rechargé automatiquement par la commande : service apache2 force-reload
ou service nginx force-reload
.
Attention : le reloadcmd est très important. Le certificat peut être automatiquement renouvelé, mais, sans un « reloadcmd » correct, le certificat risque de ne pas être envoyé sur votre serveur (comme nginx ou apache), votre site Web ne pourra alors pas afficher le certificat renouvelé dans 60 jours.
(vous devez être root/sudoer ou avoir l'autorisation d'écouter sur le port 80 (TCP))
Le port 80
(TCP) DOIT être libre d'écoute, sinon vous serez invité à le libérer et à réessayer.
acme.sh --issue --standalone -d exemple.com -d www.exemple.com -d cp.exemple.com
Plus d'exemples : https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(vous devez être root/sudoer ou avoir l'autorisation d'écouter sur le port 443 (TCP))
Le port 443
(TCP) DOIT être libre d'écoute, sinon vous serez invité à le libérer et à réessayer.
acme.sh --issue --alpn -d exemple.com -d www.exemple.com -d cp.exemple.com
Plus d'exemples : https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(vous devez être root/sudoer, car il est nécessaire pour interagir avec le serveur Apache)
Si vous utilisez un serveur Web, il est recommandé d'utiliser le Webroot mode
.
En particulier, si vous utilisez un serveur Apache, vous pouvez utiliser le mode Apache à la place. Ce mode n'écrit aucun fichier dans votre dossier racine Web.
Définissez simplement la chaîne "Apache" comme deuxième argument et cela forcera automatiquement l'utilisation du plugin Apache.
acme.sh --issue --apache -d exemple.com -d www.exemple.com -d cp.exemple.com
Ce mode Apache sert uniquement à émettre le certificat, il ne modifiera pas vos fichiers de configuration Apache. Vous devrez configurer les fichiers de configuration de votre site Web pour utiliser le certificat par vous-même. Nous ne voulons pas déranger votre serveur Apache, ne vous inquiétez pas.
Plus d'exemples : https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(vous devez être root/sudoer, car il est nécessaire pour interagir avec le serveur Nginx)
Si vous utilisez un serveur Web, il est recommandé d'utiliser le Webroot mode
.
En particulier, si vous exécutez un serveur nginx, vous pouvez utiliser le mode nginx à la place. Ce mode n'écrit aucun fichier dans votre dossier racine Web.
Définissez simplement la chaîne "nginx" comme deuxième argument.
Il configurera automatiquement le serveur nginx pour vérifier le domaine, puis restaurera la configuration nginx à la version originale.
La configuration n'est donc pas modifiée.
acme.sh --issue --nginx -d exemple.com -d www.exemple.com -d cp.exemple.com
Ce mode nginx sert uniquement à émettre le certificat, il ne modifiera pas vos fichiers de configuration nginx. Vous devrez configurer les fichiers de configuration de votre site Web pour utiliser le certificat par vous-même. Nous ne voulons pas déranger votre serveur nginx, ne vous inquiétez pas.
Plus d'exemples : https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
Si votre fournisseur DNS prend en charge l'accès API, nous pouvons utiliser cette API pour émettre automatiquement les certificats.
Vous n'avez rien à faire manuellement !
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
Voir : https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode d'abord.
Si votre fournisseur DNS ne prend en charge aucun accès API, vous pouvez ajouter l'enregistrement txt manuellement.
acme.sh --issue --dns -d exemple.com -d www.exemple.com -d cp.exemple.com
Vous devriez obtenir un résultat comme ci-dessous :
Ajoutez l'enregistrement txt suivant : Domaine :_acme-challenge.example.com Valeur du texte : 9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c Ajoutez l'enregistrement txt suivant : Domaine :_acme-challenge.www.example.com Valeur du texte : 9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Veuillez ajouter ces enregistrements txt aux domaines. En attente que le DNS prenne effet.
Ensuite, réexécutez simplement avec l'argument renew
:
acme.sh --renew -d exemple.com
Ok, c'est fait.
Attention, il s'agit du mode DNS manuel, il ne peut pas être renouvelé automatiquement. vous devrez ajouter manuellement un nouvel enregistrement txt à votre domaine lorsque vous renouvellerez votre certificat.
Veuillez plutôt utiliser le mode API DNS.
Définissez simplement le paramètre keylength
avec un préfixe ec-
.
Par exemple:
acme.sh --issue -w /home/wwwroot/example.com -d exemple.com --keylength ec-256
acme.sh --issue -w /home/wwwroot/example.com -d exemple.com -d www.example.com --keylength ec-256
Veuillez regarder le paramètre keylength
ci-dessus.
Les valeurs valides sont :
ec-256 (prime256v1, "ECDSA P-256", qui est le type de clé par défaut)
ec-384 (secp384r1, "ECDSA P-384")
ec-521 (secp521r1, "ECDSA P-521", qui n'est pas encore pris en charge par Let's Encrypt.)
2048 (RSA2048)
3072 (RSA3072)
4096 (RSA4096)
C'est simple, donnez simplement un domaine générique comme paramètre -d
.
acme.sh --issue -d exemple.com -d '*.exemple.com' --dns dns_cf
Non, vous n'avez pas besoin de renouveler les certificats manuellement. Tous les certificats seront renouvelés automatiquement tous les 60 jours.
Cependant, vous pouvez également forcer le renouvellement d'un certificat :
acme.sh --renew -d exemple.com --force
ou, pour le certificat ECC :
acme.sh --renew -d exemple.com --force --ecc
Pour arrêter le renouvellement d'un certificat, vous pouvez exécuter la procédure suivante pour supprimer le certificat de la liste de renouvellement :
acme.sh --remove -d exemple.com [--ecc]
Le fichier cert/key n'est pas supprimé du disque.
Vous pouvez supprimer vous-même le répertoire correspondant (par exemple ~/.acme.sh/example.com
).
acme.sh
acme.sh est en développement constant, il est donc fortement recommandé d'utiliser le code le plus récent.
Vous pouvez mettre à jour acme.sh avec le dernier code :
acme.sh --upgrade
Vous pouvez également activer la mise à niveau automatique :
acme.sh --upgrade --auto-upgrade
Ensuite, acme.sh sera tenu à jour automatiquement.
Désactivez la mise à niveau automatique :
acme.sh --upgrade --auto-upgrade 0
https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR
https://github.com/acmesh-official/acme.sh/wiki/notify
Parlez le langage ACME en utilisant le shell, directement dans "Let's Encrypt".
FAIRE:
Acme-tiny : https://github.com/diafygi/acme-tiny
Protocole ACME : https://github.com/ietf-wg-acme/acme
Ce projet existe grâce à toutes les personnes qui y contribuent.
Devenez un contributeur financier et aidez-nous à pérenniser notre communauté. [Contribuer]
Soutenez ce projet avec votre organisation. Votre logo apparaîtra ici avec un lien vers votre site Web. [Contribuer]
La licence est GPLv3
S'il vous plaît, étoilez-moi et fourchettez-moi.
Les problèmes et les demandes de tirage sont les bienvenus.
Votre don améliore acme.sh :
PayPal/Alipay(支付宝)/Wechat(微信) : https://donate.acme.sh/
Faire un don