SSL Client · 6 min read · Feb 04, 2026
Iniziare con il client SSL Let's Encrypt acme.sh

Acme.sh è un client del protocollo ACME semplice, potente e facile da usare, scritto interamente in linguaggio Shell (Unix shell), compatibile con le 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 versione 2, così come i certificati wildcard ACME v2. Essendo un client ACME senza dipendenze, lo rende ancora migliore. Non è necessario scaricare e installare l’intero internet per farlo funzionare. Lo strumento non richiede accesso root o sudo, ma è consigliato utilizzare root.
Acme.sh supporta i seguenti metodi di convalida che puoi utilizzare per confermare la proprietà del dominio:
- Modalità Webroot
- Modalità Standalone
- Modalità standalone tls-alpn
- Modalità Apache
- Modalità Nginx
- Modalità DNS
- Modalità alias DNS
- Modalità Stateless
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 hai accesso shell al tuo server, puoi utilizzare Let’s Encrypt per ottenere un certificato di fiducia senza alcun costo. Let’s Encrypt può emettere certificati SAN per un massimo di 100 nomi host ** e certificati wildcard. Tutti i certificati sono validi per un periodo di 90 giorni.
Utilizzo di Acme.sh e comandi di base
In questa sezione, mostrerò alcuni dei comandi e delle opzioni più comuni di acme.sh.
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 ~/.bashrcoppure
wget -O - https://get.acme.sh | sh
source ~/.bashrcInstalla da GitHub:
curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 shoppure
wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 shClona Git e installa:
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrcL’installer eseguirà 3 azioni:
- Crea e copia
acme.shnella tua home dir ($HOME):~/.acme.sh/. Tutti i certificati saranno posizionati anche in questa cartella. - Crea un alias per:
acme.sh=~/.acme.sh/acme.sh. - Crea un lavoro cron 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 "questo è il mio client."Non è necessario impostare tutte le opzioni, basta impostare quelle che ti interessano.
Opzioni spiegate:
--homeè una directory personalizzata per installareacme.sh. Per impostazione predefinita, si installa in~/.acme.sh.--config-homeè una cartella scrivibile, acme.sh scriverà tutti i file (inclusi cert/chiavi, configurazioni) lì. Per impostazione predefinita, si trova in--home.--cert-homeè una directory personalizzata per salvare i certificati che emetti. Per impostazione predefinita, è salvato in--config-home.--accountemailè l’email utilizzata per registrare l’account su Let’s Encrypt, riceverai qui l’email di avviso di rinnovo. Il valore predefinito è vuoto.--accountkeyè il file che salva la chiave privata del tuo account. Per impostazione predefinita, è salvato in--config-home.--useragentè il valore dell’intestazione user-agent utilizzato per inviare a Let’s Encrypt.
Dopo che l’installazione è completata, puoi verificarla controllando la versione di acme.sh:
acme.sh --version
# v2.8.1Il programma ha molti comandi e parametri che possono essere utilizzati. Per ottenere aiuto puoi eseguire:
acme.sh --helpEmissione di un certificato SSL
Se hai già un server web in esecuzione, dovresti utilizzare la modalità webroot. Avrai bisogno di accesso in scrittura alla cartella web root. Ecco alcuni comandi di esempio che possono essere utilizzati per ottenere un certificato 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.comCertificato ECC/ECDSA per 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-256I valori validi per --keylength sono: 2048 (predefinito), 3072, 4096, 8192 o ec-256, ec-384.
Se non hai un server web, forse sei su un server SMTP o FTP, la porta 80 è libera, quindi puoi usare la modalità standalone. Se vuoi utilizzare questa modalità, dovrai prima installare gli strumenti socat.
Dominio singolo + modalità Standalone:
acme.sh --issue -d example.com --standalone Più domini nello stesso certificato + modalità Standalone:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone Se non hai un server web, forse sei su un server SMTP o FTP, la porta 443 è libera. Puoi usare la modalità standalone TLS ALPN. Acme.sh ha un server web standalone TLS integrato, può ascoltare sulla porta 443 per emettere il certificato.
Dominio singolo + modalità Standalone TLS ALPN:
acme.sh --issue -d example.com --alpnPiù domini nello stesso certificato + modalità Standalone TLS ALPN:
acme.sh --issue -d example.com -d www.example.com --alpnIntegrazione automatica dell’API DNS
Se il tuo fornitore DNS ha un’API, acme.sh può utilizzare l’API per aggiungere automaticamente il record DNS TXT per te. Il tuo certificato sarà emesso e rinnovato automaticamente. Non è necessario alcun lavoro manuale. Prima di richiedere i certificati, configura le tue chiavi API e l’email. Attualmente acme.sh ha integrazione DNS automatica con circa 60 fornitori DNS nativamente e può utilizzare lo strumento Lexicon per quelli che non sono supportati nativamente.
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 wildcard + 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 fornitore DNS non supporta alcun accesso API, puoi aggiungere manualmente il record TXT.
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com Dovresti ottenere un output simile a questo:
Aggiungi il seguente record txt:
Dominio:_acme-challenge.example.com
Valore Txt:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Aggiungi il seguente record txt:
Dominio:_acme-challenge.www.example.com
Valore Txt:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Si prega di aggiungere questi record txt ai domini. In attesa che il dns abbia effetto.Poi basta rieseguire con l’argomento renew:
acme.sh --renew -d example.comTieni presente che questa è la modalità manuale DNS e non puoi rinnovare automaticamente i tuoi certificati. Dovrai aggiungere un nuovo record TXT al tuo dominio manualmente quando sarà il momento di rinnovare i certificati. Quindi utilizza la modalità API DNS invece, perché può essere automatizzata.
Installa il certificato SSL Let’s Encrypt
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 dei certificati nella cartella ~/.acme.sh/, sono solo per uso interno, la struttura delle cartelle potrebbe cambiare in futuro. Prima dell’installazione, crea una directory sensata per memorizzare i tuoi certificati. Questa può essere /etc/letsencrypt, /etc/nginx/ssl o /etc/apache2/ssl per esempio, a seconda del tuo software del server web e delle tue preferenze personali per memorizzare le cose relative a SSL.
Esempio Apache:
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"Esempio Nginx:
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 memorizzati nel file di configurazione .acme.sh, quindi devi impostarli correttamente per il tuo sistema poiché questo file viene letto quando il lavoro cron esegue il rinnovo. “reloadcmd” dipende dal tuo sistema operativo e dal sistema di init.
Rinnova i certificati SSL Let’s Encrypt
Non è necessario rinnovare i certificati manualmente. Tutti i certificati saranno rinnovati automaticamente ogni 60 giorni.
Tuttavia, puoi anche forzare il rinnovo di un certificato:
acme.sh --renew -d example.com --forceoppure, per certificato ECC:
acme.sh --renew -d example.com --force --eccCome aggiornare acme.sh
Puoi aggiornare acme.sh all’ultima versione con:
acme.sh --upgradePuoi anche abilitare l’aggiornamento automatico:
acme.sh --upgrade --auto-upgradePoi acme.sh sarà mantenuto aggiornato automaticamente.
Questo è tutto. Se hai problemi, visita la pagina wiki di acme.sh su https://github.com/Neilpang/acme.sh/wiki.
Link
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.