我有一个在 GlassFish 3.x 上运行的应用程序。它通过 https 与远程服务器通信。在我的 cacerts 文件中,我添加了服务器证书。在我的 keystore.jks 中,我添加了运行远程服务器的公司发给我的私钥。这在 Glassfish 2.x 上效果很好,但是在 3.x 上,他们的远程服务器一直抱怨我拥有的密钥无效。
如果我从密钥库中删除密钥,我会得到同样的错误。就好像它甚至没有加载密钥,这让我想知道应用程序/容器如何知道我需要哪个密钥
我的连接代码如下所示:
public class SSLSocket {
private static Logger logger = LoggerFactory.getLogger(SSLSocket.class);
private ConnectionProperties connectionProperties;
public TuSSLSocket(ConnectionProperties connectionProperties) {
this.connectionProperties = connectionProperties;
}
public SSLSocket getSSLSocket() throws Exception{
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket(connectionProperties.getHost(), connectionProperties.getPort());
socket.setSoTimeout(90000);
return socket;
}
}
我相应地设置了主机和端口,但我没有说去哪里寻找密钥库中的这个别名。那么......应用程序如何知道要抓取的别名?