【问题标题】:Axis2 client is unable to initiate a second https call on Tomcat 7.0.42Axis2 客户端无法在 Tomcat 7.0.42 上发起第二次 https 调用
【发布时间】:2014-04-14 05:44:18
【问题描述】:

我正在尝试将 Java Axis2 客户端从 Websphere6/JRE1.5.x 迁移到 Solaris 上的 Tomcat 7.0.42/JRE1.6.x。在这个过程中,我遇到了一个问题,客户端第一次可以通过 https 与 web 服务通信,但由于 ssl 错误,从第二次尝试开始就会失败。

从显示的失败尝试日志中提取 -

%% 客户端缓存 [Session-1, SSL_RSA_WITH_RC4_128_MD5]
%% 尝试从端口 34092 恢复 [Session-1, SSL_RSA_WITH_RC4_128_MD5]
** ClientHello, TLSv1
...
线程 606,写入:TLSv1 握手,长度 = 179
线程 606,阅读:TLSv1 警报,> 长度 = 2
Thread-606,RECV TLSv1 ALERT:致命的,unexpected_message

实际的异常是(我怀疑是由于没有打开的套接字)-

原因:javax.net.ssl.SSLException:收到致命警报: 意外消息在 com.sun.net.ssl.internal.ssl.Alerts.getSSLException(未知来源)
在 com.sun.net.ssl.internal.ssl.Alerts.getSSLException(未知 来源)在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(未知来源)
在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(未知 来源)在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(未知 来源)在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(未知来源) 在 com.sun.net.ssl.internal.ssl.AppOutputStream.write(未知来源) 在 java.io.BufferedOutputStream.flushBuffer(Unknown Source) 在 java.io.BufferedOutputStream.write(Unknown Source) at java.io.FilterOutputStream.write(Unknown Source) 在 org.apache.commons.httpclient.WireLogOutputStream.write(WireLogOutputStream.java:86) 在 org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:89)

将此与 Websphere 环境中的日志进行比较,我发现了一些差异,因此我提出了一些问题 -

  1. Tomcat 上的 SSL 配置是否会影响 Axis2 客户端调用不同服务器的行为?还是我的问题更多是在操作系统级别?

  2. 在旧环境中,我注意到缓存了多个 ssl 会话。当恢复在一个会话上失败时,它只是尝试使用另一个会话并继续通话。然而,在新服务器上,我只看到一个会话被创建并被缓存。恢复时,它一直试图在不同的端口恢复相同的会话,但一直失败。因为它是唯一的会话,如果不能尝试不同的会话,也不能创建新的会话。我的问题是为什么只创建一个会话,启用多个会话的缓存是否是配置问题?

非常感谢任何帮助/指针。

【问题讨论】:

    标签: java ssl tomcat7 axis2 axis


    【解决方案1】:

    终于找到了故障。以为我会在这里为可能遇到类似问题的任何人分享它。 事实证明,它与 JRE 本身的安全提供程序有关。这是一个关于如何配置它的链接 -
    http://pic.dhe.ibm.com/infocenter/ssp/v3r4/index.jsp?topic=%2Fcom.ibm.help.sspreleasenotes.doc%2FSSP_RN_RemovePKCS11SecurityProvider.html

    似乎 Solaris 上的默认安全提供程序导致了我看到的奇怪行为。按照链接中的说明,并通过使用 Java 默认提供程序,解决了我看到的 ssl 问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-26
      • 2019-10-20
      • 2018-10-19
      • 1970-01-01
      • 2016-06-03
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多