如何配置Wildfly 8.2以禁用ssl连接上的公用名验证(CXF disableCNCheck)?

时间:2015-07-13 12:44:17

标签: java web-services ssl-certificate wildfly wildfly-8

我正在使用Wildfly 8.2在工作中托管应用程序,此应用程序在某些时候需要访问仅允许SSL连接的Web服务。 Web服务不属于我的公司,我无法更改其任何配置。此Web服务使用自签名SSL证书,该证书具有与Web服务的域不同的公用名(CN)。

我已将Web服务的证书添加到JVM密钥库,但Wildfly服务器不允许通过Web服务证书上的公用名与其URL上的域名不同来完成连接。

因此,为了使我的应用程序能够完成SSL连接,我需要禁用wildfly的通用名称验证。 这就是问题到来的地方,我发现只有一些关于如何禁用该属性的解决方案,3更准确。前两个涉及在standalone.xml配置文件中添加一些额外的行,更准确地说,它们都建议我在“扩展”之后添加“system-properties”标记。

第一个:

    <extensions>
        ...
    </extensions>
    <system-properties>
        <property name="cxf.tls-client.disableCNCheck" value="true"/>
    </system-properties>

第二个:

    <extensions>
        ...
    </extensions>
    <system-properties>
        <property name="org.jboss.security.ignoreHttpsHost" value="true"/>
    </system-properties>

这两个都不适合我。第三个解决方案是在初始化服务器时使用参数“-Dorg.jboss.security.ignoreHttpsHost = true”,这也没有效果。

如何在wildfly 8.2上禁用此常用名称检查?

1 个答案:

答案 0 :(得分:1)

对于wildfly,请在standalone.xml中设置以下系统属性

<property name="java.protocol.handler.pkgs" value="com.sun.net.ssl.internal.www.protocol"/>  

<system-properties>
    <property name="java.protocol.handler.pkgs" value="com.sun.net.ssl.internal.www.protocol"/>
    <property name="org.jboss.security.ignoreHttpsHost" value="true"/>
    <property name="cxf.tls-client.disableCNCheck" value="true"/>
</system-properties>