2016-07-28 68 views
0

我正在写一个NodeJS代理,将取代Java Jetty Proxy。我正在使用node-http-proxy。唯一剩下的部分是将原始客户端证书传递给代理服务器。如何获得NodeJS代理客户端证书,如Jetty代理

从我的理解,Java Servlet规范要求一个Servlet容器拉动Client Certificate from an HTTPS request and store that as an attribute on the HttpServletRequest

我不确定Servlet容器在将请求代理到新服务器时如何处理属性。我认为它以某种方式将它们作为标题或其他方式附加在它们上面。

有谁知道这些属性(特别是javax.servlet.request.X509Certificate)是如何在代理HTTPS请求上传递的?而且,我如何使用NodeJS实现相同的功能。

回答

0

如果有人帮助其他人......问题原来是我使用的节点模块(node-http-proxy)没有重用HTTP服务器连接证书。也就是说,当试图与代理服务器建立连接时,它使用了默认(生成)的证书。

要正确连接代理服务器,我必须将ca,pfx和密码短语传递给代理连接器。

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

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

这样做后,代理服务器能够拉和验证证书。