我正在使用 8.0 版本的 Websphere 应用程序服务器。我试图从 JSSEHelper 获取 SSLSocketFactory。虽然
- 我已经成功获得 SSLSocketFactory
- 我已经成功地从 SSLSocketFactory 获得了 SSLSocket
- 我已成功建立安全连接,
但是 ClientHello 消息中提供的密码套件既不对应
- CellDefault SSL 设置/NodeDefault SSL 设置/NodeDefaultnor
- 也不是我自己的自定义 SSL 配置。
此问题的解决方案是避免从 JSSEHelper 检索 SSLSocketFactory。我应该使用 SSLSocketFactory 类中的静态方法 getDefault() 而不是使用 JSSEHelper:
public SSLSocket getSslSocket(Properties sslProps) {
SSLSocketFactory factory = SSLSocketFactory.getDefault();
SSLSocket socket = null;
try {
socket = (SSLSocket) factory.createSocket();
} catch (IOException e) {
e.printStackTrace();
}
return socket;
}
更多细节可以在这里找到:
有人可以澄清为什么这个声明:
slSocketFactory = jsseHelper.getSSLSocketFactory(sslMap, sslProps)
此语句返回不正确的“SSL 套接字工厂”
SSLSocketFactory.getDefault()
返回正确的?
此外,在什么情况下我应该分别使用从这些语句中检索到的工厂?
- SSLSocketFactory.getDefault();
- jsseHelper.getSSLSocketFactory(sslMap, sslProps)
- getSSLSocketFactory(java.lang.String sslAliasName, java.util.Map connectionInfo, SSLConfigChangeListener listener)
非常感谢你