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 ~/.bashrc

oppure

wget -O - https://get.acme.sh | sh  
source ~/.bashrc

Installa da GitHub:

curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

oppure

wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

Clona Git e installa:

git clone https://github.com/Neilpang/acme.sh.git  
cd ./acme.sh  
./acme.sh --install  
source ~/.bashrc

L’installer eseguirà 3 azioni:

  1. Crea e copia acme.sh nella tua home dir ( $HOME): ~/.acme.sh/. Tutti i certificati saranno posizionati anche in questa cartella.
  2. Crea un alias per: acme.sh=~/.acme.sh/acme.sh.
  3. 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 installare acme.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.1

Il programma ha molti comandi e parametri che possono essere utilizzati. Per ottenere aiuto puoi eseguire:

acme.sh --help

Emissione 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.com

Certificato ECC/ECDSA per dominio singolo + modalità Webroot:

acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256

Più 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

I 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 --alpn

Più domini nello stesso certificato + modalità Standalone TLS ALPN:

acme.sh --issue -d example.com -d www.example.com --alpn

Integrazione 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_cf

Se 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.com

Tieni 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 --force

oppure, per certificato ECC:

acme.sh --renew -d example.com --force --ecc

Come aggiornare acme.sh

Puoi aggiornare acme.sh all’ultima versione con:

acme.sh --upgrade

Puoi anche abilitare l’aggiornamento automatico:

acme.sh --upgrade --auto-upgrade

Poi 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

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.