Website-Suche

RHCE-Serie: Implementierung von HTTPS über TLS mithilfe des Network Security Service (NSS) für Apache – Teil 8


Wenn Sie als Systemadministrator für die Wartung und Sicherung eines Webservers verantwortlich sind, können Sie es sich nicht leisten, nicht Ihr Bestes zu geben, um sicherzustellen, dass die von Ihrem Server bereitgestellten oder über ihn übertragenen Daten jederzeit geschützt sind.

Um eine sicherere Kommunikation zwischen Web-Clients und Servern zu gewährleisten, wurde das HTTPS-Protokoll als Kombination aus HTTP und SSL () entwickelt Secure Sockets Layer) oder neuerdings auch TLS (Transport Layer Security).

Aufgrund einiger schwerwiegender Sicherheitsverletzungen wurde SSL zugunsten des robusteren TLS abgeschafft. Aus diesem Grund erklären wir in diesem Artikel, wie Sie Verbindungen zwischen Ihrem Webserver und Clients mithilfe von TLS sichern.

In diesem Tutorial wird davon ausgegangen, dass Sie Ihren Apache-Webserver bereits installiert und konfiguriert haben. Wenn nicht, lesen Sie bitte den folgenden Artikel auf dieser Website, bevor Sie fortfahren.

  1. Installieren Sie LAMP (Linux, MySQL/MariaDB, Apache und PHP) auf RHEL/CentOS 7

Installation von OpenSSL und Dienstprogrammen

Stellen Sie zunächst sicher, dass Apache ausgeführt wird und dass sowohl http als auch https durch die Firewall zugelassen werden:


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

Anschließend installieren Sie die notwendigen Pakete:


yum update && yum install openssl mod_nss crypto-utils

Wichtig: Bitte beachten Sie, dass Sie im obigen Befehl mod_nss durch mod_ssl ersetzen können, wenn Sie OpenSSL-Bibliotheken anstelle von NSS (Network Security Service) zur Implementierung von TLS (welches Sie verwenden, liegt ganz bei Ihnen). , aber wir werden in diesem Artikel NSS verwenden, da es robuster ist; es unterstützt beispielsweise aktuelle Kryptografiestandards wie PKCS #11).

Deinstallieren Sie abschließend mod_ssl, wenn Sie mod_nss verwenden möchten, oder umgekehrt.


yum remove mod_ssl

Konfigurieren von NSS (Network Security Service)

Nach der Installation von mod_nss wird seine Standardkonfigurationsdatei als /etc/httpd/conf.d/nss.conf erstellt. Anschließend sollten Sie sicherstellen, dass alle Anweisungen Listen und VirtualHost auf Port 443 (Standardport für HTTPS) verweisen:


Listen 443
VirtualHost _default_:443

Starten Sie dann Apache neu und prüfen Sie, ob das mod_nss-Modul geladen wurde:


apachectl restart
httpd -M | grep nss

Als nächstes sollten die folgenden Änderungen in der Konfigurationsdatei /etc/httpd/conf.d/nss.conf vorgenommen werden:

1. Geben Sie das NSS-Datenbankverzeichnis an. Sie können das Standardverzeichnis verwenden oder ein neues erstellen. In diesem Tutorial verwenden wir die Standardeinstellung:


NSSCertificateDatabase /etc/httpd/alias

2. Vermeiden Sie die manuelle Eingabe der Passphrase bei jedem Systemstart, indem Sie das Passwort im Datenbankverzeichnis in /etc/httpd/nss-db-password.conf speichern:


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Dabei enthält /etc/httpd/nss-db-password.conf NUR die folgende Zeile und mypassword ist das Passwort, das Sie später für die NSS-Datenbank festlegen:


internal:mypassword

Darüber hinaus sollten seine Berechtigungen und sein Besitz auf 0640 bzw. root:apache festgelegt werden:


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat empfiehlt die Deaktivierung von SSL und allen Versionen von TLS vor TLSv1.0 aufgrund der POODLE SSLv3-Schwachstelle (weitere Informationen hier).

Stellen Sie sicher, dass jede Instanz der NSSProtocol-Direktive wie folgt lautet (Sie werden wahrscheinlich nur eine finden, wenn Sie keine anderen virtuellen Hosts hosten):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache verweigert den Neustart, da es sich um ein selbstsigniertes Zertifikat handelt und den Aussteller nicht als gültig anerkennt. Aus diesem Grund müssen Sie in diesem speziellen Fall Folgendes hinzufügen:


NSSEnforceValidCerts off

5. Obwohl es nicht unbedingt erforderlich ist, ist es wichtig, ein Passwort für die NSS-Datenbank festzulegen:


certutil -W -d /etc/httpd/alias