Java中的SOAP请求在本地工作,但不在服务器上工作

Java中的SOAP请求在本地工作,但不在服务器上工作,java,soap,Java,Soap,我有一个向第三方服务器发送SOAP请求的webapp。当在本地计算机上发出请求时,它可以正常工作,但当我将应用程序部署到服务器时,会出现错误,原因如下: com.sun.xml.messagin.saaj.SOAPExceptionImpl:java.security.PrivilegedActionException:com.sun.xml.messaging.saaj.SOAPExceptionImpl:消息发送失败 原因:javax.net.ssl.SSLHandshakeExceptio

我有一个向第三方服务器发送SOAP请求的webapp。当在本地计算机上发出请求时,它可以正常工作,但当我将应用程序部署到服务器时,会出现错误,原因如下:

com.sun.xml.messagin.saaj.SOAPExceptionImpl:java.security.PrivilegedActionException:com.sun.xml.messaging.saaj.SOAPExceptionImpl:消息发送失败

原因:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径验证失败:java.security.cert.CertPathValidatorException:算法检查失败:禁用MD2withRSA


我到处找了找,但找不到任何与我的处境有关的东西。可能值得注意的是,我正在请求的是https url。我的计算机运行的是Windows XP,服务器运行的是Slackware Linux。你知道是什么原因导致服务器拒绝了请求吗?

谷歌搜索“MD2withRSA”显示为第一次点击,这似乎表明某个Java版本发生了变化。可能您的本地计算机和服务器上的verasiuons不匹配。

谷歌搜索“MD2withRSA”显示为第一次点击,这似乎表明某个Java版本发生了变化。可能本地计算机和服务器上的verasiuons不匹配。

检查本地计算机和服务器上的Java版本。
从中可以看出,jvm 6u17禁用了MD2,因为它不安全,无论您连接到什么,都要使用MD2检查本地机器和服务器上的Java版本。
从中可以看出,jvm 6u17禁用了MD2,因为它不安全,并且无论您连接到什么,使用MD2的RSA都非常容易受到攻击,因此在Sun中被停用。。。aeh Oracle的JVM。您应该询问远程服务的所有者,他的服务器是否支持更安全的加密方法(我认为,较旧的ApacheHTTPD版本默认提供MD2withRSA…)。为了在不强制提供程序更改方法的情况下解决此问题,您可以使用自己的X509TrustManager实现来接受旧方法。

MD2withRSA易受攻击,因此在Sun中被停用。。。aeh Oracle的JVM。您应该询问远程服务的所有者,他的服务器是否支持更安全的加密方法(我认为,较旧的ApacheHTTPD版本默认提供MD2withRSA…)。为了在不强制提供程序更改方法的情况下解决此问题,您可以使用自己的X509TrustManager实现来接受旧方法。

较新的Java 7(1.7版)允许通过$Java_HOME/jre/lib/security/Java.security文件重新启用MD2。下载并安装Java 7,并在文本编辑器中修改Java.security文件,如下所示

1) 从以下属性中删除MD2
jdk.certpath.disabledAlgorithms=#MD2

2) 确保注释掉以下属性
#jdk.tls.disabledAlgorithms=MD5,SHA1,DSA,RSA密钥大小<2048

3) 重新启动java应用程序

警告:MD2在Jdk 7中默认禁用,因为它不安全。但是,可以如上所述启用MD2以支持较旧的部署。

较新的Java 7(1.7版)允许通过$Java_HOME/jre/lib/security/Java.security文件重新启用MD2。下载并安装Java 7,并在文本编辑器中修改Java.security文件,如下所示

1) 从以下属性中删除MD2
jdk.certpath.disabledAlgorithms=#MD2

2) 确保注释掉以下属性
#jdk.tls.disabledAlgorithms=MD5,SHA1,DSA,RSA密钥大小<2048

3) 重新启动java应用程序


警告:MD2在Jdk 7中默认禁用,因为它不安全。但是,可以如上所述启用它以支持较旧的部署。

您是如何提出soap请求的?看起来服务器可能需要某个安全证书,而您没有将其作为请求的一部分提供。您是如何提出soap请求的?这可能是因为服务器需要某个安全证书,而您没有在请求中提供该证书。这不是一个bug。这是一个特性;)更详细地阅读这篇文章表明,这是一个不安全方法的停用,但从第一个角度看,在那个版本中它似乎是一个bug。我编辑了我的答案,将“bug”替换为“change”。这不是bug。这是一个特性;)更详细地阅读这篇文章表明,这是一个不安全方法的停用,但从第一个角度看,在那个版本中它似乎是一个bug。我编辑了我的答案,将“bug”替换为“change”。这很有效,显然不理想,但我会与服务的所有者联系,看看是否还有其他可以做的事情(我怀疑我是否能够更改任何内容,因为一切都过时了)。非常感谢。如果所有者确实理解MD2和碰撞攻击的含义,他应该毫不犹豫地进行更改。事件MD5和SHA1现在很脆弱。这很有效,显然不理想,但我会与服务的所有者联系,看看是否还有其他可以做的事情(我怀疑我是否能够改变任何事情,因为一切都过时了)。非常感谢。如果所有者确实理解MD2和碰撞攻击的含义,他应该毫不犹豫地进行更改。事件MD5和SHA1目前易受攻击。