2012-11-03 142 views
5

匹配的通用名称(CN),我收到以下错误的HTTPS URL主机名不上的服务器证书

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 /类/ CxfService。

请让我知道什么是问题?

+0

是不是cxf.xml文件应该直接在'WEB-INF/classes'下? –

+0

@Peter,谢谢你的回应,但是cxf.xml的位置在这里很重要,因为它在WEB-INF/classes下是1级。 – user1795961

+0

@Peter:我尝试将cxf.xml文件放在WEB-INF/classes下,但这也没有帮助。仍然是同样的消息。 – user1795961

回答

1

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

SSL提供了两种保护。

  1. 隐私:它提供了将数据传递,以便其他人可以看到数据
  2. 来源保证加密通道:它还提供了您连接到网站,你要求被连接到保证。

然后,您可以看到三个级别的安全性:在所有

  • 加密通道

    • 没有保护,所以没有人可以看到你的数据
    • 加密通道,以及保证您连接到您期望的网站。

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

    问自己问题:你担心有人会攻击DNS系统,并导致你的请求(通过DNS名称)被路由到一个服务器,然后服务器将提供虚假数据,而不是你的网络服务期望。它肯定会发生,我不会说它永远不会发生,但它是非常罕见的。见more discussion of this

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

  • 相关问题