Website-Suche

So erstellen Sie ein lokales selbstsigniertes SSL-Zertifikat unter CentOS 8


SSL (Secure Socket Layer) und seine verbesserte Version, TLS (Transport Socket Layer), sind Sicherheitsprotokolle die zum Sichern des Webdatenverkehrs verwendet werden, der vom Webbrowser eines Clients an einen Webserver gesendet wird.

Ein SSL-Zertifikat ist ein digitales Zertifikat, das einen sicheren Kanal zwischen dem Browser eines Clients und einem Webserver erstellt. Dabei werden sensible und vertrauliche Daten wie Kreditkartendaten, Anmeldedaten und andere sehr private Informationen verschlüsselt, sodass Hacker Ihre Daten nicht abhören und stehlen können.

Was ist ein selbstsigniertes SSL-Zertifikat?

Ein selbstsigniertes SSL-Zertifikat ist im Gegensatz zu anderen SSL-Zertifikaten, die von einer Zertifizierungsstelle (CA) signiert und vertrauenswürdig sind, ein von dieser signiertes Zertifikat eine Person, der es gehört.

Die Erstellung ist völlig kostenlos und eine kostengünstige Möglichkeit, Ihren lokal gehosteten Webserver zu verschlüsseln. Aus folgenden Gründen wird jedoch von der Verwendung eines selbstsignierten SSL-Zertifikats in Produktionsumgebungen dringend abgeraten:

  1. Da es nicht von einer Zertifizierungsstelle signiert ist, generiert ein selbstsigniertes SSL-Zertifikat Warnungen in Webbrowsern, die Benutzer vor potenziellen Risiken warnen, falls sie sich entscheiden, fortzufahren. Diese Warnungen sind unerwünscht und halten Benutzer vom Besuch Ihrer Website ab, was möglicherweise zu einem Rückgang des Webverkehrs führt. Um diese Warnungen zu umgehen, ermutigen Unternehmen ihre Mitarbeiter normalerweise, die Warnungen einfach zu ignorieren und fortzufahren. Dies kann zu einer gefährlichen Angewohnheit bei Benutzern führen, die diese Warnungen auf anderen Online-Sites weiterhin ignorieren und möglicherweise Opfer von Phishing-Sites werden.
  2. Selbstsignierte Zertifikate weisen ein niedriges Sicherheitsniveau auf, da sie Verschlüsselungstechnologien und Hashes auf niedriger Ebene implementieren. Daher entspricht das Sicherheitsniveau möglicherweise nicht den Standardsicherheitsrichtlinien.
  3. Darüber hinaus gibt es keine Unterstützung für Public Key Infrastructure (PKI)-Funktionen.

Allerdings ist die Verwendung eines selbstsignierten SSL-Zertifikats keine schlechte Idee, um Dienste und Anwendungen auf einem lokalen Computer zu testen, der eine TLS/SSL-Verschlüsselung erfordert.

In dieser Anleitung erfahren Sie, wie Sie ein lokales selbstsigniertes SSL-Zertifikat auf dem Apache localhost-Webserver auf einem CentOS 8-Serversystem installieren.

Voraussetzungen:

Stellen Sie vor Beginn sicher, dass Sie über die folgenden Grundvoraussetzungen verfügen:

  1. Eine Instanz des CentOS 8-Servers.
  2. Auf dem Server installierter Apache-Webserver
  3. Ein Hostname, der bereits in der Datei /etc/hosts konfiguriert und definiert ist. Für diese Anleitung verwenden wir tecmint.local, einen Hostnamen für unseren Server.

Schritt 1: Mod_SSL unter CentOS installieren

1. Zunächst müssen Sie überprüfen, ob der Apache-Webserver installiert ist und ausgeführt wird.

sudo systemctl status httpd

Hier ist die erwartete Ausgabe.

Wenn der Webserver nicht läuft, können Sie ihn beim Booten mit dem Befehl starten und aktivieren.

sudo systemctl start httpd
sudo systemctl enable httpd

Anschließend können Sie überprüfen, ob Apache aktiv ist.

2. Um die Installation und Einrichtung des lokalen selbstsignierten SSL-Zertifikats zu ermöglichen, ist das Paket mod_ssl erforderlich.

sudo dnf install mod_ssl

Nach der Installation können Sie die Installation durch Ausführen überprüfen.

sudo rpm -q mod_ssl

Stellen Sie außerdem sicher, dass das OpenSSL-Paket installiert ist (OpenSSL ist standardmäßig in CentOS 8 installiert).

