it-swarm.com.de

Nginx SSL-Konfiguration schlägt fehl

Ich habe SSL auf meinem LEMP mit einem selbstsignierten Zertifikat gemäß den folgenden Anweisungen konfiguriert: https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl -Zertifikat-für-Nginx-in-Ubuntu-16-04

Die EINZIGE Ausnahme ist der default_server, den ich nicht verwenden kann, da dies (irgendwann) ein Multi-VHOST-Server sein wird.

Während des gesamten Vorgangs schlägt nichts fehl, bis ich versuche, die Site über HTTPS zu durchsuchen. Bei Secure Connection Failed schlägt dies fehl, ohne dass eine andere Option zur Umgehung besteht. (Ich erwarte einen Fehler basierend auf dem selbstsignierten Zertifikat, aber in Firefox gibt es normalerweise die Schaltfläche "Erweitert", mit der ich umgehen kann.)

Ich habe auch überprüft, dass die richtigen Ports über netstat -ntlp für den Server geöffnet sind.

netstat output

Sie können die Site hier durchsuchen, wenn Sie die Fehlermeldung sehen möchten: https://www.azem.us/ (es ist keine Produktion, daher mache ich mir darüber keine Sorgen ... )

Das Ausführen von curl -I https://www.azem.us/ gibt mir den folgenden Fehler zurück: curl: (35) gnutls_handshake() failed: The TLS connection was non-properly terminated.

Was mich wirklich angezogen hat, ist, dass in keinem konfigurierten Fehlerprotokoll etwas enthalten ist.

Was kann ich tun, um dieses Problem zu beheben und diese Websites mit SSL zu versorgen?

HINWEIS: Dies geschieht auch mit einem ordnungsgemäßen SSL-Zertifikat von einer echten Zertifizierungsstelle

Fortschrittsdiagnose Das Ausführen von openssl s_client -connect www.azem.us:443 gibt mir einige interessante Informationen zurück:

CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1474399712
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

Ich denke wahrscheinlich nicht, aber bedeutet das nicht, dass die Zertifikate nicht auf dem Server vorhanden sind? Ich kann überprüfen, ob sie tatsächlich existieren und in meinem nginx.conf richtig konfiguriert sind.

Und mit: openssl s_client -verify www.azem.us:443 Rückgabe:

verify depth is 0
connect: Connection refused
connect:errno=111

Per nmap von einem anderen Rechner

Host is up (0.0043s latency).
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

telnet kann eine Verbindung herstellen, beendet die Verbindung jedoch sofort, wenn Port 443 versucht wird

GIT REPO zur Konfiguration: https://github.com/kpirnie/LEMP-Command

Endlich irgendwohin ... Ich habe die Ebene error_log für die Hauptdatei nginx.conf geändert und erhalte jetzt einen Fehler im Protokoll: 2016/09/21 08:22:58 [error] 29557#29557: *4 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: this.is.my.ip, server: 0.0.0.0:443

1
Kevin

Nach vielen Diskussionen und Überlegungen fand ich heraus, worum es ging.

In meinem Haupt-nginx.conf habe ich die listen Direktiven auf beide Ports 80 und 443 gesetzt.

Nachdem ich sie entfernt und zu den VHost-Konfigurationen hinzugefügt hatte, funktionierte sie.

2
Kevin