fragen stichworte

Unterstützt NGINX SNI oder nicht?

BEARBEITEN Neue Frage: Kann NGINX die TLS-Anforderung prüfen, um nach SNI zu suchen, wie es HAProxy (etc) tut?

Nach dem, was ich gelesen habe (und wurde gesagt), sollte NGINX SNI nicht unterstützen, und ich sollte HAProxy für einen SSL-transparenten Reverse-Proxy verwenden. Fein. Dies scheint jedoch darauf hinzudeuten, dass NGINX tatsächlich SNI unterstützt, aber ich finde keinen einzigen Ausschnitt nützlicher Dokumentation. Das heißt, alles, was ich finden konnte, implizierte, dass ich NGINX immer noch die Zertifikate bereitstellen musste, damit es mit dem Hostnamen der Anfrage übereinstimmen konnte. Aber ist das nicht genau das Problem, das SNI zu lösen versucht?

Nun fange ich an, eine beträchtliche Anzahl von verschiedenen HTTPS-Sites mit derselben IP-Adresse zu betreiben. Dies ist eine Belastung, wenn dieselbe Information in vielen verschiedenen Konfigurationen verwaltet wird. Ich würde gerne wissen, ob ich ' Ich nehme lieber NGINX und lerne noch eine andere Software (alias HAProxy) oder ob ich tatsächlich bei NGINX bleiben kann - und wie.

Im Idealfall möchte ich, dass der Proxy-Server einen transparenten Tunnel für den verschlüsselten Datenverkehr bereitstellt und nur der Client und der Back-End-Server (z. B. Apache oder eine andere von mir ausgeführte Anwendung) in der Lage sind entschlüsseln - bedeutet, dass ich die Zertifikatsinformationen nicht in der Konfiguration des Reverse Proxys aufbewahren muss. Das heißt, dass ich von hier aus gehen kann

server {
    listen 443 default ssl;

    server_name example.org;
    add_header X-Clacks-Overhead "GNU Terry Pratchett";

    ssl on;
    ssl_certificate        /etc/le_certs/example.org/live/example.org/fullchain.pem;
    ssl_certificate_key    /etc/le_certs/example.org/live/example.org/privkey.pem;

    location/{
        proxy_pass_header   Server;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          https://exampleapp;
    }
}

bis hier

server {
    listen 443 default ssl;

    server_name example.org;
    add_header X-Clacks-Overhead "GNU Terry Pratchett";

    location/{
        proxy_pass_header   Server;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          https://exampleapp;
    }
}

mit dem zusätzlichen Vorteil, dass der Container des Proxys überhaupt keinen Zugriff auf die Zertifikate haben muss (da dies ein Docker-Setup ist, sind dies sehr viele gemountete Volumes, was zu noch mehr Wartung führt).

antworten

Sie missverstehen den "Mangel" an SNI-Unterstützung.

Erstens ist nginx normalerweise für "Wildcard" SSL-Setups geeignet. Das Support-Problem besteht in älteren Clients (d. H. Browsern), die SNI nicht verarbeiten können.