ssl - 如何强制 Axis 客户端使用 TLSv1.2 协议(protocol)

标签 ssl axis webservices-client tls1.2

与我们的应用程序集成的第三方最近更改了他们的安全级别协议(protocol)。简而言之,My Axis 客户端现在应该使用 TLSv1.1 或 TLSv1.2 发送调用。 我看过其他关于此的帖子,其中有一些好主意:

  1. > here
  2. > here .

在对代码进行这些更改后,我再次触发了调用, 我已经使用了一个截图工具来监控发送的包,我仍然在 SSL 层看到正在使用的协议(protocol)是 TLSv1。

the packet snippet

我做错了什么?

这就是我设置新 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;
    }
}

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

最佳答案

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

重写 initFactory() 方法,例如:

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

关于ssl - 如何强制 Axis 客户端使用 TLSv1.2 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34180289/

相关文章:

Python bokeh修改 Axis 刻度

OAuth2.0 的 Javax.xml.ws 客户端

jax-rs - JAX-RS 中 ClientFactory 和 ClientBuilder 的区别

wordpress - 如何设置 https : at first of my domain name

ssl - DNS 重定向是否可以解决意外子域上的 SSL 证书错误?

ssl - 服务器在服务器问候后立即发送加密握手

r - 在 Gadfly 中使用对数刻度调整刻度间距

java - 将客户端应用程序从 Axis 迁移到 Axis 2 时的定位器和 stub 类

java - 重用 HttpsUrlConnection...不想每次都获得新连接。怎么复用?

java - 通过 SSL 连接到 Web 服务时为 "Invalid encoding for NameConstraintsExtension"