2016-07-28 3 views
0

Java Jetty Proxy을 대체 할 NodeJS 프록시를 작성하고 있습니다. node-http-proxy을 사용하고 있습니다. 남아있는 유일한 부분은 원본 클라이언트 인증서를 프록시 서버에 전달하는 것입니다.ProxyJan Proxy와 같은 프록시 클라이언트 인증서를 얻는 방법

제 생각에 자바 서블릿 사양에서는 서블릿 컨테이너가 Client Certificate from an HTTPS request and store that as an attribute on the HttpServletRequest을 가져와야합니다.

새 서버로 요청을 프록시 할 때 서블릿 컨테이너가 속성을 처리하는 방법을 잘 모르겠습니다. 나는 그것들을 어떻게 든 헤더 나 다른 수단으로 붙이고 있다고 추정한다.

프록시 된 HTTPS 요청에서 이러한 속성 (구체적으로 javax.servlet.request.X509Certificate)이 전달되는 방법을 아는 사람이 있습니까? 둘째 NodeJS를 사용하여 동일한 기능을 수행하려면 어떻게해야합니까?

답변

0

다른 사람이 도움이되는 경우 ... 내가 사용하고있는 노드 모듈 (node-http-proxy)이 HTTP 서버 연결 인증서를 재사용하지 못하고 있음이 밝혀졌습니다. 즉, 프록시 서버와의 연결을 만들려고 할 때 기본 (생성 된) 인증서를 사용하고있었습니다.

제대로 프록시 서버에 연결하려면 프록시 커넥터에 ca, pfx 및 passphrase를 전달해야했습니다.

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

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

이렇게하면 프록시 서버가 인증서를 가져 와서 유효성을 검사 할 수 있습니다.