Client-Zertifikat für TLS-Proxy mit Nginx wiederverwenden?

Client-Zertifikat für TLS-Proxy mit Nginx wiederverwenden?

Ich habe eine TCP-Anwendung, die gegenseitiges TLS verwendet, um Verbindungsclients zu authentifizieren.
Aufgrund des erhöhten Datenverkehrs möchte ich die Anwendung clustern und die Knoten mit nginx ausgleichen. Das funktioniert bereits mit dem streamModul von nginx, das (soweit ich weiß) als Layer-4-Balancer fungiert.

An diesem Punkt erscheint es mir sinnvoll, Verbindungsversuche, die die mTLS-Verifizierung nicht bestehen, sofort bei nginx abzubrechen, damit sich die Upstream-Knoten nicht damit herumschlagen müssen.
Das bedeutet allerdings, dass ich die TLS-Verbindung bei nginx beenden müsste. Leider ist meine Anwendung darauf angewiesen, die Identität des Clients aus dem verifizierten Client-Zertifikat abzurufen.

Gibt es eine Möglichkeit, die mTLS-Prüfung bei Nginx durchzuführen und dann das Client-Zertifikat für die Upstream-Verbindung wiederzuverwenden?

Für HTTP-Anwendungen habe ich den Workaround gesehen, bei dem die TLS-Verbindung bei nginx beendet und das Client-Zertifikat als benutzerdefinierter Header übergeben wird (z. B. proxy_set_header X-SSL-CERT $ssl_client_cert;), aber das würde in meinem Fall offensichtlich nicht funktionieren.

Antwort1

Nein, das können Sie nicht. Sie können die Verbindung nicht beenden und gleichzeitig Ende-zu-Ende aufrechterhalten.

Aber wenn duVertrauenIhr Proxy kann einfach einen Header einfügen und sein eigenes Client-Zertifikat verwenden, um zu authentifizieren, dass die Verbindung vertrauenswürdig ist und von einem bestimmten Client-Zertifikat initiiert wurde.

verwandte Informationen