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

时间:2012-11-03 05:10:47

标签: 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.

当我尝试连接并使用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。

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

1 个答案:

答案 0 :(得分:1)

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

SSL提供两种保护措施。

  1. 隐私:它提供了一个加密通道,数据通过该通道,以便其他人无法看到该数据
  2. 来源保证:它还保证您已连接到要求连接的网站。
  3. 然后,您可以看到三个安全级别:

    • 根本没有保护
    • 加密频道,因此无人可以看到您的数据
    • 加密频道,并保证您已连接到预期的网站。

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

    要问自己的问题:您是否担心有人会破解DNS系统,并导致您的请求(通过DNS名称)被路由到服务器,然后服务器将提供虚假数据来代替您期望的Web服务。它肯定会发生,我不会说它永远不会发生,但它是非常罕见的。请参阅more discussion of this

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