Website-Suche

So sichern Sie Apache mit SSL und Let’s Encrypt in FreeBSD


In diesem Tutorial erfahren Sie, wie Sie den Apache HTTP-Server mit TLS/SSL-Zertifikaten sichern, die von Let's Encrypt in FreeBSD 11 angeboten werden. x. Außerdem erfahren Sie, wie Sie den Prozess der Zertifikatserneuerung für Lets’ Encrypt automatisieren können.

Lesen Sie auch: Installieren Sie Let’s Encrypt für Nginx unter FreeBSD

TLS/SSL-Zertifikate werden vom Apache-Webserver verwendet, um die Kommunikation zwischen Endknoten oder, allgemeiner gesagt, zwischen dem Server und dem Client zu verschlüsseln, um Sicherheit zu gewährleisten. Let’s Encrypt bietet das Befehlszeilendienstprogramm certbot, eine Anwendung, die Ihnen den kostenlosen Erhalt vertrauenswürdiger Zertifikate erleichtern kann.

Anforderungen:

  1. Installation von FreeBSD 11.x
  2. 10 Dinge, die nach der FreeBSD-Installation zu tun sind
  3. So installieren Sie Apache, MariaDB und PHP in FreeBSD

Schritt 1: Konfigurieren Sie Apache SSL unter FreeBSD

1. Bevor Sie mit der Installation des Dienstprogramms certbot und der Erstellung der TSL-Konfigurationsdatei für Apache beginnen, erstellen Sie zunächst zwei unterschiedliche Verzeichnisse mit den Namen sites-available und sites-enabled im Apache-Stammkonfigurationsverzeichnis, indem Sie die folgenden Befehle ausführen.

Der Zweck dieser beiden Verzeichnisse besteht darin, die Verwaltung der virtuellen Hosting-Konfiguration im System zu erleichtern, ohne jedes Mal, wenn wir einen neuen virtuellen Host hinzufügen, die Hauptkonfigurationsdatei von Apache httpd.conf zu ändern.

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

2. Nachdem Sie beide Verzeichnisse erstellt haben, öffnen Sie die Apache-Datei httpd.conf mit einem Texteditor und fügen Sie die folgende Zeile am Ende der Datei hinzu, wie unten dargestellt.

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

Fügen Sie die folgende Zeile hinzu:

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

3. Als nächstes aktivieren Sie das TLS-Modul für Apache, indem Sie in modules.d< die folgende neue Datei mit dem Namen 020_mod_ssl.conf erstellen Verzeichnis mit folgendem Inhalt.

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

Fügen Sie der Datei 020_mod_ssl.conf die folgenden Zeilen hinzu.

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

4. Kommentieren Sie nun das SSL-Modul aus der Datei /usr/local/etc/apache24/httpd.conf aus, indem Sie den Hashtag vom Anfang entfernen der folgenden Zeile, wie unten dargestellt:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Erstellen Sie als Nächstes die TLS-Konfigurationsdatei für Ihre Domain im Verzeichnis sites-available, vorzugsweise mit dem Namen Ihrer Domain, wie in dargestellt der folgende Auszug:

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

Fügen Sie der Datei bsd.lan-ssl.conf die folgende Virtualhost-Konfiguration hinzu.

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

Stellen Sie sicher, dass Sie die Domänennamenvariable in den Anweisungen ServerName, ServerAlias, ErrorLog und CustomLog entsprechend ersetzen.

Schritt 2: Installieren Sie Lets’Encrypt unter FreeBSD

6. Geben Sie im nächsten Schritt den folgenden Befehl ein, um das von Let's Encrypt bereitgestellte Dienstprogramm certbot zu installieren, das zum Abrufen von < verwendet wird starke>Apache TSL kostenlose Zertifikate für Ihre Domain.

