Sådan sikres Apache med SSL, og lad os kryptere i FreeBSD


I denne vejledning lærer vi, hvordan du sikrer Apache HTTP-server med TLS/SSL-certifikater, der tilbydes af Let's Encrypt i FreeBSD 11.x. Vi vil også dække, hvordan man automatiserer processen med certifikatfornyelsen til Lets ’Encrypt.

TLS/SSL-certifikater bruges af Apache-webserveren til at kryptere kommunikationen mellem slutnoder eller mere almindelig mellem serveren og klienten for at give sikkerhed. Let's Encrypt leverer certbot-kommandolinjeværktøj, som er et program, der kan lette den måde, du gratis kan få tillid til certifikater på.

  1. Installation af FreeBSD 11.x
  2. 10 ting at gøre efter FreeBSD-installation
  3. Sådan installeres Apache, MariaDB og PHP i FreeBSD

Trin 1: Konfigurer Apache SSL på FreeBSD

1. Inden du begynder at installere certbot-hjælpeprogrammet og oprette TSL-konfigurationsfilen til Apache, skal du først oprette to forskellige mapper med navnet sites-tilgængelige og sites-aktiverede i Apache-rodkonfigurationsmappe ved at udstede nedenstående kommandoer.

Formålet med disse to kataloger er at lette den virtuelle hosting-konfigurationsstyring i systemet uden at ændre den primære Apache httpd.conf-konfigurationsfil hver gang vi tilføjer en ny virtuel vært.

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

2. Når du har oprettet begge mapper, skal du åbne Apache httpd.conf-filen med en teksteditor og tilføje følgende linje tæt på slutningen af filen som illustreret nedenfor.

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

Tilføj følgende linje:

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

3. Derefter skal du aktivere TLS-modulet til Apache ved at oprette følgende en ny fil med navnet 020_mod_ssl.conf i modules.d-biblioteket med følgende indhold.

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

Tilføj følgende linjer til fil 020_mod_ssl.conf.

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

4. Fjern nu kommentar fra SSL-modulet fra /usr/local/etc/apache24/httpd.conf-filen ved at fjerne hashtag fra begyndelsen af følgende linje som illustreret nedenfor:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Opret derefter TLS-konfigurationsfilen til dit domæne i biblioteker, der er tilgængelige, fortrinsvis med navnet på dit domæne, som vist i nedenstående uddrag:

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

Tilføj følgende virtualhost-konfiguration 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>

Sørg for, at du udskifter domænenavnvariablen fra ServerName, ServerAlias, ErrorLog, CustomLog-udsagn i overensstemmelse hermed.

Trin 2: Installer Lets’Encrypt på FreeBSD

6. På det næste trin skal du udstede følgende kommando for at installere certbot-hjælpeprogrammet leveret af Lad os kryptere, som vil blive brugt til at få Apache TSL-gratis certifikater til dit domæne.

Under installationen af certbot vises en række meddelelser på skærmen. Brug nedenstående skærmbillede til at konfigurere certbot-værktøjet. Kompilering og installation af certbot-hjælpeprogram kan også tage noget tid afhængigt af dine maskinressourcer.

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

7. Når kompileringsprocessen er afsluttet, skal du udstede nedenstående kommando for at opdatere certbot-hjælpeprogrammet og certbot-krævede afhængigheder.

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

8. For at generere et certifikat til dit domæne skal du udstede kommandoen som illustreret nedenfor. Sørg for at angive den korrekte webroot-placering, hvor dine webstedsfiler er gemt i filsystemet (DocumentRoot-direktivet fra din domænekonfigurationsfil) ved hjælp af -w -flagget. Hvis du har flere underdomæner, skal du tilføje dem alle med flag -d .

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

Mens du modtager certifikatet, skal du angive en e-mail-adresse til certifikatfornyelse, trykke på a for at acceptere vilkår og betingelser for Lad os kryptere og n for ikke at dele e-mail-adressen Lad os kryptere 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. Når du har fået certifikaterne til dit domæne, kan du køre kommandoen ls for at vise alle certifikatets komponenter (kæde, privat nøgle, certifikat) som vist i nedenstående eksempel.

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

Trin 3: Opdater Apache TLS-certifikater på FreeBSD

10. For at tilføje Lad os kryptere certifikater til dit websted skal du åbne apache-konfigurationsfilen for dit domæne og opdatere følgende linjer for at afspejle stien til de udstedte certifikater.

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

Tilføj disse TLS-certifikatlinjer:

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. Til sidst skal du aktivere TLS-konfigurationsfilen ved at oprette et symlink til din domæne TLS-konfigurationsfil til webstedsbaseret bibliotek, kontrollere Apache-konfigurationer for mulige syntaksfejl, og hvis syntaksen er OK, genstart Apache-dæmonen ved at udstede nedenstående kommandoer.

# 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 at kontrollere, om Apache-tjenesten lytter til HTTPS-port 443, skal du udstede følgende kommando for at angive httpd-netværksstik.

# sockstat -4 | grep httpd

13. Du kan navigere til din domæneadresse fra en browser via HTTPS-protokol for at bekræfte, at Lad os kryptere certifikater anvendes med succes.

https://www.yourdomain.com

14. For at få ekstra information om det udstedte Lad os kryptere certifikat fra kommandolinjen, skal du bruge openssl-kommandoen som følger.

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

15. Du kan også kontrollere, om trafikken er krypteret med et gyldigt certifikat leveret af Lad os kryptere CA fra en mobilenhed som illustreret i nedenstående mobilskærmbillede.

Det er alt! Klienterne kan nu besøge dit websted sikkert, fordi trafikken, der flyder mellem serveren og klientens browser, er krypteret. For mere komplekse opgaver vedrørende certbot-værktøj, besøg følgende link: https://certbot.eff.org/