5

我收到以下错误

javax.xml.ws.soap.SOAPFaultException: Marshalling Error: The https URL hostname does not match the Common Name (CN) on the server certificate.  To disable this check (NOT recommended for production) set the CXF client TLS configuration property "disableCNCheck" to true.

当我尝试连接和使用 Web 服务时。

我在 cxf.xml 中添加了以下几行,但它仍然不起作用。

<http-conf:conduit  name="*.http-conduit">
<!--  deactivate HTTPS url hostname verification (localhost, etc)
WARNING ! disableCNcheck=true should NOT be used in production -->
<http-conf:tlsClientParameters  disableCNCheck="true" />

cxf.xml 文件放在WEB-INF/classes/CxfService 下。

请让我知道会是什么问题?

4

1 回答 1

2

这种配置可能没有真正的问题。您在 Web 服务的 URL 中使用的主机名与证书中的主机名不匹配,但这可能是出于多种合法原因,但仍允许访问正确的数据。

SSL 提供两种保护。

  1. 隐私:它提供了一个加密通道,数据通过该通道传递,因此其他人无法看到该数据
  2. 来源保证:它还保证您已连接到您要求连接的站点。

然后,您可以看到三个安全级别:

  • 根本没有保护
  • 加密通道,因此没有人可以看到您的数据
  • 加密通道,以及确保您连接到您期望的站点。

您要禁用的是后一个功能。该站点提供了一个加密证书,可以对其进行解码以说明用于访问该站点的 DNS 名称。如果您使用的名称与证书中的名称不匹配,您会收到此警告。您可能知道,有多种方法可以寻址服务器,并且证书仅匹配证书所针对的一个 DNS 名称。也许您没有使用正确的名称访问服务?或者您可能有一个“自签名”服务,它提供加​​密通道,但不提供来源保证。

要问自己的问题:您是否担心有人会入侵 DNS 系统,并导致您的请求(通过 DNS 名称)被路由到服务器,然后该服务器将提供虚假数据来代替您期望的 Web 服务。它肯定会发生,我不会说它永远不会发生,但它非常罕见。查看更多关于此的讨论

这就是潜在的问题:有人可能会欺骗您正在调用的 Web 服务。安全专家永远不会建议妥协的立场,但您应该评估数据的价值、欺骗服务的可能性以及这种欺骗可能造成的损害。如果这是一个重大问题,那么您必须使用与证书匹配的主机名,或者您必须获得与您使用的主机名匹配的证书。

于 2013-01-02T04:02:47.240 回答