GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare consente di crittografare i certificati SSL su Ubuntu 18.04

Certbot è un client automatico intuitivo che recupera e distribuisce certificati SSL/TLS per il tuo server web. È uno strumento di EFF che viene utilizzato per ottenere certificati da Let's Encrypt e abilitare automaticamente HTTPS sul tuo server. In breve, agisce come un "client Let's Encrypt" ufficiale o "client Let's Encrypt Python". Utilizza ACME (Automated Certificate Management Environment) per distribuire automaticamente certificati SSL gratuiti considerati affidabili dalla maggior parte dei browser. Quindi, funziona con qualsiasi altra CA che supporta il protocollo ACME.

In questo articolo spiegherò come ottenere e installare gratuitamente Let's encrypt i certificati SSL usando Certbot per Apache e Nginx su server Ubuntu 18.04.

Prerequisiti

  • Un server Ubuntu Bionic Beaver (18.04) con privilegi di root per installare i pacchetti richiesti secondo i requisiti.
  • Un dominio completamente qualificato che è registrato e dispone di record DNS appropriati. In questo articolo, sto utilizzando il dominio fosscloudy.com in tutto.

Installa Certbot

Inizialmente, per recuperare i certificati SSL Letsencrypt, dovremo installare il software Certbot. Anche se Certbot è stato recentemente reso disponibile in Ubuntu, i pacchetti tendono ad essere obsoleti lì. Pertanto, è consigliabile utilizzare i repository del software Ubuntu con il software più recente per l'installazione. Puoi installare Certbot utilizzando i seguenti comandi:

#add-apt-repository ppa:certbot/certbot
#apt update
#apt install certbot

Puoi confermare la versione di Certbot installata con questo comando di seguito:

# certbot --version
certbot 0.23.0

Inoltre, possiamo utilizzare questo comando "plugin Certbot" per conoscere i plugin Certbot disponibili installati sul tuo server.

# certbot plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot.plugins.webroot:Authenticator
-------------------------------------------------------------------------------

Per impostazione predefinita, in questo pacchetto verranno inclusi solo i plug-in Standalone e Webroot. Secondo il nostro scopo, possiamo abilitare ulteriormente tutti i plug-in richiesti uno per uno.

Configurazione del certificato Let's Encrypt SSL su Apache

Certbot fornisce un plug-in Apache per emettere i certificati SSL più facilmente con questo strumento. Possiamo installare questo plugin eseguendo questo comando di seguito:

#apt install python-certbot-apache

Siamo ora pronti per utilizzare questo strumento, ma per configurare SSL per i domini, dovremo verificare alcuni dei file di configurazione di Apache. Per l'emissione del certificato SSL per un dominio, Certbot proverà a recuperare l'esatto host virtuale del dominio nella configurazione Apache del tuo server. Puoi fare riferimento al mio precedente articolo che ti aiuterà a configurare un host virtuale di dominio. Ipotizzando la presenza di un host virtuale adeguato per il nostro dominio possiamo eseguire questo comando per installare SSL per il nostro dominio fosscloudy.com.

# certbot --apache -d fosscloudy.com -d www.fosscloudy.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for fosscloudy.com
http-01 challenge for www.fosscloudy.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/fosscloudy.com-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/fosscloudy.com-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/fosscloudy.com-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/fosscloudy.com-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/fosscloudy.com.conf to ssl vhost in /etc/apache2/sites-available/fosscloudy.com-le-ssl.conf

-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://fosscloudy.com and
https://www.fosscloudy.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=fosscloudy.com
https://www.ssllabs.com/ssltest/analyze.html?d=www.fosscloudy.com
-------------------------------------------------------------------------------

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/fosscloudy.com-0002/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/fosscloudy.com-0002/privkey.pem
Your cert will expire on 2018-09-03. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

La procedura interattiva di cui sopra ti guiderà attraverso tutte le informazioni necessarie per firmare/installare il certificato per il dominio selezionato. Il tuo dominio SSL verrà scaricato, installato e configurato correttamente nel tuo host virtuale di dominio automaticamente con questa esecuzione del comando. Ora puoi accedere al tuo dominio con HTTPS e confermarne il funzionamento o verificare lo stato SSL nel controllo SSL.

Facoltativamente, se hai configurato più host/domini virtuali, puoi utilizzare il comando seguente per installare i certificati SSL per loro.

