Ich versuche, SSL auf meinem Apache2-Webserver einzurichten, aber es scheint, dass es überhaupt nicht funktioniert.
Ich habe ein Tutorial zum Erstellen von Zertifikatsdateien mit openssl befolgt und das /etc/apache2/sites-available/default-ssl.conf
richtig konfiguriert .
Jedes Mal, wenn ich versuche, meine Website mit https zu öffnen, kann mein Browser aus Sicherheitsgründen keine Verbindung herstellen. Es heißt, dass ich meine Website nicht richtig konfiguriert habe.
In meinem werden /var/log/apache2/error.log
Warnungen angezeigt, die besagen, dass mein Serverzertifikat keine ID enthält, die mit dem Servernamen übereinstimmt.
[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'
Haben Sie Ideen, wie Sie das lösen können? Danke in Bezug!
Antworten:
Okay, mir ist aufgefallen, dass dieser Beitrag in letzter Zeit ziemlich oft aufgerufen wurde und es scheint, dass viele Leute mit dem gleichen Problem konfrontiert sind wie ich. Wenn ja, könnte Ihnen dies helfen.
Ich habe eine einfache Schritt-für-Schritt-Anleitung durchgearbeitet, um eine SSL-Zertifizierung für meinen Webserver zu erstellen. Wie so viele andere Tutorials war das Ergebnis des Tutorials, an dem ich teilgenommen habe, ein selbstsigniertes Zertifikat, das OpenSSL verwendet. Ja selbst signiert , das war das Problem. Der Browser konnte dem Server nicht vertrauen, da sein Zertifikat von ihm selbst signiert ist. Nun, ich würde es auch nicht tun ...
Ein Zertifikat muss von einer externen vertrauenswürdigen Zertifizierungsstelle (CA) signiert werden. Also bin ich auf Let's Encrypt gestoßen, das die ganze Arbeit für Sie erledigt und noch einfacher einzurichten ist. Das Beste ist: Es ist absolut kostenlos.
Installation
1) Löschen Sie Ihre alten SSL-Zertifikatsdateien, die Sie mit OpenSSL erstellt haben
2) Öffnen Sie Backports, um den Certbot-Client auf Debian zu installieren. Sie sollten wissen, dass dies ein Loch für unfertige Software öffnet! Installieren Sie nur die Pakete, wenn Sie wissen, was Sie tun.
3) Aktualisieren Sie Ihr Linux-System
4) Installieren Sie certbot
5) Richten Sie Apache ServerName und ServerAlias ein
6) Bearbeiten Sie die Apache-Konfigurationsdatei
7) Überprüfen Sie die korrekte Syntax
8) Wenn die Konfigurationsdatei gut aussieht, starten Sie den Apache-Server neu
9) Richten Sie mit certbot ein Zertifikat ein und folgen Sie den Anweisungen auf dem Bildschirm.
Erneuerung
Alle Zertifikate von Let's Encrypt sind 3 Monate gültig. Zum Erneuern kann man das manuell ausführen
Oder automatisieren Sie diesen Dienst als Cron-Job
und geben Sie die folgende Zeile ein, um jeden Montag um 2:30 Uhr eine Verlängerung zu veranlassen.
Ein detaillierteres Tutorial finden Sie hier: https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8
quelle
Wenn keine weiteren SSL-Fehler angezeigt werden und Sie versucht haben, 'LogLevel-Debug' in der Datei httpd.conf festzulegen, kann diese Fehlermeldung auch darauf hindeuten, dass 'Listen 443' in der Datei httpd.conf fehlt.
quelle
Das sind keine Fehler - es sind Warnungen. Es ist durchaus möglich, mod_ssl mit einem Zertifikat auszuführen, das nicht mit den definierten Servernamen übereinstimmt, solange Sie einen Standard-SSL-Host definiert haben und der allgemeine Name auf dem Zertifikat mit dem Hostnamen übereinstimmt, der von den Clients für die Verbindung verwendet wird.
Letzteres scheint in Ihrem Fall nicht zu stimmen. Wie Jacob sagt, müssen Sie den richtigen Hostnamen als allgemeinen Namen (oder Alias) angeben, wenn Sie eine CSR erstellen .
So sehen Sie, welche Namen sich derzeit auf dem Zertifikat befinden:
Wenn auf dem Computer mehrere Zertifikate installiert sind, die unter derselben IP-Adresse bereitgestellt werden, gilt Folgendes:
(wobei die $ {...} Werte Platzhalter sind, die Sie durch die entsprechenden Werte ersetzen sollten).
quelle
openssl s_client
Zertifizierungsstelle ab. (2) Zeigt den Betreff und den Aussteller für das Blattzertifikat an Sie brauchen hier ohne-showcerts
, aber für echte CA-Zertifikate seit etwa 2010 (und DIY-Zertifikate von kompetenten Leuten) ist das, was Sie sich ansehen müssen, nicht Subject, sondern SubjectAltName (SAN) -Erweiterung und dafür brauchen Sieopenssl s_client -connect h:p [-servername h] | openssl x509 -noout -text
Dieses Problem trat kürzlich auf, als mein selbstsigniertes Zertifikat abgelaufen ist. Ich habe gegoogelt und nur den Befehl zum Erstellen eines neuen Zertifikats von einer Website kopiert.
In meiner Apache-Konfigurationsdatei: /etc/apache2/sites-available/default-ssl.conf. Die Zertifikatsdatei und die Schlüsseldatei beziehen sich auf den folgenden Dateinamen.
Daher war der hier in meinem Fall festgestellte Fehler einfacher zu beheben, da beim Erstellen des SSL-Zertifikats lediglich der korrekte Speicherort der Zertifikatschlüsseldatei angegeben wurde.
Hier ist also der Befehl, den ich hätte verwenden und richtig eingeben sollen.
quelle
In meinem Fall habe ich dieses Problem gelöst, indem ich in meiner Apache SSL-Konfigurationsdatei für jede betroffene Domain Folgendes ersetzt habe:
durch :
Weil mein Zertifikat für "www.meinedomain.com" und nicht für "meinedomain.com" ist
Komplette Apache-Datei:
quelle
Wir mussten den Servernamen und die ServerAlias zur Standard-ssl-Datei hinzufügen, nicht nur zur conf-Datei für die bestimmte Domäne.
Dies hat den lästigen Fehler für uns beseitigt.
quelle