https URL主机名与服务器证书上的公用名(CN)不匹配

use*_*961 5 java web-services

我收到以下错误

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.
Run Code Online (Sandbox Code Playgroud)

当我尝试连接和使用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" />
Run Code Online (Sandbox Code Playgroud)

cxf.xml文件位于WEB-INF/classes/CxfService下.

请告诉我这个问题是什么?

Agi*_*Pro 3

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

SSL 提供两种保护。

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

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

  • 完全没有保护措施
  • 加密通道,因此没有人可以看到您的数据
  • 加密通道,并确保您连接到您期望的站点。

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

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

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