我收到以下错误
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。
下请告诉我这个问题是什么?
答案 0 :(得分:1)
此配置可能没有实际问题。您在Web服务的URL中使用的主机名与证书中的主机名不匹配,但这可能有许多合理的原因,同时仍允许访问正确的数据。
SSL提供两种保护措施。
然后,您可以看到三个安全级别:
您正在禁用后一种功能。该站点提供加密证书,可以对其进行解码以说明用于访问站点的DNS名称。如果您使用的名称与证书中的名称不匹配,则会收到此警告。您可能知道,有多种方法可以寻址服务器,并且证书只匹配证书所用的一个DNS名称。也许您没有使用正确的名称访问该服务?或者您可能有“自签名”服务,它提供加密频道,但不提供源保证。
要问自己的问题:您是否担心有人会破解DNS系统,并导致您的请求(通过DNS名称)被路由到服务器,然后服务器将提供虚假数据来代替您期望的Web服务。它肯定会发生,我不会说它永远不会发生,但它是非常罕见的。请参阅more discussion of this。
这是潜在的问题:有人可能欺骗您正在呼叫的Web服务。安全专家永远不会建议妥协的立场,但您应该评估数据的价值,欺骗服务的可能性以及这种欺骗会造成的损害。如果这是一个重大问题,那么您必须使用与证书匹配的主机名,或者您必须获得与您使用的主机名匹配的证书。