谁能解释一下我的 GlassFish 应用程序服务器中如何拥有多个 X.509 证书?对我来说主要的挑战是 GlassFish 只使用一个别名,即“s1as”。
问问题
106 次
1 回答
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);
或者,如果您使用 JAXWS 将其设置为BindingProvider
' 上下文的属性:
Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext();
ctxt.put(JAXWSProperties.SSL_SOCKET_FACTORY, sslSocketFactory);
希望这可以帮助。
于 2013-10-10T21:27:58.223 回答