3 回答
TA贡献1951条经验 获得超3个赞
公开的Oracle Java 6版本不支持TLSv1.2。Java 6的付费发行版(EOL后)可能会发布。(更新 -TLSv1.1从更新111开始可用于Java 1.6;来源)
与Oracle销售人员联系。
其他替代方法是:
使用替代的JCE实现,例如Bouncy Castle。
如果您的平台可用,请使用IBM Java 6...。根据“ IBM SDK Java技术版修复程序以缓解POODLE安全漏洞(CVE-2014-3566)”:
“ TLSv1.1和TLSv1.2仅可用于Java 6服务刷新10,Java 6.0.1服务刷新1(J9 VM2.6)和更高版本。
但是,我建议升级到Java8。2013年2月对Java 6进行了停产销售,继续使用它存在潜在的风险。(告诉或提醒老板/客户。他们需要知道。)
TA贡献1864条经验 获得超6个赞
您必须基于Bouncy Castle创建自己的SSLSocketFactory。使用完后,传递给通用HttpsConnextion以使用此定制的SocketFactory。
1.首先:创建一个TLSConnectionFactory
这里有一个提示:
1.1扩展SSLConnectionFactory
1.2覆盖此方法:
@Override
public Socket createSocket(Socket socket, final String host, int port, boolean arg3)
该方法将调用下一个内部方法,
1.3实现内部方法_createSSLSocket(host,tlsClientProtocol);
在这里,您必须使用TlsClientProtocol创建一个Socket。诀窍是重写... startHandshake()方法,调用TlsClientProtocol
private SSLSocket _createSSLSocket(final String host , final TlsClientProtocol tlsClientProtocol) {
return new SSLSocket() {
.... Override and implement SSLSocket methods, particulary:
startHandshake() {
}
}
重要说明:此处完整说明了如何使用TLS客户端协议的完整示例:使用BouncyCastle进行简单的HTTPS查询
2.第二:在公共HTTPSConnection上使用此Customized SSLConnextionFactory。
这个很重要 !在其他示例中,您可以看到网络,您可以看到硬编码的HTTP命令...。因此,使用自定义的SSLConnectionFactory,您仅需使用...
URL myurl = new URL( "http:// ...URL tha only Works in TLS 1.2);
HttpsURLConnection con = (HttpsURLConnection )myurl.openConnection();
con.setSSLSocketFactory(new TSLSocketConnectionFactory());
添加回答
举报