当前位置: 首页 > 知识库问答 >
问题:

无法通过JBoss EAP 6.2中的SSL连接到SOAP服务

岳嘉悦
2023-03-14

简介: 我有一个 SAAJ 客户端,它通过 HTTPS 调用远程网络服务。客户端和服务器都需要通过证书进行身份验证。在 IDE 中运行 JUnit 测试时,我可以成功调用该服务,但在 JBoss 中运行时无法连接。

密钥库/信任库配置详细信息:在IDE和JBoss中,我通过系统属性设置密钥库和信任库:javax.net.ssl.keyStorejavax.net.ssl.keyStorePasswordjavax.net.ssl.trustStorejavax.net.ssl.trustStorePassword

日志配置:在JBoss中,我已经通过系统属性< code>javax.net.debug=SSL启用了SSL调试日志。我还通过logging.properties文件启用了CXF日志记录。

JBoss SSL 日志记录输出摘要:

  • SSL 日志记录不显示警告或错误日志
  • SSL 日志记录显示调用远程服务时已建立会话

JBoss CXF日志记录输出摘要:

>

  • CXF日志记录显示POST通过管道null.http-CONDUCT发送到服务

    CXF日志显示,该管道“配置为纯http”,没有“信任决策器”,也没有“身份验证供应商”(我不完全确定这一切意味着什么,但听起来很相关)

    堆栈跟踪:这是我得到的实际堆栈跟踪

        Caused by: javax.xml.soap.SOAPException: JBWS024004: SOAP message could not be sent
        at org.jboss.wsf.stack.cxf.saaj.SOAPConnectionImpl.call(SOAPConnectionImpl.java:124)
        at my.client.soap.MySAAJClient.invoke(MySAAJClient.java:37) [my-client-0.0.1-SNAPSHOT.jar:]
        ... 17 more
    Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '403: Forbidden' when communicating with https://remote.service.url.here/
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1542)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1502)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1309)
        at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
        at org.jboss.wsf.stack.cxf.saaj.SOAPConnectionImpl.call(SOAPConnectionImpl.java:120)
        ... 19 more
    

    其他信息

    • 我无法直接访问远程web服务的日志,但我被告知它们“不显示任何内容”
    • CXF之所以发挥作用,是因为JBoss使用它。我的项目中没有任何CXF依赖项,当我在IDE中运行代码时,它不起作用

    我的尝试:我一直专注于CXF,因为在我的IDE中执行时,这一切都运行良好,其中CXF不起作用,而且CXF日志中说管道已“配置为纯http”,这让我感到害怕。我尝试过包含<code>jboss CXF。xml,jbossws和cxf。xml,或cxf。xml我的WAR中的配置文件,包括密钥库和信任库配置。这不起作用,我甚至无法判断CXF是否正在查看这些文件。

    我的问题(更新)

    >

  • 有没有办法让 JBoss/CXF 看到这是一个安全连接,并使用通过系统属性配置的密钥库/信任库?
  • 我有没有办法指示 JBoss(也许通过 jboss-部署-结构.xml?)使用不同的 SAAJ 实现进行部署?

    你对我应该研究的其他事情有什么想法吗?

    更新1

    我相信我已经确认 JBoss-CXF 集成是问题所在。我能够通过修改文件{JBOSS_HOME}/模块/系统/层/基/组织/jboss/ws/saaj-impl/main/module.xml来删除JBoss的SOAP连接Impl。我注释掉了模块依赖关系

    进行此更改后,我的应用程序能够毫无问题地连接到远程服务。

    虽然这表明 JBoss-CXF 集成是这个问题,但我不能以这种方式修改部署环境。我需要确定另一种解决方案。


  • 共有1个答案

    薄欣怿
    2023-03-14

    我会选择系统属性(或者至少知道系统的配置),因为它们可能会覆盖您在部署中指定的任何内容。

    在部署环境中使用的是什么版本的cxf?您有关于在部署环境中配置cxf的任何信息吗?从留档(http://cxf.apache.org/docs/ws-security.html)中,我可以看到您需要为cxf 2.0. x或更早版本配置WSS4J拦截器,这样您就可以检查在您的部署环境中是否可以这样做。

     类似资料:
    • 我的入口pod无法通过IP访问两个集群IP服务。有很多其他集群IP服务它没有到达困难。包括在同一个命名空间中。另一个pod到达服务没有问题(我在同一个命名空间中尝试了默认后端,一切正常)。 我应该去哪里?以下是我的实际服务,它无法到达第一个,但可以到达第二个: 我的入口吊舱:

    • 我在一个网站上工作,这是用来重置LDAP用户的密码。我无法通过SSL与服务器建立连接。我尝试了各种代码和身份验证类型。 这是服务器上用于与网站所在的LDAP连接的内容。我还用两个ssl端口测试了它。636和3269。 我在网站上使用以下代码 获取异常“LDAP服务器不可用”。我尝试了389端口和没有ssl的代码,它工作得很好。 请让我知道哪里出了问题。

    • 问题内容: 我正在尝试使用mysql_connect从PHP通过SSL连接到远程MySQL服务器: 并得到最严重的错误: 我在my.cnf中添加了以下参数: 所以我可以使用终端从终端成功连接到远程mysql 因此,到mysql服务器的连接正常工作,据我了解,问题出在php / mysql合作中。可能我缺少一些参数。 不幸的是我不能使用mysqli lib,因为pdo_mysql有太多可用的适配器。

    • 我一直在寻找一个解决办法,但没有找到一个有效的解决办法。 我已经在我的MacBook中使用brew安装了postgres(),并且我目前正在使用brew服务运行它(将postgres显示为正在运行的服务)。但是,当我尝试运行时,我得到以下错误。 PSQL:无法连接到服务器:没有这样的文件或目录是本地运行并接受Unix域套接字“/tmp/.s.pgsql.5432”上的连接的服务器吗? 有人已经解决

    • 我跟踪了服务,当它们部署在localhost中(通过eclipse)时,它们工作得很好。但在部署为单独的docker容器时无法调用rest服务。 我是一个新的docker并且参加了教程来了解这是如何工作的。 祖尔阿皮门路 用户服务 尤里卡注册服务信息 注意:“DE4396A354EA”是“用户服务”的容器id 请提供关于如何解决此问题的指导,并提供任何链接,我可以在这些链接中获得关于在docker