#certbot --apache

Certbot ti chiederà di selezionare i domini inclusi nel nuovo certificato.

Inoltre, se non desideri che Certbot installi/configuri automaticamente il tuo host virtuale di dominio con il nuovo certificato SSL, puoi utilizzare il comando seguente per generare solo il certificato SSL. Puoi configurarlo manualmente in seguito.

#certbot --apache certonly

Configurazione del certificato SSL Let's Encrypt su Nginx

Per i tuoi server che eseguono il server web Nginx, possiamo utilizzare il plug-in Certbot Nginx per ottenere e installare automaticamente i certificati SSL. Puoi installare questo plugin emettendo questo comando qui sotto:

#apt install python-certbot-nginx

Ora siamo pronti per utilizzare questo strumento, ma per configurare SSL per i domini, dovremo verificare alcuni dei file di configurazione di Nginx per lo stesso. Per l'emissione del certificato SSL per un dominio, Certbot proverà a recuperare l'esatto host virtuale del dominio nella configurazione Nginx del tuo server. Ipotizzando la presenza di un host virtuale adeguato per il nostro dominio possiamo eseguire questo comando per installare SSL per il nostro dominio fosscloudy.com.

# certbot --nginx -d fosscloudy.com -d www.fosscloudy.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: N
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for fosscloudy.com
http-01 challenge for www.fosscloudy.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/fosscloudy.com.conf
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/fosscloudy.com.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/fosscloudy.com.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/fosscloudy.com.conf

-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://fosscloudy.com and
https://www.fosscloudy.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=fosscloudy.com
https://www.ssllabs.com/ssltest/analyze.html?d=www.fosscloudy.com
-------------------------------------------------------------------------------

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/fosscloudy.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/fosscloudy.com/privkey.pem
Your cert will expire on 2018-09-03. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Questa procedura interattiva autoesplicativa ti aiuterà a generare/installare/configurare automaticamente il certificato SSL per il tuo dominio. Il tuo dominio SSL verrà scaricato, installato e configurato correttamente nel tuo host virtuale di dominio automaticamente con questa esecuzione del comando. Ora puoi accedere al tuo dominio con HTTPS e confermarne il funzionamento o verificare lo stato SSL nel controllo SSL. Puoi sostituire il mio dominio fosscloudy.com con il tuo ed eseguire lo stesso comando per generare il tuo certificato SSL.

Simile al plug-in Apache, se hai più host/domini virtuali configurati, puoi utilizzare il comando seguente per installare i certificati SSL per tutti loro.

#certbot --nginx

Certbot ti chiederà di selezionare i domini inclusi nel nuovo certificato.

Inoltre, se non desideri che Certbot installi/configuri automaticamente il tuo host virtuale di dominio con il nuovo certificato SSL, puoi utilizzare il comando seguente per generare semplicemente il certificato SSL che in seguito potrai configurarlo manualmente.

#certbot --nginx certonly

Configurazione di certificati Let's Encrypt con caratteri jolly utilizzando Certbot

Let's Encrypt ha recentemente iniziato a supportare i certificati con caratteri jolly utilizzando il suo nuovo protocollo ACME2. Ciò significa che puoi avere un singolo certificato jolly come *.fosscloudy.com e usarlo su tutti gli altri sottodomini di dominio come docs.fosscloudy.com, blog.fosscloudy.com, mail.fosscloudy.com ecc. Questo lo rende molto facile da gestire i certificati per i numerosi sottodomini di dominio in modo efficiente. Puoi generare questo certificato SSL con caratteri jolly per fosscloudy.com eseguendo questo comando di seguito. Puoi modificare questo comando con il tuo dominio preferito sostituendo fosscloudy.com.

# certbot certonly --manual -d *.fosscloudy.com --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for fosscloudy.com

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.fosscloudy.com with the following value:

z25SzIfe37x5va0ynh6KdmEYVjjuSvdUOGM_t_twsVk

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/fosscloudy.com-0001/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/fosscloudy.com-0001/privkey.pem
Your cert will expire on 2018-09-03. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Come accennato in questa procedura interattiva, ti chiederà di aggiungere uno specifico record TXT ai tuoi record DNS. Nel mio caso, ha segnalato di impostare il TXT come di seguito:

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.fosscloudy.com with the following value:

