GNU/Linux >> Linux Esercitazione >  >> Linux

Iniziare con acme.sh Lets Encrypt SSL client

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

o

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

o

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

Git clona e installa:

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

Il programma di installazione eseguirà 3 azioni:

  1. Crea e copia acme.sh alla tua home directory ($HOME ):~/.acme.sh/ . Tutti i certificati verranno inseriti anche in questa cartella.
  2. Crea alias per:acme.sh=~/.acme.sh/acme.sh .
  3. 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.sh in. 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.1

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

acme.sh --help

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

Certificazione ECC/ECDSA a 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

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

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

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

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

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

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

oppure, per il certificato ECC:

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

Come aggiornare acme.sh

Puoi aggiornare acme.sh all'ultimo codice con:

acme.sh --upgrade

Puoi anche abilitare l'aggiornamento automatico:

acme.sh --upgrade --auto-upgrade

Quindi 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.

  • https://github.com/Neilpang/acme.sh
  • https://letsencrypt.org/

Linux
  1. Iniziare con Zsh

  2. Iniziare con Lets Encrypt SSL Certificates su Ubuntu

  3. Come gestire i certificati Lets Encrypt SSL/TLS con certbot

  4. Protezione di ISPConfig 3.1 con un certificato SSL gratuito Lets Encrypt

  5. Iniziare con ls

Guida introduttiva a LibreCAD

Considerazioni sull'SSL intermedio compatibile con i certificati Lets Encrypt

Come installare WonderCMS con Nginx e Lets Encrypt SSL su CentOS 7

Iniziare con GIT su Linux

Introduzione al sistema operativo Linux

Iniziare con systemctl