Hvordan sikre Apache med SSL og la oss kryptere i FreeBSD


I denne opplæringen lærer vi hvordan du sikrer Apache HTTP-server med TLS/SSL-sertifikater som tilbys av Let's Encrypt i FreeBSD 11.x. Vi vil også dekke hvordan du automatiserer prosessen med sertifikatfornyelsen for Lets’ Encrypt.

TLS/SSL-sertifikater brukes av Apache webserver for å kryptere kommunikasjonen mellom endenoder, eller mer ordinære mellom server og klient for å gi sikkerhet. Let's Encrypt tilbyr certbot kommandolinjeverktøy, som er et program som kan lette måten du kan få pålitelige sertifikater gratis på.

  1. Installasjon av FreeBSD 11.x
  2. 10 ting å gjøre etter FreeBSD-installasjon
  3. Hvordan installerer du Apache, MariaDB og PHP i FreeBSD

Trinn 1: Konfigurer Apache SSL på FreeBSD

1. Før du begynner å installere certbot-verktøyet og opprette TSL-konfigurasjonsfilen for Apache, må du først opprette to distinkte kataloger kalt sites-available og sites-enabled i Apaches rotkonfigurasjonskatalog ved å utstede kommandoene nedenfor.

Hensikten med disse to katalogene er å forenkle administrasjonen av virtuell vertskonfigurasjon i systemet, uten å endre hovedkonfigurasjonsfilen for Apache httpd.conf hver gang vi legger til en ny virtuell vert.

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

2. Etter at du har opprettet begge katalogene, åpner du Apache httpd.conf-fil med et tekstredigeringsprogram og legger til følgende linje nær slutten av filen som illustrert nedenfor.

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

Legg til følgende linje:

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

3. Aktiver deretter TLS-modulen for Apache ved å lage følgende, en ny fil kalt 020_mod_ssl.conf i modules.d-katalogen med følgende innhold.

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

Legg til følgende linjer i filen 020_mod_ssl.conf.

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

4. Fjern nå SSL-modulen fra /usr/local/etc/apache24/httpd.conf-filen ved å fjerne hashtaggen fra begynnelsen av følgende linje som illustrert nedenfor:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Deretter oppretter du TLS-konfigurasjonsfilen for domenet ditt i katalogen som er tilgjengelig for nettsteder, fortrinnsvis med navnet på domenet ditt, som presentert i utdraget nedenfor:

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

Legg til følgende virtualhost-konfigurasjon til filen 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>

Pass på at du erstatter domenenavnvariabelen fra ServerName, ServerAlias, ErrorLog, CustomLog-setninger tilsvarende.

Trinn 2: Installer Lets’Encrypt på FreeBSD

6. På neste trinn, utsted følgende kommando for å installere certbot-verktøyet levert av Let's Encrypt, som vil bli brukt til å skaffe Apache TSL gratis sertifikater for domenet ditt.

Mens du installerer certbot, vil en rekke meldinger vises på skjermen. Bruk skjermbildet nedenfor for å konfigurere certbot-verktøyet. Det kan også ta litt tid å kompilere og installere certbot-verktøyet, avhengig av maskinressursene dine.

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

7. Etter at kompileringsprosessen er fullført, utfør kommandoen nedenfor for å oppdatere certbot-verktøyet og nødvendige avhengigheter for certbot.

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

8. For å generere et sertifikat for domenet ditt, utsted kommandoen som illustrert nedenfor. Sørg for at du oppgir riktig webroot-plassering der nettstedfilene dine er lagret i filsystemet (DocumentRoot-direktivet fra domenekonfigurasjonsfilen) ved å bruke -w-flagget. Hvis du har flere underdomener, legg til alle med -d-flagget.

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

Mens du skaffer sertifikatet, oppgi en e-postadresse for sertifikatfornyelse, trykk på a for å godta Let's Encrypt vilkår og betingelser og n for ikke å dele e-postadressen Let's Encrypt-partnere.

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. Etter at du har fått sertifikatene for domenet ditt, kan du kjøre ls-kommandoen for å liste alle sertifikatkomponentene (kjede, privat nøkkel, sertifikat) som vist i eksemplet nedenfor.

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

Trinn 3: Oppdater Apache TLS-sertifikater på FreeBSD

10. For å legge til Let's Encrypt-sertifikater til nettstedet ditt, åpne apache-konfigurasjonsfilen for domenet ditt og oppdater følgende linjer for å gjenspeile banen til de utstedte sertifikatene.

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

Legg til disse TLS-sertifikatlinjene:

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. Aktiver til slutt TLS-konfigurasjonsfilen, ved å lage en symbolkobling for domenets TLS-konfigurasjonsfil til nettstedaktivert katalog, sjekk Apache-konfigurasjoner for mulige syntaksfeil og, hvis syntaksen er OK, start Apache-demonen på nytt ved å utstede kommandoene nedenfor.

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

12. For å sjekke om Apache-tjenesten lytter på HTTPS-port 443, utfør følgende kommando for å liste httpd-nettverkskontakter.

# sockstat -4 | grep httpd

13. Du kan navigere til domeneadressen din fra en nettleser via HTTPS-protokollen for å bekrefte at Let's Encrypt-sertifikater er brukt.

https://www.yourdomain.com

14. For å få ekstra informasjon om det utstedte Let's Encrypt-sertifikatet fra kommandolinjen, bruk openssl-kommandoen som følger.

# openssl s_client -connect www.yourdomain.com:443

15. Du kan også verifisere om trafikken er kryptert med et gyldig sertifikat levert av Let's Encrypt CA fra en mobilenhet som illustrert i mobilskjermbildet nedenfor.

Det er alt! Kundene kan nå besøke nettstedet ditt sikkert, fordi trafikken som flyter mellom serveren og klientens nettleser er kryptert. For mer komplekse oppgaver angående certbot-verktøyet besøk følgende lenke: https://certbot.eff.org/