So erstellen Sie ein SSL-Zertifikat unter Apache für Debian 8

Einführung

Dieses Tutorial führt Sie durch die Einrichtung und Konfiguration eines Apache-Servers, der mit einem SSL-Zertifikat gesichert ist. Am Ende des Tutorials haben Sie einen Server, auf den über HTTPS zugegriffen werden kann.

SSL basiert auf der mathematischen Schwierigkeit, eine große Ganzzahl in ihre ebenfalls großen Primfaktoren aufzulösen. Auf diese Weise können wir Informationen mit einem privat-öffentlichen Schlüsselpaar verschlüsseln. Zertifizierungsstellen können SSL-Zertifikate ausstellen, mit denen die Authentizität einer solchen gesicherten Verbindung überprüft wird. In diesem Fall kann auch ein selbstsigniertes Zertifikat ohne Unterstützung durch Dritte erstellt werden.

In diesem Lernprogramm erstellen wir ein selbstsigniertes Zertifikat, nehmen die erforderlichen Konfigurationen vor und testen die Ergebnisse. Selbstsignierte Zertifikate eignen sich hervorragend zum Testen, führen jedoch zu Browserfehlern für Ihre Benutzer, sodass sie für die Produktion nicht empfohlen werden.

Wenn Sie stattdessen ein kostenpflichtiges Zertifikat erhalten möchten, lesen Sie bitte https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority [ dieses Tutorial].

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Ein neues Debian 8-Tröpfchen

  • Ein sudo-Benutzer ohne Rootberechtigung, den Sie einrichten können, indem Sie die Schritte 2 und 3 unter this tutorial ausführen.

  • OpenSSL installiert und aktualisiert (sollte standardmäßig installiert sein)

sudo apt-get update
sudo apt-get upgrade openssl

Möglicherweise möchten Sie einen zweiten Computer mit installiertem OpenSSL zu Testzwecken:

  • Ein weiteres Linux-Droplet

  • Oder ein Unix-basiertes lokales System (Mac, Ubuntu, Debian usw.)

Schritt 1 - Installieren Sie Apache

In diesem Schritt verwenden wir ein eingebautes Paketinstallationsprogramm mit dem Namen "+ apt-get". Es vereinfacht die Paketverwaltung drastisch und erleichtert eine saubere Installation.

Unter dem in den Voraussetzungen angegebenen Link sollten Sie "+ apt-get " aktualisiert und das Paket " sudo " installiert haben, da Debian 8 im Gegensatz zu anderen Linux-Distributionen nicht mit " sudo +" geliefert wird.

Apache wird unser HTTPS-Server sein. Führen Sie zum Installieren Folgendes aus:

sudo apt-get install apache2

Schritt 2 - Aktivieren Sie das SSL-Modul

In diesem Abschnitt aktivieren wir SSL auf unserem Server.

Aktivieren Sie zunächst das Apache SSL-Modul.

sudo a2enmod ssl

Die Standard-Apache-Website wird mit einer nützlichen Vorlage zum Aktivieren von SSL geliefert, sodass wir die Standard-Website jetzt aktivieren.

sudo a2ensite default-ssl

Starten Sie Apache neu, damit diese Änderungen wirksam werden.

sudo service apache2 reload

Schritt 3 - Erstellen Sie ein selbstsigniertes SSL-Zertifikat

Zuerst erstellen wir ein neues Verzeichnis, in dem wir den privaten Schlüssel und das Zertifikat speichern können.

sudo mkdir /etc/apache2/ssl

Als nächstes fordern wir ein neues Zertifikat an und unterschreiben es.

Erstellen Sie zunächst ein neues Zertifikat und einen privaten Schlüssel, um es zu schützen.

  • Das Flag "+ Tage +" gibt an, wie lange das Zertifikat gültig sein soll. In diesem Beispiel ist das Zertifikat ein Jahr gültig

  • Das + keyout + Flag gibt den Pfad zu unserem generierten Schlüssel an

  • Das "+ out +" - Flag gibt den Pfad zu unserem generierten Zertifikat an

sudo openssl req -x509 -nodes -days  -newkey rsa:2048 -keyout /etc/apache2/ssl/ -out /etc/apache2/ssl/

Das Aufrufen dieses Befehls führt zu einer Reihe von Eingabeaufforderungen.

  • * Common Name *: Geben Sie die IP-Adresse oder den Hostnamen Ihres Servers an. Dieses Feld ist wichtig, da Ihr Zertifikat mit der Domain (oder IP-Adresse) Ihrer Website übereinstimmen muss

  • Füllen Sie alle anderen Felder nach eigenem Ermessen aus.

Beispielantworten sind unten gezeigt.

