Ricerca nel sito web

Come proteggere Apache con SSL e crittografare in FreeBSD


In questo tutorial impareremo come proteggere il server Apache HTTP con i certificati TLS/SSL offerti da Let's Encrypt in FreeBSD 11. x. Tratteremo anche come automatizzare il processo di rinnovo del certificato per Lets' Encrypt.

Leggi anche: Installa Let's Encrypt per Nginx su FreeBSD

I certificati TLS/SSL vengono utilizzati dal server Web Apache per crittografare la comunicazione tra i nodi finali o, più comunemente, tra il server e il client al fine di fornire sicurezza. Let's Encrypt fornisce l'utilità della riga di comando certbot, un'applicazione che può facilitare il modo in cui è possibile ottenere certificati attendibili gratuitamente.

Requisiti:

  1. Installazione di FreeBSD 11.x
  2. 10 cose da fare dopo l'installazione di FreeBSD
  3. Come installare Apache, MariaDB e PHP in FreeBSD

Passaggio 1: configura Apache SSL su FreeBSD

1. Prima di iniziare a installare l'utilità certbot e creare il file di configurazione TSL per Apache, crea innanzitutto due directory distinte denominate sites-available e sites-enabled nella directory di configurazione root di Apache immettendo i comandi seguenti.

Lo scopo di queste due directory è facilitare la gestione della configurazione dell'hosting virtuale nel sistema, senza modificare il file di configurazione principale di Apache httpd.conf ogni volta che aggiungiamo un nuovo host virtuale.

mkdir /usr/local/etc/apache24/sites-available
mkdir /usr/local/etc/apache24/sites-enabled

2. Dopo aver creato entrambe le directory, apri il file Apache httpd.conf con un editor di testo e aggiungi la seguente riga vicino alla fine del file come illustrato di seguito.

nano /usr/local/etc/apache24/httpd.conf

Aggiungi la seguente riga:

IncludeOptional etc/apache24/sites-enabled/*.conf

3. Successivamente, abilita il modulo TLS per Apache creando quanto segue un nuovo file denominato 020_mod_ssl.conf in modules.d< directory con il seguente contenuto.

nano /usr/local/etc/apache24/modules.d/020_mod_ssl.conf

Aggiungi le seguenti righe al file 020_mod_ssl.conf.

Listen 443
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCacheTimeout  300

4. Ora decommenta il modulo SSL dal file /usr/local/etc/apache24/httpd.conf rimuovendo l'hashtag dall'inizio della riga seguente come di seguito illustrato:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Successivamente, crea il file di configurazione TLS per il tuo dominio nella directory siti disponibili, preferibilmente con il nome del tuo dominio, come presentato in il seguente estratto:

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Aggiungi la seguente configurazione dell'host virtuale al file bsd.lan-ssl.conf.

<VirtualHost *:443>
    ServerName www.yourdomain.com
	ServerAlias yourdomain.com
                DocumentRoot "/usr/local/www/apache24/data/"
	SSLEngine on

	SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/usr/local/www/apache24/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

	BrowserMatch "MSIE [2-5]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0

	CustomLog "/var/log/apache/httpd-ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

	<Directory "/usr/local/www/apache24/data/">
            Options Indexes FollowSymLinks MultiViews
        #AllowOverride controls what directives may be placed in .htaccess files.       
                        AllowOverride All
        #Controls who can get stuff from this server file
                        Require all granted
        </Directory>
       
    ErrorLog "/var/log/apache/yourdomain.ssl-error.log"
    CustomLog "/var/log/apache/yourdomain.ssl-access_log" combined

</VirtualHost>

Assicurati di sostituire la variabile del nome di dominio dalle istruzioni ServerName, ServerAlias, ErrorLog, CustomLog di conseguenza.

Passaggio 2: installa Lets'Encrypt su FreeBSD

6. Nel passaggio successivo, emetti il seguente comando per installare l'utilità certbot fornita da Let's Encrypt, che verrà utilizzata per ottenere Certificati gratuiti Apache TSL per il tuo dominio.

Durante l'installazione di certbot verrà visualizzata una serie di istruzioni sullo schermo. Utilizza lo screenshot seguente per configurare l'utilità certbot. Inoltre, la compilazione e l'installazione dell'utilità certbot potrebbero richiedere del tempo, a seconda delle risorse del computer.

cd /usr/ports/security/py-certbot
make install clean

7. Al termine del processo di compilazione, eseguire il comando seguente per aggiornare l'utilità certbot e le dipendenze richieste da certbot.

pkg install py27-certbot
pkg install py27-acme

8. Per generare un certificato per il tuo dominio, esegui il comando come illustrato di seguito. Assicurati di fornire la posizione webroot corretta in cui i file del tuo sito web sono archiviati nel file system (direttiva DocumentRoot dal file di configurazione del tuo dominio) utilizzando il flag -w. Se hai più sottodomini aggiungili tutti con il flag -d.

certbot certonly --webroot -w /usr/local/www/apache24/data/ -d yourdomain.com -d www.yourdomain.com

Durante l'ottenimento del certificato, fornisci un indirizzo email per il rinnovo del certificato, premi a per accettare i termini e le condizioni di Let's Encrypt e n per non condividere l'indirizzo email con i partner Let's Encrypt.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email 
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email 

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.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 www.domain.com Using the webroot path /usr/local/www/apache24/data for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-11-15. 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" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/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

9. Dopo aver ottenuto i certificati per il tuo dominio, puoi eseguire il comando ls per elencare tutti i componenti del certificato (catena, chiave privata, certificato) come presentato nell'esempio seguente.

ls -al /usr/local/etc/letsencrypt/live/www.yourdomain.com/

Passaggio 3: aggiorna i certificati Apache TLS su FreeBSD

10. Per aggiungere certificati Let's Encrypt al tuo sito web, apri il file di configurazione di Apache per il tuo dominio e aggiorna le seguenti righe per riflettere il percorso dei certificati emessi.

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Aggiungi queste righe di certificato TLS:

SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

11. Infine, abilita il file di configurazione TLS, creando un collegamento simbolico per il file di configurazione TLS del tuo dominio alla directory sites-enabled, controlla le configurazioni Apache per possibili errori di sintassi e, se la sintassi è OK, riavvia il demone Apache emettendo i comandi seguenti.

ln -sf /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf /usr/local/etc/apache24/sites-enabled/
apachectl -t
service apache24 restart

12. Per verificare se il servizio Apache è in ascolto sulla porta HTTPS 443, emettere il seguente comando per elencare i socket di rete httpd.

sockstat -4 | grep httpd

13. Puoi accedere al tuo indirizzo di dominio da un browser tramite il protocollo HTTPS per verificare che i certificati Let's Encrypt siano stati applicati correttamente.

https://www.yourdomain.com

14. Per ottenere ulteriori informazioni sul certificato Let's Encrypt emesso dalla riga di comando, utilizzare il comando openssl come segue.

openssl s_client -connect www.yourdomain.com:443

15. Puoi anche verificare se il traffico è crittografato con un certificato valido fornito da Let's Encrypt CA da un dispositivo mobile, come illustrato nello screenshot mobile di seguito.

È tutto! I clienti possono ora visitare il tuo sito web in modo sicuro, perché il traffico che scorre tra il server e il browser del cliente è crittografato. Per attività più complesse riguardanti l'utilità certbot, visitare il seguente collegamento: https://certbot.eff.org/