GNU/Linux >> Linux Esercitazione >  >> FreeBSD

Come proteggere Apache con SSL e Let's Encrypt in FreeBSD

In questo tutorial impareremo come proteggere Apache HTTP server con TLS/SSL certificati 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

TLS/SSL i certificati vengono utilizzati dal server web Apache per crittografare la comunicazione tra i nodi finali, o più ordinario tra il server e il client per fornire sicurezza. Let's Encrypt fornisce certbot utilità della riga di comando, che è un'applicazione che può facilitare il modo in cui puoi ottenere certificati affidabili 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

Fase 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 prima due directory distinte denominate sites-available e abilitati per i siti nella directory di configurazione radice di Apache eseguendo i comandi seguenti.

Lo scopo di queste due directory è quello di facilitare la gestione della configurazione dell'hosting virtuale nel sistema, senza modificare l'Apache principale httpd.conf file di configurazione 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 Apache httpd.conf file con un editor di testo e aggiungi la riga seguente 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. Quindi, abilita il TLS modulo per Apache creando di seguito 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 l'SSL modulo da /usr/local/etc/apache24/httpd.conf file rimuovendo l'hashtag dall'inizio della riga seguente come illustrato di seguito:

LoadModule ssl_module libexec/apache24/mod_ssl.so

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

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

Aggiungi la seguente configurazione di virtualhost 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 da Nomeserver , ServerAlias , Registro errori , Log personalizzato dichiarazioni di conseguenza.

Fase 2:Installa Lets'Encrypt su FreeBSD

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

Durante l'installazione di certbot una serie di prompt verrà visualizzata sullo schermo. Usa lo screenshot qui sotto per configurare certbot utilità. Inoltre, la compilazione e l'installazione dell'utilità certbot potrebbe richiedere del tempo, a seconda delle risorse della macchina.

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

7. Al termine del processo di compilazione, emetti il ​​comando seguente per aggiornare certbot utility e certbot dipendenze richieste.

# pkg install py27-certbot
# pkg install py27-acme

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

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

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

Output del comando Certbot
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]
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 protected]

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

Fase 3:aggiorna i certificati Apache TLS su FreeBSD

10. Per aggiungere i 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 a sites-enabled directory, controlla le configurazioni di Apache per possibili errori di sintassi e, se la sintassi è corretta, riavvia il demone Apache eseguendo 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 su HTTPS porta 443 , immetti 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 confermare 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 openssl comando 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 sottostante.

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


FreeBSD
  1. Come installare e proteggere phpMyAdmin con Apache su CentOS 7

  2. Come proteggere il server Web Apache con Let's Encrypt su RHEL 8

  3. Come installare WonderCMS con Apache e Lets Encrypt SSL su CentOS 8

  4. Come proteggere Nginx con SSL e Let's Encrypt in FreeBSD

  5. Come proteggere una connessione SSL con Apache su Ubuntu 18.04

Come installare Let's Encrypt SSL con Apache su CentOS 7

Come installare Let's Encrypt SSL su Ubuntu con Apache

Come installare Apache con Let's Encrypt SSL su Ubuntu 20.04 LTS

Come utilizzare Let's Encrypt con Cloudflare

Come proteggere Apache con Let's Encrypt SSL Certificate su CentOS 8

Come proteggere un nome host Plesk con SSL