当前位置:  开发笔记 > 后端 > 正文

如何强制Axis客户端使用TLSv1.2协议

如何解决《如何强制Axis客户端使用TLSv1.2协议》经验,为你挑选了1个好方法。

我们的应用程序与之集成的第三方最近对其安全级别协议进行了更改.简而言之,My Axis客户端现在应该使用TLSv1.1或TLSv1.2发送呼叫.我看过其他有关此事的帖子,并提出了一些好主意:

    这里

    在这里.

在代码中进行了这些更改之后,我再次触发了调用,我使用了一个剪切工具来监视已发送的包,我仍然在SSL层中看到正在使用的协议是TLSv1.

数据包片段

我在这做错了什么?

这就是我设置新的SocketSecureFactory的方法:

AxisProperties.setProperty("axis.socketSecureFactory", MyTLSSocketSecureFactory.class.getName());

而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;
    }
}

非常感谢任何评论,谢谢.



1> zgcharley..:

在MyTLSSocketSecureFactory类中,您需要创建自己的SSLContext实例,然后从上下文中获取sslFactory.

覆盖initFactory()方法,以及类似的东西:

initFactory() {
  SSLContext context = SSLContext.getInstance("TLSv1.2");
  context.init(null, null, null);
  sslFactory = context.getSocketFactory();
}

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有