mes*_*esh 7 ssl axis webservices-client tls1.2
我们的应用程序与之集成的第三方最近对其安全级别协议进行了更改.简而言之,My Axis客户端现在应该使用TLSv1.1或TLSv1.2发送呼叫.我看过其他有关此事的帖子,并提出了一些好主意:
在代码中进行了这些更改之后,我再次触发了调用,我使用了一个剪切工具来监视已发送的包,我仍然在SSL层中看到正在使用的协议是TLSv1.
我在这做错了什么?
这就是我设置新的SocketSecureFactory的方法:
AxisProperties.setProperty("axis.socketSecureFactory", MyTLSSocketSecureFactory.class.getName());
Run Code Online (Sandbox Code Playgroud)
而MyTLSSocketSecureFactory是:
public class MyTLSSocketSecureFactory extends JSSESocketFactory {
public MyTLSSocketSecureFactory(Hashtable attributes) {
super(attributes);
}
@Override
public Socket create(String host,int port, StringBuffer otherHeaders,BooleanHolder useFullURL)
throws Exception{
Socket s = super.create(host, port, otherHeaders, useFullURL);
((SSLSocket)s).setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
return s;
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢任何评论,谢谢.
在MyTLSSocketSecureFactory类中,您需要创建自己的SSLContext实例,然后从上下文中获取sslFactory.
覆盖initFactory()方法,以及类似的东西:
initFactory() {
SSLContext context = SSLContext.getInstance("TLSv1.2");
context.init(null, null, null);
sslFactory = context.getSocketFactory();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13642 次 |
| 最近记录: |