InteractiveYou are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
---
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Legen Sie die Dateiberechtigungen fest, um Ihren privaten Schlüssel und Ihr Zertifikat zu schützen.

sudo chmod 600 /etc/apache2/ssl/*

Weitere Informationen zum dreistelligen Berechtigungscode finden Sie im Tutorial unter https://www.digitalocean.com/community/tutorials/linux-permissions-basics-and-how-to-use-umask-on-a-vps [Linux-Berechtigungen].

Ihr Zertifikat und der private Schlüssel, der es schützt, können jetzt von Apache verwendet werden.

Schritt 4 - Konfigurieren Sie Apache für die Verwendung von SSL

In diesem Abschnitt konfigurieren wir den virtuellen Apache-Standardhost für die Verwendung des SSL-Schlüssels und des Zertifikats. Nachdem Sie diese Änderung vorgenommen haben, beginnt unser Server, HTTPS-Anforderungen anstelle von HTTP-Anforderungen für die Standardwebsite zu verarbeiten.

Öffnen Sie die Serverkonfigurationsdatei mit + nano + oder Ihrem bevorzugten Texteditor.

sudo nano /etc/apache2/sites-enabled/default-ssl.conf

Suchen Sie den Abschnitt, der mit + <VirtualHost default: 443> + beginnt, und nehmen Sie die folgenden Änderungen vor.

  • Fügen Sie eine Zeile mit Ihrem Servernamen direkt unter der E-Mail-Zeile "+ Server Admin" ein. Dies kann Ihr Domainname oder Ihre IP-Adresse sein:

/ etc / apache2 / sites-enabled / default

ServerAdmin webmaster@localhost
ServerName :443
  • Suchen Sie die folgenden beiden Zeilen und aktualisieren Sie die Pfade, damit sie den Speicherorten des zuvor generierten Zertifikats und Schlüssels entsprechen. Wenn Sie ein Zertifikat gekauft oder ein anderes Zertifikat erstellt haben, stellen Sie sicher, dass die Pfade hier mit den tatsächlichen Positionen Ihres Zertifikats und Schlüssels übereinstimmen:

/ etc / apache2 / sites-enabled / default

SSLCertificateFile
SSLCertificateKeyFile

Überprüfen Sie nach diesen Änderungen, ob Ihre Konfigurationsdatei für den virtuellen Host den folgenden Angaben entspricht.

/ etc / apache2 / sites-enabled / default-ssl

<IfModule mod_ssl.c>
   <VirtualHost _default_:443>
       ServerAdmin webmaster@localhost
       ServerName
       DocumentRoot /var/www/html

       . . .
       SSLEngine on

       . . .

       SSLCertificateFile
       SSLCertificateKeyFile

Speichern und schließen Sie die Datei.

Starten Sie Apache neu, um die Änderungen zu übernehmen.

sudo service apache2 reload

Weitere Informationen zum Konfigurieren von virtuellen Apache-Hosts im Allgemeinen finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts [ Dieser Beitrag].

Schritt 5 - Testen Sie Apache mit SSL

In diesem Abschnitt testen wir Ihre SSL-Verbindung über die Befehlszeile.

Sie können diesen Test entweder auf (1) Ihrem lokalen Unix-basierten System, (2) einem anderen Droplet oder (3) demselben Droplet ausführen. Wenn Sie es von einem externen System ausführen, bestätigen Sie, dass Ihre Website über das öffentliche Internet erreichbar ist.

Stellen Sie eine Verbindung über den HTTPS 443-Port her.

openssl s_client -connect :443

Scrollen Sie in die Mitte der Ausgabe (nach der Taste), und Sie sollten Folgendes finden:

Output--
SSL handshake has read 3999 bytes and written 444 bytes
--

. . .

SSL-Session:

. . .

Natürlich sind die Zahlen variabel, aber das ist Erfolg. Herzliche Glückwünsche!

Drücken Sie zum Beenden die Tastenkombination STRG + C +.

Sie können Ihre Site auch in einem Webbrowser besuchen, indem Sie HTTPS in der URL verwenden (+ https: // example.com +). Ihr Browser warnt Sie, dass das Zertifikat selbst signiert ist. Sie sollten in der Lage sein, das Zertifikat anzuzeigen und zu bestätigen, dass die Details mit den in Schritt 3 eingegebenen übereinstimmen.

Fazit

Dies schließt unser Tutorial ab und lässt Sie mit einem funktionierenden Apache-Server zurück, der sicher mit einem SSL-Zertifikat konfiguriert ist. Weitere Informationen zum Arbeiten mit OpenSSL finden Sie unter des OpenSSL Essentials-Artikels.