Während der Installation von certbot wird eine Reihe von Eingabeaufforderungen auf Ihrem Bildschirm angezeigt. Verwenden Sie den folgenden Screenshot, um das Dienstprogramm certbot zu konfigurieren. Außerdem kann das Kompilieren und Installieren des Certbot-Dienstprogramms je nach den Ressourcen Ihres Computers einige Zeit dauern.

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

7. Nachdem der Kompilierungsprozess abgeschlossen ist, geben Sie den folgenden Befehl ein, um das Dienstprogramm certbot und die erforderlichen Abhängigkeiten von certbot zu aktualisieren.

pkg install py27-certbot
pkg install py27-acme

8. Um ein Zertifikat für Ihre Domain zu generieren, geben Sie den Befehl wie unten dargestellt ein. Stellen Sie sicher, dass Sie den richtigen Webroot-Speicherort angeben, an dem Ihre Website-Dateien im Dateisystem gespeichert sind (DocumentRoot-Anweisung aus Ihrer Domain-Konfigurationsdatei), indem Sie das Flag -w verwenden. Wenn Sie mehrere Subdomains haben, fügen Sie diese alle mit dem Flag -d hinzu.

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

Geben Sie beim Erhalten des Zertifikats eine E-Mail-Adresse für die Zertifikatsverlängerung an, drücken Sie a, um den Allgemeinen Geschäftsbedingungen von Let’s Encrypt zuzustimmen, und n, um die E-Mail-Adresse nicht an Let’s Encrypt-Partner weiterzugeben.

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. Nachdem Sie die Zertifikate für Ihre Domäne erhalten haben, können Sie den Befehl ls ausführen, um alle Zertifikatskomponenten (Kette, privater Schlüssel, Zertifikat) aufzulisten, wie im folgenden Beispiel dargestellt.

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

Schritt 3: Aktualisieren Sie die Apache TLS-Zertifikate unter FreeBSD

10. Um Let’s Encrypt-Zertifikate zu Ihrer Website hinzuzufügen, öffnen Sie die Apache-Konfigurationsdatei für Ihre Domain und aktualisieren Sie die folgenden Zeilen, um den Pfad der ausgestellten Zertifikate widerzuspiegeln.

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

Fügen Sie diese TLS-Zertifikatzeilen hinzu:

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. Aktivieren Sie abschließend die TLS-Konfigurationsdatei, indem Sie einen symbolischen Link für die TLS-Konfigurationsdatei Ihrer Domäne zum sites-enabled-Verzeichnis erstellen, überprüfen Sie die Apache-Konfigurationen auf mögliche Syntaxfehler und prüfen Sie ggf Die Syntax ist in Ordnung. Starten Sie den Apache-Daemon neu, indem Sie die folgenden Befehle ausführen.

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

12. Um zu überprüfen, ob der Apache-Dienst den HTTPS-Port 443 überwacht, geben Sie den folgenden Befehl ein, um httpd-Netzwerk-Sockets aufzulisten.

sockstat -4 | grep httpd

13. Sie können von einem Browser über das HTTPS-Protokoll zu Ihrer Domain-Adresse navigieren, um zu bestätigen, dass Let’s Encrypt-Zertifikate erfolgreich angewendet wurden.

https://www.yourdomain.com

14. Um zusätzliche Informationen über das ausgestellte Let’s Encrypt-Zertifikat über die Befehlszeile zu erhalten, verwenden Sie den Befehl openssl wie folgt.

openssl s_client -connect www.yourdomain.com:443

15. Sie können auch von einem Mobilgerät aus überprüfen, ob der Datenverkehr mit einem gültigen Zertifikat von Let’s Encrypt CA verschlüsselt ist, wie im folgenden mobilen Screenshot dargestellt.

Das ist alles! Die Kunden können Ihre Website jetzt sicher besuchen, da der Datenverkehr, der zwischen dem Server und dem Browser des Kunden fließt, verschlüsselt ist. Für komplexere Aufgaben im Zusammenhang mit dem Certbot-Dienstprogramm besuchen Sie den folgenden Link: https://certbot.eff.org/