z25SzIfe37x5va0ynh6KdmEYVjjuSvdUOGM_t_twsVk

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

Nel tuo provider DNS, creerai un nuovo record TXT DNS con:

Record Name: _acme-challenge (you may or may not need the .fosscloudy.com suffix depending on your DNS provider.
Record Value: z25SzIfe37x5va0ynh6KdmEYVjjuSvdUOGM_t_twsVk (replace this with the value provided by Certbot)
 

Salva le tue impostazioni DNS e premi Invio nella finestra di Certbot per attivare il controllo e completare la verifica. Dovrai attendere un po' di tempo prima che il nuovo record DNS si propaghi su Internet. Ho aspettato 30 minuti e ho premuto invio. Puoi anche impostare un valore TTL più basso per rendere questo processo più veloce.

Congratulazioni!! Viene generato il certificato jolly per il tuo dominio fosscloudy.com. Ora puoi utilizzare questo certificato con caratteri jolly con qualsiasi sottodominio che crei per il tuo nome di dominio. Ad esempio, ho creato un sottodominio per questo dominio, ovvero docs.fosscloudy.com. Utilizzerà questi certificati SSL jolly installati per il dominio principale. Puoi accedere al tuo sottodominio con HTTPS nel browser e confermarne il funzionamento.

Autorinnovo dei certificati SSL

Puoi utilizzare uno qualsiasi di questi metodi sopra menzionati per ottenere i tuoi certificati SSL. Ma tutti questi certificati Let's Encrypt sono di breve durata e saranno validi solo per 90 giorni. Quindi è obbligatorio rinnovare questi certificati prima della scadenza per facilitare il normale funzionamento dei tuoi siti web. Puoi farlo manualmente se necessario oppure puoi automatizzare questo processo utilizzando cronjobs o il client Certbot.

Quando un certificato viene installato correttamente mediante l'esecuzione dei metodi precedenti, riceverai un messaggio simile a questo:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/fosscloudy.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/fosscloudy.com/privkey.pem
Your cert will expire on 2018-09-03. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"

Questo messaggio indica chiaramente come rinnovare il tuo certificato in futuro con il "certbot renew" comando.

Testiamo il processo di rinnovo automatico con il seguente comando:

#certbot renew

Questo comando verificherà se gli SSL di dominio devono essere rinnovati e rinnoveranno gli SSL di dominio che devono essere rinnovati.

La buona notizia è che i pacchetti Certbot sul nostro server sono dotati di un cronjob che rinnoverà automaticamente i nostri certificati SSL prima che scadano. Poiché i certificati Let's Encrypt durano 90 giorni, è altamente consigliabile sfruttare questa funzione.

# cat /etc/cron.d/certbot
# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc. Renewal will only occur if expiration
# is within 30 days.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

Questo cron verrà eseguito due volte al giorno, ma non rinnoverà i certificati a meno che non stiano per scadere.

Leggi anche:

  • Installa WordPress su Docker LEMP Stack con Letsencrypt SSL

Let's Encrypt ha letteralmente cambiato il modo in cui generiamo, installiamo e utilizziamo i certificati SSL. Con le sue procedure automatizzate utilizzando lo strumento Certbot, puoi vedere con quanta facilità puoi ottenere i tuoi certificati SSL gratuiti in pochi secondi, da Let's Encrypt e installarli in pochi minuti, automaticamente. Spero che questo articolo sia informativo e utile per te. Pubblica i tuoi preziosi commenti e suggerimenti su questo.


Ubuntu
  1. Come installare Nextcloud con Nginx e Lets Encrypt SSL su Ubuntu 20.04 LTS

  2. Come installare Magento 2 con Nginx e Lets Encrypt SSL su Ubuntu 20.04 LTS

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

  4. Come installare X-Cart con Nginx e Lets Encrypt SSL su Ubuntu 18.04 LTS

  5. Come installare Drupal con Nginx e Lets Encrypt SSL su Ubuntu 20.04 LTS

Come installare il certificato Let's Encrypt utilizzando Certbot in Ubuntu 20.04

Come installare Let's Encrypt (Certbot) su CentOS 8

Come installare un certificato SSL Let's Encrypt per Apache e Ubuntu 20.04

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Come installare Let's Encrypt SSL su Ubuntu con Apache

Come installare Let's Encrypt SSL con Nginx su Ubuntu 16.04 LTS