sudo rpm -q openssl 

Schritt 2: Erstellen Sie ein lokales selbstsigniertes SSL-Zertifikat für Apache

3. Wenn der Apache-Webserver und alle Voraussetzungen überprüft sind, müssen Sie ein Verzeichnis erstellen, in dem die kryptografischen Schlüssel gespeichert werden.

In diesem Beispiel haben wir ein Verzeichnis unter /etc/ssl/private erstellt.

sudo mkdir -p /etc/ssl/private

Erstellen Sie nun den lokalen SSL-Zertifikatsschlüssel und die Datei mit dem folgenden Befehl:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Werfen wir einen Blick darauf, wofür einige der Optionen im Befehl tatsächlich stehen:

  • req -x509 – Dies zeigt an, dass wir die x509 Certificate Signing Request (CSR) verwenden.
  • -nodes – Diese Option weist OpenSSL an, die Verschlüsselung des SSL-Zertifikats mithilfe einer Passphrase zu überspringen. Die Idee dabei ist, dass Apache die Datei ohne jeglichen Benutzereingriff lesen kann, was bei Angabe einer Passphrase nicht möglich wäre.
  • -newkey rsa:2048 – Dies zeigt an, dass wir gleichzeitig einen neuen Schlüssel und ein neues Zertifikat erstellen möchten. Der Teil „rsa:2048“ impliziert, dass wir einen 2048-Bit-RSA-Schlüssel erstellen möchten.
  • -keyout – Diese Option gibt an, wo die generierte private Schlüsseldatei bei der Erstellung gespeichert werden soll.
  • -out – Die Option gibt an, wo das erstellte SSL-Zertifikat abgelegt werden soll.

Schritt 3: Installieren Sie das lokale selbstsignierte SSL-Zertifikat auf Apache

4. Nachdem Sie die SSL-Zertifikatdatei erstellt haben, ist es nun an der Zeit, das Zertifikat mithilfe der Einstellungen des Apache-Webservers zu installieren. Öffnen und bearbeiten Sie die Konfigurationsdatei /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Stellen Sie sicher, dass zwischen den virtuellen Host-Tags die folgenden Zeilen stehen.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Speichern und beenden Sie die Datei. Damit die Änderungen wirksam werden, starten Sie Apache mit dem folgenden Befehl neu:

sudo systemctl restart httpd

5. Damit externe Benutzer auf Ihren Server zugreifen können, müssen Sie Port 443 wie gezeigt durch die Firewall öffnen.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Schritt 3: Testen des lokalen selbstsignierten SSL-Zertifikats auf Apache

Nachdem alle Konfigurationen vorgenommen wurden, starten Sie Ihren Browser und durchsuchen Sie die Adresse Ihres Servers mithilfe der IP-Adresse oder des Domänennamens des Servers mithilfe des https-Protokolls.

Um die Tests zu optimieren, können Sie erwägen, das HTTP-Protokoll auf dem Apache-Webserver auf HTTPS umzuleiten. Dies bedeutet, dass jedes Mal, wenn Sie die Domain im reinen HTTP durchsuchen, diese automatisch zum HTTPS-Protokoll umgeleitet wird.

Durchsuchen Sie also die Domäne oder IP Ihres Servers

https://domain_name/

Sie erhalten eine Warnmeldung, die Sie darüber informiert, dass die Verbindung nicht sicher ist (siehe Abbildung). Dies kann von Browser zu Browser unterschiedlich sein. Wie Sie vielleicht vermuten, ist die Warnung darauf zurückzuführen, dass das SSL-Zertifikat nicht von der Zertifizierungsstelle signiert ist und der Browser dies registriert und meldet, dass das Zertifikat nicht vertrauenswürdig ist.

Um zu Ihrer Website zu gelangen, klicken Sie wie oben gezeigt auf die Registerkarte „Erweitert“:

Als nächstes fügen Sie die Ausnahme zum Browser hinzu.

Laden Sie abschließend Ihren Browser neu und stellen Sie fest, dass Sie jetzt auf den Server zugreifen können. Allerdings wird in der URL-Leiste eine Warnung angezeigt, dass die Website nicht vollständig sicher ist, und zwar aus dem gleichen Grund, weil das SSL-Zertifikat selbstsigniert und nicht vom Server signiert ist Zertifizierungsstelle.

Wir hoffen, dass Sie jetzt fortfahren und ein selbstsigniertes SSL-Zertifikat auf dem Apache Localhost-Webserver unter CentOS 8 erstellen und installieren können.