부두에서 SPDY를 사용할 때 고객 인증서에 문제가 있습니다.ALPN을 사용하여 부두 SPDY에서 클라이언트 인증서를 사용하는 방법은 무엇입니까?
내가 NPN 작업과 함께 부두 SPDY 서버를 시작할 때 작동하십시오 baseRequest.getHttpChannel()
으로
SSLconnector = new HTTPSPDYServerConnector(server, sslContextFactory);
그것이 org.eclipse.jetty.spdy.server.http.HttpChannelOverSPDY
를 사용하고 내가 함께 SSL_SESSION_ID
같은 SSL 특성 및 클라이언트 인증서를 읽을 수있는 코드와 같은 :
// ... HttpServletRequest request
java.security.cert.X509Certificate client_certs[] = (java.security.cert.X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");
하지만 NPN은 Java8에서 옵션이 아닙니다 (내 질문은 How to run Jetty with SPDY using ALPN? 참조). 내가 javax.servlet.request.*
관련된 SSL을 얻을 할 때 나는 null
있어이 코드
sslContextFactory.setWantClientAuth(w3srv_config.want_client_auth);
// ...
HttpConfiguration httpConfig = new HttpConfiguration();
SslConnectionFactory ssl = new SslConnectionFactory(sslContextFactory, "alpn");
ALPNServerConnectionFactory alpn = new ALPNServerConnectionFactory("spdy/3", "http/1.1");
alpn.setDefaultProtocol("http/1.1");
HTTPSPDYServerConnectionFactory spdy = new HTTPSPDYServerConnectionFactory(SPDY.V3, httpConfig);
HttpConnectionFactory http = new HttpConnectionFactory(httpConfig);
SSLconnector = new ServerConnector(server, new ConnectionFactory[]{ssl, alpn, spdy, http});
//...
: Java8에서 내가 좋아하는 ALPN 프로토콜을 사용해야합니다. baseRequest.getHttpChannel()
은 org.eclipse.jetty.server.HttpConnection$HttpChannelOverHttp
입니다.
클라이언트 인증서로 작업하려면 무엇을 변경해야합니까?
일부 프로토콜을 제외하는 것과 같이 비표준적인 것을 만들었지 만 NPN이나 ALPN을 구성하지 않았습니다. 난 그냥 부팅 병을 변경하고 내 질문에 시작 코드를 변경합니다. 어쨌든'httpConfig.addCustomizer()'를 사용하면 도움이되었습니다. 이제 SSL 속성을 볼 수 있습니다. 감사합니다! –