Let's Encrypt è un'autorità di certificazione che fornisce certificati SSL gratuiti per i siti Web. È stato lanciato nel 2014 con l'obiettivo che tutti i siti Web fossero sicuri e HTTP.
Oltre a offrire certificati SSL, aiuta anche l'implementazione e il rinnovo automatico dei certificati. Let's Encrypt è la più grande autorità di certificazione del mondo, utilizzata da oltre 250 milioni di siti Web.
Durante la scrittura di questo post, Let's Encrypt supporta l'installazione automatica di certificati su Apache, Nginx, Plex e Haproxy.
Qui vedremo come installare Let's Encrypt SSL Certificate in Apache su Debian 11.
Prerequisiti
Installa il server Web Apache
Ti consiglio di installare il server web Apache sul tuo sistema prima di procedere oltre.
LEGGI: Come installare lo stack LAMP su Debian 11
O
Usa apt
comando per installare il server web Apache.
sudo apt update sudo apt install -y apache2
Abilita moduli
Utilizzare il comando seguente per abilitare SSL e riscrivere i moduli.
sudo a2enmod ssl rewrite
Crea host virtuale
Innanzitutto, dovremo creare un host virtuale Apache per servire la versione HTTP del tuo sito web.
sudo nano /etc/apache2/sites-available/www.itzgeek.net.conf
Usa la configurazione seguente per il tuo sito web. Ricordarsi di modificare i valori in base alle proprie esigenze. Se non utilizzi il sottodominio www, puoi rimuovere ServerAlias
.
<VirtualHost *:80> ServerName itzgeek.net ServerAlias www.itzgeek.net ServerAdmin [email protected] DocumentRoot /var/www/html/www.itzgeek.net ErrorLog ${APACHE_LOG_DIR}/www.itzgeek.net_error.log CustomLog ${APACHE_LOG_DIR}/www.itzgeek.net_access.log combined <Directory /var/www/html/www.itzgeek.net> Options FollowSymlinks AllowOverride All Require all granted </Directory> </VirtualHost>
Dopo aver creato il file di configurazione dell'host virtuale, abilita il sito.
sudo a2ensite www.itzgeek.net
Quindi, crea una directory principale per contenere i file del tuo sito web.
sudo mkdir -p /var/www/html/www.itzgeek.net/
Quindi, modifica la proprietà e il gruppo della directory.
sudo chown -R www-data:www-data /var/www/html/www.itzgeek.net/
Infine, posiziona il file HTML di prova nella radice del documento del sito Web.
echo "This is a test site @ www.itzgeek.net" | sudo tee /var/www/html/www.itzgeek.net/index.html
Riavvia il servizio Apache per rileggere le configurazioni.
sudo systemctl reload apache2
Crea / Aggiorna record DNS
Per generare un certificato SSL Let's Encrypt, dovrai puntare il tuo dominio all'IP del tuo server. Quindi, vai al tuo registrar di domini e crea un record A/CNAME per il tuo dominio. Ad esempio, l'immagine seguente mostra il record A/CNAME per il dominio www.itzgeek.net.
NOTA:Dopo aver apportato modifiche al record DNS, dovrai attendere da alcuni minuti a ore a seconda del TTL impostato per il record DNS.
Installa il certificato SSL Let's Encrypt in Apache
Installa Certbot
Il client Certbot ACME gestisce l'emissione e l'installazione del certificato senza tempi di inattività. È disponibile come pacchetto snap per il sistema operativo Debian. Quindi, per prima cosa, installa il pacchetto Snapd.
sudo apt update sudo apt install -y snapd
Quindi, aggiorna lo snapd all'ultima versione.
sudo snap install core; sudo snap refresh core
Infine, installa il client Certbot utilizzando il comando snap e collegalo in modo da poter richiamare il comando certbot da qualsiasi luogo, indipendentemente dalla directory di lavoro corrente.
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
Installa il certificato Let's Encrypt
Usa il comando certbot per creare un certificato Let's Encrypt e configura Apache per utilizzare il certificato.
sudo certbot --apache
Sarà necessario seguire il prompt interattivo e installare il certificato. Poiché ho creato un host virtuale sia per itzgeek.net che per www.itzgeek.net, dovrò anche installare i certificati SSL per entrambi i domini. Quindi, reindirizzerò tutto il traffico a www.itzgeek.net tramite le regole di riscrittura.
Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] << Enter Email ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y << Agree to Terms and Conditions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, 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 our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N << Subscriber to Newsletter Account registered. Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: itzgeek.net 2: www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1,2 << Select the site to Install Let's Encrypt SSL Certificate Requesting a certificate for itzgeek.net and www.itzgeek.net Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/itzgeek.net/fullchain.pem Key is saved at: /etc/letsencrypt/live/itzgeek.net/privkey.pem This certificate expires on 2022-01-21. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for itzgeek.net to /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf Successfully deployed certificate for www.itzgeek.net to /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://itzgeek.net and https://www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Una volta attivato HTTPS per il tuo dominio, il client Certbot collocherà le regole di riscrittura necessarie per reindirizzare il traffico da HTTP al sito HTTPS.
Nel mio caso, ha inserito due regole per i reindirizzamenti sotto.
- http://itzgeek.net>> https://itzgeek.net
- http://www.itzgeek.net>> https://www.itzgeek.net
Come puoi vedere, il primo reindirizzamento non è arrivato alla versione www HTTPS del dominio. Quindi, potrebbe essere necessario seguire la sezione seguente per configurarlo.
Reindirizza le richieste HTTP non www a www HTTPS con Apache
Potresti voler configurare il server web Apache per reindirizzare il traffico dal sito HTTP non www al sito HTTPS WWW, ovvero http://itzgeek.net>> https://www.itzgeek.net .
Modifica il file dell'host virtuale SSL Let's Encrypt (non il file dell'host virtuale originale).
sudo nano /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf
Aggiungi le regole seguenti prima di </VirtualHost>
. Modifica il nome di dominio secondo le tue esigenze.
# Redirect NON-WWW HTTP to WWW HTTPS RewriteEngine on RewriteCond %{SERVER_NAME} =itzgeek.net RewriteRule ^ https://www.itzgeek.net%{REQUEST_URI} [END,NE,R=permanent]1,L]
Quindi, riavvia il servizio Apache.
sudo systemctl restart apache2
Verifica certificato Let's Encrypt
Puoi verificare il certificato Let's Encrypt visitando il tuo sito web.
http://il-tuo-http-sito-webO
https://tuo-https-sito-webDovresti ottenere la versione HTTPS del tuo sito ora.
Test del certificato SSL
Verifica il tuo certificato SSL Let's Encrypt per eventuali problemi e le relative valutazioni di sicurezza andando all'URL sottostante.
https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.netRinnova il certificato Let's Encrypt
Come sai, i certificati Let's Encrypt hanno una validità di 90 giorni e devi assicurarti che vengano rinnovati in tempo. Il processo di rinnovo è ora automatizzato e grazie al servizio systemd fornito dal client Certbot. Quindi, non devi rinnovarli manualmente.
Tuttavia, si consiglia di testare i rinnovi dei certificati simulando il rinnovo automatico dei certificati SSL eseguendo il comando seguente.
sudo certbot renew --dry-run
Risultato:
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/itzgeek.net.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Account registered. Simulating renewal of an existing certificate for itzgeek.net and www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations, all simulated renewals succeeded: /etc/letsencrypt/live/itzgeek.net/fullchain.pem (success) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Se l'output conferma che il rinnovo del test è riuscito, il rinnovo automatico avverrà come previsto.
Conclusione
È tutto. Spero che tu abbia imparato come installare Let's Encrypt SSL Certificate in Apache su Debian 11.