Acme.sh è un client di protocollo ACME semplice, potente e facile da usare scritto esclusivamente in linguaggio Shell (shell Unix), compatibile con shell bash, dash e sh. Aiuta a gestire l'installazione, il rinnovo e la revoca dei certificati SSL. Supporta i protocolli ACME versione 1 e ACME versione 2, nonché i certificati jolly ACME v2. Essere un client ACME a zero dipendenze lo rende ancora migliore. Non è necessario scaricare e installare l'intera Internet per funzionare. Lo strumento non richiede l'accesso come root o sudo, ma si consiglia di utilizzare root.
Acme.sh supporta i seguenti metodi di convalida che puoi utilizzare per confermare la proprietà del dominio:
- Modalità Webroot
- Modalità autonoma
- Modalità tls-alpn autonoma
- Modalità Apache
- Modalità Nginx
- Modalità DNS
- Modalità alias DNS
- Modalità senza stato
Cos'è Let's Encrypt
Let's Encrypt (LE) è un'autorità di certificazione (CA) che offre certificati SSL/TLS gratuiti e automatizzati, con l'obiettivo di crittografare l'intero Web. Se possiedi un nome di dominio e disponi dell'accesso tramite shell al tuo server, puoi utilizzare Let's Encrypt per ottenere un certificato attendibile gratuitamente. Let's Encrypt può emettere certificati SAN per un massimo di 100 nomi host e certificati jolly. Tutti i certificati sono validi per il periodo di 90 giorni.
Utilizzo di Acme.sh e comandi di base
In questa sezione, mostrerò alcuni dei comandi e delle opzioni di acme.sh più comuni.
Installazione di Acme.sh
Hai alcune opzioni per installare acme.sh.
 Installa dal Web tramite curl o wget  :
curl https://get.acme.sh | sh
source ~/.bashrco
wget -O - https://get.acme.sh | sh
source ~/.bashrcInstalla da GitHub :
curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sho
wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 shGit clona e installa:
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrcIl programma di installazione eseguirà 3 azioni:
- Crea e copia acme.shalla tua home directory ($HOME):~/.acme.sh/. Tutti i certificati verranno inseriti anche in questa cartella.
- Crea alias per:acme.sh=~/.acme.sh/acme.sh.
- Crea un cron job giornaliero per controllare e rinnovare i certificati se necessario.
Installazione avanzata:
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install \
          --home ~/myacme \
          --config-home ~/myacme/data \
          --cert-home ~/mycerts \
          --accountemail "[email protected]" \
          --accountkey ~/myaccount.key \
          --accountconf ~/myaccount.conf \
          --useragent "this is my client."Non è necessario impostare tutte le opzioni, basta impostare quelle a cui tieni.
Opzioni spiegate:
- --homeè una directory personalizzata per installare- acme.shin. Per impostazione predefinita, si installa in- ~/.acme.sh.
- --config-homeè una cartella scrivibile, acme.sh scriverà tutti i file (inclusi cert/keys, configs) lì. Per impostazione predefinita, è in- --home.
- --cert-homeè una directory personalizzata per salvare i certificati che emetti. Per impostazione predefinita, viene salvato in- --config-home.
- --accountemailè l'e-mail utilizzata per registrare l'account su Let's Encrypt, riceverai un'e-mail di avviso di rinnovo qui. L'impostazione predefinita è vuota.
- --accountkeyè il file che salva la chiave privata del tuo account. Per impostazione predefinita è salvato in- --config-home.
- --useragentè il valore dell'intestazione dell'agente utente utilizzato per inviare a Let's Encrypt.
 Al termine dell'installazione, puoi verificarla selezionando acme.sh versione:
acme.sh --version
# v2.8.1Il programma ha molti comandi e parametri che possono essere utilizzati. Per ricevere assistenza puoi eseguire:
acme.sh --helpRilascia un certificato SSL
Se hai già un server web in esecuzione, dovresti usare la modalità webroot . Avrai bisogno dell'accesso in scrittura alla cartella principale web. Ecco alcuni comandi di esempio che possono essere utilizzati per ottenere cert tramite la modalità webroot:
Dominio singolo + modalità Webroot:
acme.sh --issue -d example.com --webroot /var/www/example.com
Più domini nello stesso certificato + modalità Webroot:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.comCertificazione ECC/ECDSA a dominio singolo + modalità Webroot:
acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256Più domini nello stesso certificato ECC/ECDSA + modalità Webroot:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256
 Valori validi per --keylength sono:2048 (predefinito), 3072, 4096, 8192 o ec-256, ec-384.
