Absicherung von Apache mit einem SSL/TLS-Zertifikat
Nach der Implementierung eines SSL/TLS-Zertifikats ist Ihre konfigurierte Domain oder IP-Adresse über HTTPS erreichbar. Beginnen wir mit der Einrichtung.
Im Wesentlichen werden wir die folgenden Schritte durchführen:
- Kompilieren von Apache HTTP 2.4.5 mit dem SSL-Modul
- Einholen eines SSL-Zertifikats
- Konfiguration von Apache zur Unterstützung von SSL
Installation von Apache mit SSL aus den Quellen
Um SSL zu konfigurieren, muss Apache HTTP mit dem Modul mod_ssl kompiliert werden. Ich werde hierfür eine CentOS 7 VM von Digital Ocean verwenden.
- Melden Sie sich als Root auf Ihrem Linux-Server an und laden Sie die neueste Apache-Version herunter.
wget https://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .
Hinweis: Die aktuellste Version finden Sie hier.
- Extrahieren Sie die heruntergeladene Datei mit dem Befehl gunzip
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- Es entsteht ein neuer Ordner namens „httpd-2.4.25“.
- Wechseln Sie in diesen Ordner und führen Sie den folgenden Konfigurationsbefehl aus:
./configure --enable-ssl --enable-so
Hinweis: Bei einer Neuinstallation können Probleme mit APR, PCRE oder OpenSSL auftreten. Beachten Sie hierzu die Anleitung zur Fehlerbehebung.
Stellen Sie sicher, dass der obige Konfigurationsbefehl keine Fehler ausgibt. Als Nächstes installieren Sie Apache mit den folgenden Make-Befehlen:
make
make install
Wie üblich sollten auch diese Befehle fehlerfrei ablaufen. Nach diesen Schritten haben Sie einen Apache-Webserver mit SSL-Unterstützung installiert.
Ein SSL-Zertifikat beschaffen
Es gibt verschiedene Methoden, um ein von einer Zertifizierungsstelle signiertes SSL-Zertifikat zu erzeugen und zu erhalten.
Wenn Sie SSL für einen Intranet-Webserver einrichten möchten, verfügen die meisten Unternehmen über ein internes Team zur Ausstellung von Zertifikaten. Kontaktieren Sie dieses Team. Sie benötigen jedoch einen CSR (Certificate Signing Request). Diesen können Sie mit OpenSSL erstellen.
Wenn Sie eine öffentliche URL absichern möchten, können Sie ein Zertifikat von Anbietern wie VeriSign, GoDaddy, Namecheap oder ZeroSSL erwerben oder ein KOSTENLOSES Zertifikat von Let’s Encrypt beziehen.
Let’s Encrypt ist ein gemeinsames Projekt der Linux Foundation, das kostenlose SSL/TLS-Zertifikate anbietet. Ich werde Let’s Encrypt verwenden, um ein Zertifikat für meine Domain – Chandan.io – zu beziehen.
Es gibt verschiedene Wege, einen CSR zu generieren. Am einfachsten finde ich die Verwendung des Online-Tools „SSL for Free“.
Geben Sie die URL ein, die Sie sichern möchten.
Bestätigen Sie den Domain-Besitz mit einer der angebotenen Methoden und laden Sie Ihre Zertifikatsdateien herunter.
Sie erhalten drei Dateien, die wir im nächsten Schritt zur Konfiguration des Apache-Webservers benötigen:
- key – Ihre private Schlüsseldatei, die Sie nicht öffentlich teilen sollten.
- certificate – Das eigentliche SSL-Zertifikat für Ihre Domain.
- ca_bundle – Das Stamm-/Zwischenzertifikat der ausstellenden Zertifizierungsstelle.
Übertragen Sie die heruntergeladenen Dateien auf Ihren Webserver. Wir werden sie bald verwenden.
Apache SSL-Konfiguration
Im letzten Schritt konfigurieren wir Apache so, dass Anfragen über HTTPS verarbeitet werden.
- Melden Sie sich auf Ihrem Apache-Webserver an.
- Erstellen Sie eine Sicherungskopie Ihrer Datei httpd.conf (standardmäßig unter /usr/local/apache2/conf/).
- Öffnen Sie die Datei mit einem Texteditor (z.B. vi) und vergewissern Sie sich, dass die Module mod_ssl und die Datei httpd-ssl.conf existieren und nicht auskommentiert sind.
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
Wir verwenden die Datei httpd-ssl.conf, um die Details des Zertifikats zu konfigurieren. Stellen Sie sicher, dass folgende Parameter korrekt gesetzt sind:
- SSLCertificateFile – Pfad zur CRT-Datei des Zertifikats, die Sie zuvor heruntergeladen haben.
- SSLCertificateKeyFile – Pfad zur privaten Schlüsseldatei (.key).
- SSLCertificateChainFile – Pfad zur Datei „ca_bundle.crt“.
Tipp: Erstellen Sie einen neuen Ordner namens „ssl“ und speichern Sie dort alle Zertifikatsdateien.
- Erstellen Sie bei Bedarf eine Sicherungskopie der Datei und ändern Sie sie mit einem Texteditor.
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt"
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"
Als Nächstes konfigurieren Sie die Direktive „ServerName“. Normalerweise ist dies Ihr Domain- oder URL-Name.
ServerName chandan.io
- Speichern Sie die Datei und starten Sie den Apache Webserver neu.
cd /usr/local/apache2/bin
./apachectl stop
./apachectl start
Zu guter Letzt müssen Sie sicherstellen, dass Ihre Domain der IP-Adresse des neu konfigurierten Webservers zugewiesen ist. Versuchen Sie anschließend, über HTTPS auf Ihre Domain zuzugreifen.
Wie Sie sehen, ist Chandan.io über HTTPS mit dem von mir konfigurierten Zertifikat erreichbar.
Die genannten Schritte sind grundlegend für die Einrichtung eines SSL-Zertifikats. Es ist wichtig, SSL weiter zu optimieren, um die Sicherheit zu erhöhen. Bevor Sie den Webserver in Betrieb nehmen, sollten Sie zudem einen SSL/TLS-Test durchführen, um häufige Sicherheitslücken auszuschließen.
Ich hoffe, dies gibt Ihnen einen guten Überblick darüber, wie Sie ein SSL-Zertifikat auf Ihrem Apache-Webserver einrichten, um Ihre URL über HTTPS erreichbar zu machen.
Hat Ihnen der Artikel gefallen? Teilen Sie ihn gerne mit anderen!