it-swarm.com.de

Deaktivieren Sie TLS 1.0 in NGINX

Ich habe einen NGINX, der als Reverse-Proxy für unsere Websites fungiert und sehr gut funktioniert. Für die Sites, die ssl benötigen, folgte ich raymii.org , um sicherzustellen, dass die SSLLabs-Punktzahl so hoch wie möglich ist. Eine der Sites muss PCI DSS-kompatibel, aber basierend auf dem neuesten TrustWave-Scan ist jetzt fehlgeschlagen, da TLS 1.0 aktiviert ist).

Auf der http-Ebene in nginx.conf habe ich:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Für den spezifischen Server habe ich:

ssl_protocols TLSv1.1 TLSv1.2;

Ich habe die Chiffren geändert, Dinge aus der http-Ebene auf jeden SSL-Site-Server verschoben, aber egal was passiert, wenn ich laufe:

openssl s_client -connect www.example.com:443 -tls1

Ich erhalte eine gültige Verbindung für TLS 1.0. SSLLabs setzt das Nginx-Setup für die Site als [~ # ~] a [~ # ~] , aber mit TLS 1.0, also glaube ich dem Rest von mir Das Setup ist korrekt, TLS 1.0 wird einfach nicht ausgeschaltet.

Gedanken darüber, was mir fehlen könnte?

openssl version -a
OpenSSL 1.0.1f 6 Jan 2014
built on: Thu Jun 11 15:28:12 UTC 2015
platform: debian-AMD64

nginx -v
nginx version: nginx/1.8.0
24
Shawn C.

Das Problem hier ist, dass die Server name indication Ein Teil der TLS-Aushandlung erfolgt, nachdem die Verbindung selbst ausgehandelt wurde. Und das Protokoll wird während der Verbindungsverhandlung ausgehandelt.

Es ist möglicherweise möglich, kein TLS v1.0 für diesen virtuellen Host zu erzwingen, wenn Sie diesen virtuellen Host auf eine IP-Adresse auf dem Server konfigurieren, der keine anderen virtuellen Hosts zugeordnet sind. Daher würde nginx anhand der IP-Adresse wissen, dass kein TLS v 1.0 zulässig ist.

12
Tero Kilkanen

Suchen Sie einen Serverblock, den Sie als "Standard" -Ssl-Verhandlungsvorlage verwenden möchten. Finden Sie Ihre Hörzeile

server {
    ...
    listen 443 ssl;
    ssl_protocols TLSv1.1 TLSv1.2;
    ...
}

und füge default_server bis zum Ende der Zeile

server {
    ...
    listen 443 ssl default_server;
    ssl_protocols TLSv1.1 TLSv1.2;
    ...
}

Dadurch kann nginx eine Konfiguration haben, wenn verhandelt wird, welche TLS-Version verwendet werden soll. Der Nachteil ist, dass Sie nur einen Standardserver pro Port haben können. Es ist also kein Problem, einige virtuelle Domänen mit aktiviertem TLSv1 und andere mit deaktiviertem TLSv1 zu haben.

18
Thego Rilla

Ich habe TLSv1 unter Nginx Version 1.8.1 deaktiviert. Sie müssen openssl auf die Versionen 1.0.1g oder 1.0.1h aktualisieren. Entfernen Sie dann einfach 'TLSv1' aus der Anweisung ssl_protocols:

ssl_protocols TLSv1.1 TLSv1.2

Überprüfen Sie dann die Verbindung über TLSv1 mit dem folgenden Befehl:

openssl s_client -tls1 -connect example.com:443 < /dev/null

Sie sollten so etwas bekommen:

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