Se non hai un server web, magari sei su un server SMTP o FTP, la porta 80 è libera, quindi puoi usare la modalità standalone. Se desideri utilizzare questa modalità, devi prima installare gli strumenti socat.
Dominio singolo + Modalità standalone:
acme.sh --issue -d example.com --standalone
Più domini nello stesso certificato + Modalità autonoma:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone
Se non hai un server web, magari sei su un server SMTP o FTP, la porta 443 è gratuita. Puoi utilizzare la modalità TLS ALPN autonoma. Acme.sh ha un server web TLS standalone integrato, può ascoltare sulla porta 443 per emettere il certificato.
Dominio singolo + Modalità TLS ALPN standalone:
acme.sh --issue -d example.com --alpnPiù domini nello stesso certificato + modalità TLS ALPN autonoma:
acme.sh --issue -d example.com -d www.example.com --alpnIntegrazione automatica dell'API DNS
Se il tuo provider DNS ha un'API, acme.sh può utilizzare l'API per aggiungere automaticamente il record DNS TXT per te. Il tuo certificato verrà automaticamente emesso e rinnovato. Non è richiesto alcun lavoro manuale. Prima di richiedere i certificati configura le tue chiavi API e Email. Attualmente acme.sh ha un'integrazione DNS automatica con circa 60 provider DNS in modo nativo e può utilizzare lo strumento Lexicon per quelli che non sono supportati in modo nativo.
Dominio singolo + modalità API DNS CloudFlare:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com --dns dns_cf
Certificato con caratteri jolly + Modalità API DNS CloudFlare:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cfSe il tuo provider DNS non supporta alcun accesso API, puoi aggiungere il record TXT manualmente.
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
Dovresti ottenere un output come di seguito:
Add the following txt record: Domain:_acme-challenge.example.com Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c Add the following txt record: Domain:_acme-challenge.www.example.com Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Please add those txt records to the domains. Waiting for the dns to take effect.
 Quindi esegui nuovamente con renew argomento:
acme.sh --renew -d example.comTieni presente che questa è la modalità manuale DNS e non puoi rinnovare automaticamente i tuoi certificati. Dovrai aggiungere manualmente un nuovo record TXT al tuo dominio quando è il momento di rinnovare i certificati. Quindi usa invece la modalità API DNS, perché può essere automatizzata.
Installa Crittografiamo il certificato SSL
 Dopo che i certificati sono stati generati, probabilmente vorrai installare/copiare i certificati emessi nella posizione corretta sul disco. Devi utilizzare questo comando per copiare i certificati nei file di destinazione, non utilizzare i file certificati in ~/.acme.sh/ cartella, sono solo per uso interno, la struttura delle cartelle potrebbe cambiare in futuro. Prima dell'installazione, crea una directory ragionevole in cui archiviare i tuoi certificati. Può essere /etc/letsencrypt , /etc/nginx/ssl  o /etc/apache2/ssl ad esempio, a seconda del software del tuo server web e delle tue preferenze per archiviare materiale correlato a SSL.
Apache esempio:
acme.sh --install-cert \
        --domain example.com \ 
        --cert-file /path/to/cert/cert.pem \
        --key-file /path/to/keyfile/key.pem \
        --fullchain-file /path/to/fullchain/fullchain.pem \
        --reloadcmd "sudo systemctl reload apache2.service"Nginx esempio:
acme.sh --install-cert \
        --domain example.com \ 
        --cert-file /path/to/cert/cert.pem \
        --key-file /path/to/keyfile/key.pem \
        --fullchain-file /path/to/fullchain/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"I parametri sono archiviati nel file di configurazione .acme.sh, quindi è necessario impostarlo correttamente per il sistema poiché questo file viene letto quando il lavoro cron esegue il rinnovo. "reloadcmd" dipende dal tuo sistema operativo e dal sistema init.
Rinnova i certificati SSL Let's Encrypt
Non è necessario rinnovare i certificati manualmente. Tutti i certificati verranno rinnovati automaticamente ogni 60 giorni.
Tuttavia, puoi anche forzare il rinnovo di un certificato:
acme.sh --renew -d example.com --forceoppure, per il certificato ECC:
acme.sh --renew -d example.com --force --eccCome aggiornare acme.sh
Puoi aggiornare acme.sh all'ultimo codice con:
acme.sh --upgradePuoi anche abilitare l'aggiornamento automatico:
acme.sh --upgrade --auto-upgradeQuindi acme.sh verrà aggiornato automaticamente.
Questo è tutto. Se rimani bloccato su qualcosa, visita la pagina wiki di acme.sh all'indirizzo https://github.com/Neilpang/acme.sh/wiki.
Link
- https://github.com/Neilpang/acme.sh
- https://letsencrypt.org/