Come richiedere un certificato LetsEncrypt utilizzando Acme

Contenuti

Criptiamo

LetsEncrypt ha cambiato il mondo dei certificati SSL quando la sua offerta di certificati SSL gratuiti e di breve durata ha permesso a un gran numero di persone e aziende di proteggere le proprie applicazioni web senza alcun costo.. Con questo servizio, l'infrastruttura necessaria dovrebbe esistere e, a quello scopo, è emerso un gran numero di applicazioni che soddisfano le esigenze di emissione SSL.

Una delle utilità più comuni è quella di CertBot, che può funzionare bene, ma un'altra applicazione open source abilitata è acme.sh. Questo è un cliente ACME (il protocollo utilizzato da LetsEncrypt per emettere certificati SSL) assolutamente a base di shell. Con una serie di funzioni avanzate integrate, questo client consente configurazioni complesse.

Il modo più semplice per installare [acme.sh](<http://acme.sh>) è il seguente, che scarica ed esegue lo script da qui, https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh.

curl <https://get.acme.sh> | sh

La fonte di quel sito si trova qui, se vuoi controllare cosa sta facendo lo script reale

L'installazione scaricherà e sposterà i file in ~/.acme.she installa un alias nel tuo ~/.bashrc procedimento. Allo stesso tempo, verrà installato un cron job se abilitato.

Installazione di Acme.shc

Primi passi

Molto di come lo usi [acme.sh](<http://acme.sh>) dipende dal metodo e dall'applicazione per cui si richiede il certificato. Acme.sh offre molti metodi diversi per richiedere un certificato, Che cosa:

In questo post, Dimostrerò due modi diversi per richiedere un certificato. Includo le configurazioni del server web per NGINX e Apache, che utilizza il metodo Webroot. Il metodo della modalità DNS utilizza un file di configurazione per creare record CNAME che vengono utilizzati per verificare il dominio, invece di creare un file sul file system.

Configurazione del server web

Configurazione di NGINX LetsEncrypt

NGINX semplifica la creazione di una configurazione condivisa da utilizzare quando si utilizza il webroot modalità di richiesta di un certificato.

letsencrypt.conf

Si consiglia di creare una configurazione separata che può essere inclusa secondo necessità nelle configurazioni vhost, Così: include /etc/nginx/letsencrypt.conf

# Rule for legitimate ACME Challenge requests (like /.well-known/acme-challenge/xxxxxxxxx)
# We use ^~ here, so that we don't check other regexes (for speed-up). We actually MUST cancel
# other regex checks, because in our other config files have regex rule that denies access to files with dotted names.
location ^~ /.well-known/acme-challenge/ {
    # Set correct content type. According to this:
    # <https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29>
    # Current specification requires "text/plain" or no content header at all.
    # It seems that "text/plain" is a safe option.
   default_type "text/plain";
}

# Direct access returns a 404
location = /.well-known/acme-challenge/ {
   return 404;
}

apache

Allo stesso modo di NGINX, Apache può creare un file di configurazione separato. Di seguito è riportato un esempio di questa configurazione.

/etc/apache2/conf-available/letsencrypt.conf

Per questo caso, La configurazione di Apache è specifica dell'host virtuale a causa della necessità di includere la posizione del disco. Il prossimo è un luogo comune, ma potrebbe differire in base alla configurazione specifica.

Alias /.well-known/acme-challenge/ "/var/www/html/.well-known/acme-challenge/"
<Directory "/var/www/html/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Configurazione DNS

In questo post, Sto dimostrando la modalità DNS usando Cloudflare, poiché offre modifiche DNS estremamente veloci e funziona eccezionalmente bene con questo metodo.

Acme.sh utilizza due variabili ambientali per il dns_cf metodo: CF_Key e CF_Email. Per includerlo nel tuo ambiente all'avvio, puoi includere questa configurazione all'interno del tuo .bashrc procedimento.

Potrebbe non essere ovvio, ma c'è uno spazio prima di ogni comando di esportazione, che generalmente garantisce che non verranno letti nella storia, nel caso in cui.

 export CF_Key="#########..."
 export CF_Email="[email protected]"

Emettere il certificato tramite il metodo Webroot

Emettendo il seguente comando, due domini sono definiti in un unico certificato. Questo per assicurarsi che quando viene richiesto uno qualsiasi dei nomi host (ed è spesso reindirizzato a canonico), la richiesta rimarrà protetta da una connessione sicura.

acme.sh --issue -d example.com -d www.example.com -w /var/www/html

I certificati rilasciati sono in /.acme.sh/acme.sh/{domain_name}

Emettere certificato tramite metodo DNS

Quando si utilizza il metodo di trasmissione DNS, un txt Il record viene creato tramite l'API Cloudflare e LetsEncrypt verifica il dominio utilizzando quel record temporaneo. Questo è un metodo più pulito, dal momento che no webroot configurazione necessaria.

# Multiple Domains
acme.sh --issue --dns dns_cf -d example.com -d www.example.com

I certificati rilasciati sono in /.acme.sh/acme.sh/{domain_name}

Certificato rinnovabile

Predefinito, Acme.sh, creerà un cronjob come la prossima voce:

48 0 * * * "/home/user/.acme.sh/acme.sh" --cron --home "/home/user/.acme.sh" > /dev/null

Per forzare un rinnovo, puoi dare il seguente comando, che utilizzerà lo stesso metodo di emissione utilizzato originariamente:

acme.sh --renew -d example.com -d www.example.com

Elimina certificati

Se non vuoi più rinnovare un certificato, è molto facile da rimuovere. Nonostante questo, questo non rimuove il certificato dal disco. Fare quello, devi navigare verso ~/.acme.sh/ ed eliminare la directory contenente i certificati.

acme.sh --remove -d example.com -d www.example.com

Ciò consente di pulire i certificati configurati per il rinnovo, che puoi verificare elencando i certificati come segue:

acme.sh --list

conclusione

LetsEncrypt offre un servizio eccellente e facile da usare per il provisioning di certificati SSL da utilizzare sui siti web.. Creare un portale web sicuro è più facile che mai e utilizzare il acme.sh client significa che hai il pieno controllo su come questo accade sul tuo server web.

Con diversi metodi per ottenere un certificato, compresi metodi molto sicuri, come dominio delegato, consentono di recuperare correttamente i certificati necessari.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.