2016-07-28 28 views
0

Ich schreibe einen NodeJS-Proxy, der eine Java Jetty Proxy ersetzen wird. Ich benutze node-http-proxy. Das einzige verbleibende Stück ist, dass das ursprüngliche Client-Zertifikat an den Proxy-Server weitergegeben wird.Wie bekomme ich NodeJS zu Proxy-Client-Zertifikaten wie Jetty Proxy

Aus meiner Sicht erfordert die Java Servlet-Spezifikation, dass ein Servlet-Container die Client Certificate from an HTTPS request and store that as an attribute on the HttpServletRequest ziehen.

Ich bin mir nicht sicher, wie der Servlet-Container die Attribute behandelt, wenn die Anfrage an einen neuen Server weitergeleitet wird. Ich nehme an, dass es sie irgendwie entweder als Überschriften oder auf andere Weise anbringt.

Kann jemand wissen, wie diese Attribute (speziell die javax.servlet.request.X509Certificate) über eine Proxy-HTTPS-Anfrage übergeben werden? Und zwei, wie erreiche ich die gleiche Funktionalität mit NodeJS.

Antwort

0

In dem Fall hilft das jemand anderes ... Das Problem stellte sich heraus, dass das Knotenmodul, das ich verwendete (Knoten-http-Proxy), die Verbindungszertifikate des HTTP-Servers nicht wiederverwendete. Das heißt, beim Versuch, eine Verbindung mit dem Proxy-Server herzustellen, wurde ein standardmäßiges (generiertes) Zertifikat verwendet.

Um richtig mit dem Proxy-Server zu verbinden, musste ich die ca, pfx und Passphrase an den Proxy-Connector übergeben.

const ca = ... 
const pfx = ... 
const passphrase = ... 

// proxy connection 
server.web(req, res, { ca: ca, pfx: pfx, passphrase: passphrase }, function(err) {}); 

Danach konnte der Proxy-Server das Zertifikat abrufen und validieren.