Zoeken op website

Hoe Apache te beveiligen met SSL en Let's Encrypt in FreeBSD


In deze tutorial leren we hoe u de Apache HTTP-server kunt beveiligen met TLS/SSL-certificaten aangeboden door Let's Encrypt in FreeBSD 11. x. We bespreken ook hoe u het proces van certificaatvernieuwing voor Lets’ Encrypt kunt automatiseren.

Lees ook: Installeer Let's Encrypt voor Nginx op FreeBSD

TLS/SSL-certificaten worden door de Apache-webserver gebruikt om de communicatie tussen eindknooppunten, of meer gebruikelijk tussen de server en de client, te coderen om beveiliging te bieden. Let’s Encrypt biedt het opdrachtregelhulpprogramma certbot, een applicatie waarmee u gratis vertrouwde certificaten kunt verkrijgen.

Vereisten:

  1. Installatie van FreeBSD 11.x
  2. 10 dingen die u kunt doen na de installatie van FreeBSD
  3. Hoe Apache, MariaDB en PHP in FreeBSD te installeren

Stap 1: Configureer Apache SSL op FreeBSD

1. Voordat u begint met het installeren van het certbot-hulpprogramma en het TSL-configuratiebestand voor Apache maakt, maakt u eerst twee afzonderlijke mappen met de namen sites-available en >sites-enabled in de Apache root-configuratiemap door de onderstaande opdrachten uit te voeren.

Het doel van deze twee mappen is om het configuratiebeheer van de virtuele hosting in het systeem te vergemakkelijken, zonder het belangrijkste Apache httpd.conf configuratiebestand te wijzigen telkens wanneer we een nieuwe virtuele host toevoegen.

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

2. Nadat u beide mappen heeft aangemaakt, opent u het Apache httpd.conf bestand met een teksteditor en voegt u de volgende regel toe aan het einde van het bestand, zoals hieronder geïllustreerd.

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

Voeg de volgende regel toe:

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

3. Schakel vervolgens de TLS module voor Apache in door het volgende nieuwe bestand te maken met de naam 020_mod_ssl.conf in modules.d< map met de volgende inhoud.

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

Voeg de volgende regels toe aan bestand 020_mod_ssl.conf.

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

4. Verwijder nu de commentaartekens voor de SSL module uit het /usr/local/etc/apache24/httpd.conf bestand door de hashtag vanaf het begin te verwijderen van de volgende regel, zoals hieronder geïllustreerd:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Maak vervolgens het TLS-configuratiebestand voor uw domein in de map sites-available, bij voorkeur met de naam van uw domein, zoals weergegeven in het onderstaande fragment:

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

Voeg de volgende virtualhost-configuratie toe aan bestand 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>

Zorg ervoor dat u de domeinnaamvariabele uit de instructies ServerName, ServerAlias, ErrorLog en CustomLog vervangt.

Stap 2: Installeer Lets’Encrypt op FreeBSD

6. Voer bij de volgende stap de volgende opdracht uit om het hulpprogramma certbot van Let's Encrypt te installeren, dat zal worden gebruikt om Apache TSL gratis certificaten voor uw domein.

Tijdens het installeren van certbot wordt een reeks prompts op uw scherm weergegeven. Gebruik de onderstaande schermafbeelding om het hulpprogramma certbot te configureren. Bovendien kan het compileren en installeren van het certbot-hulpprogramma enige tijd duren, afhankelijk van de bronnen van uw machine.

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

7. Nadat het compilatieproces is voltooid, voert u de onderstaande opdracht uit om het hulpprogramma certbot en de vereiste afhankelijkheden van certbot bij te werken.

pkg install py27-certbot
pkg install py27-acme

8. Om een certificaat voor uw domein te genereren, geeft u de opdracht op zoals hieronder geïllustreerd. Zorg ervoor dat u de juiste webroot-locatie opgeeft waar uw websitebestanden zijn opgeslagen in het bestandssysteem (DocumentRoot richtlijn uit uw domeinconfiguratiebestand) met behulp van de vlag -w. Als u meerdere subdomeinen heeft, kunt u ze allemaal toevoegen met de vlag -d.

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

Terwijl u het certificaat verkrijgt, geeft u een e-mailadres op voor certificaatvernieuwing, drukt u op a om akkoord te gaan met de algemene voorwaarden van Let's Encrypt en op n om het e-mailadres niet te delen met Let's Encrypt-partners.

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. Nadat u de certificaten voor uw domein heeft verkregen, kunt u de opdracht ls uitvoeren om alle certificaatcomponenten (keten, privésleutel, certificaat) weer te geven, zoals weergegeven in het onderstaande voorbeeld.

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

Stap 3: Update Apache TLS-certificaten op FreeBSD

10. Om Let's Encrypt-certificaten aan uw website toe te voegen, opent u het apache-configuratiebestand voor uw domein en werkt u de volgende regels bij om het pad van de uitgegeven certificaten weer te geven.

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

Voeg deze TLS-certificaatregels toe:

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. Schakel ten slotte het TLS-configuratiebestand in door een symbolische link voor uw domein-TLS-configuratiebestand te maken naar de map sites-enabled. Controleer de Apache-configuraties op mogelijke syntaxisfouten en, indien de syntaxis is OK, start Apache daemon opnieuw door de onderstaande opdrachten uit te voeren.

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

12. Om te controleren of de Apache-service luistert op HTTPS poort 443, voert u de volgende opdracht uit om httpd-netwerksockets weer te geven.

sockstat -4 | grep httpd

13. U kunt vanuit een browser via het HTTPS-protocol naar uw domeinadres navigeren om te bevestigen dat Let's Encrypt-certificaten met succes zijn toegepast.

https://www.yourdomain.com

14. Om extra informatie over het uitgegeven Let's Encrypt-certificaat te verkrijgen vanaf de opdrachtregel, gebruikt u de opdracht openssl als volgt.

openssl s_client -connect www.yourdomain.com:443

15. U kunt ook verifiëren of het verkeer is gecodeerd met een geldig certificaat van Let's Encrypt CA vanaf een mobiel apparaat, zoals geïllustreerd in de onderstaande mobiele schermafbeelding.

Dat is alles! De klanten kunnen uw website nu veilig bezoeken, omdat het verkeer dat tussen de server en de browser van de klant stroomt, gecodeerd is. Bezoek de volgende link voor meer complexe taken met betrekking tot het certbot-hulpprogramma: https://certbot.eff.org/