2013-10-06 10 views
0

GlassFish 응용 프로그램 서버에서 X.509 인증서를 두 개 이상 보유 할 수있는 사람이 누구인지 설명해주십시오. 저의 주요한 도전 과제는 GlassFish가 's1as'라는 별칭 하나만 사용한다는 것입니다.GlassFish 2에서 별도의 인증서를 실행하는 경우

+0

사용할 추가 인증서의 목적을 자세히 설명 할 수 있습니까? SSL 클라이언트 인증서로 사용합니까? – TheArchitect

+0

물론, 저는 GlassFish에 몇 가지 서비스를 제공하고 있습니다. 이 서비스는 SSL 인증을 요구하는 다른 외부 서비스를 호출하므로 추가 인증서가 필요합니다. – isaiah

답변

1

외부 키 파일에서 추가 인증서를 가져 와서 SSLContext을 만들고 나서 SSLSocketFactory을 만들면 외부 HTTPS 호출을 사용할 수 있습니다.

예 :

KeyStore cKeyStore = KeyStore.getInstance("PKCS12"); 
try (InputStream clientCertKeyInput = new FileInputStream("my.pfx")) { 
    cKeyStore.load(clientCertKeyInput, "password".toCharArray()); 
} 
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
keyManagerFactory.init(cKeyStore, "password".toCharArray()); 

SSLContext sslCtx = SSLContext.getInstance("TLS"); 
sslCtx.init(keyManagerFactory.getKeyManagers(), 
      null, // default javax.net.ssl.trustStore 
      new SecureRandom()); 

SSLSocketFactory sslSocketFactory = sslCtx.getSocketFactory(); 

당신은 그때와 함께 HttpsURLConnection을 구성 할 수 있습니다 :

httpsConn.setSSLSocketFactory(sslSocketFactory); 

을 아니면 잭스 - WS를 사용하는 경우는 BindingProvider의 컨텍스트의 속성으로 설정 :

Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext(); 
ctxt.put(JAXWSProperties.SSL_SOCKET_FACTORY, sslSocketFactory); 

희망이 도움이됩니다.