首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用于grails的Apache CXF客户端插件进行双向(相互) SSL身份验证

使用用于grails的Apache CXF客户端插件进行双向(相互) SSL身份验证
EN

Stack Overflow用户
提问于 2014-12-10 05:08:07
回答 1查看 2.3K关注 0票数 1

我一直无法使Apache CXF客户端grails插件与双向SSL身份验证一起工作。我调用的web服务提供了一个开发环境URL,它不需要双向身份验证,一切工作正常。但是,他们提供的测试环境URL确实需要双向身份验证,而我无法使其正常工作。

grails应用程序在Windows服务器上的Tomcat中运行。

我已经编写了一个独立的Java测试应用程序来测试双向身份验证。我使用适当的keystore、truststore等调用它,它工作得很好。(这是一个纯Java应用程序--没有CXF。)我已经将同样的Java类导入到运行在Tomcat上的grails应用程序中,这也可以正常工作。但是,如前所述,当使用CXF调用时,它不起作用。

我在Tomcat中打开了-Djavax.net.debug=ssl,可以看到当服务器发送CertificateRequest消息时,客户端并没有发回证书。(使用Java类时,客户端使用正确的证书进行响应。)

我尝试了几种不同的方法来设置密钥库和信任库参数。当我启动Tomcat时,我正在使用++JvmOptions来设置它们:

代码语言:javascript
复制
++JvmOptions
-Xrs;
-Djavax.net.debug=ssl;
-Djavax.net.ssl.trustStore=C:\path\to\truststore.jks;
-Djavax.net.ssl.keyStore=C:\path\to\keystore.jks;
-Dhttps.cipherSuites=SSL_RSA_WITH_3DES_EDE_CBC_SHA;
-Djavax.net.ssl.keyStorePassword=password;
-Djavax.net.ssl.trustStorePassword=password

我目前使用的是cxf-client:2.0.3,不过我也尝试过使用cxf-client:1.5.6。

EN

回答 1

Stack Overflow用户

发布于 2014-12-10 18:57:53

我对grails不是很熟悉,但是你的cxf客户端调用看起来怎么样?是否将密钥库/信任库添加到http管道?

示例:

代码语言:javascript
复制
<http:conduit name="https:...">
    <http:tlsClientParameters>
        <sec:trustManagers>
                <sec:keyStore type="JKS" password="password" file="..."/>
            </sec:trustManagers>
            <sec:keyManagers keyPassword="password">
                <sec:keyStore type="JKS" password="password" file="..."/>
            </sec:keyManagers>
        <sec:cipherSuitesFilter>
        ...
        </sec:cipherSuitesFilter>
    </http:tlsClientParameters>
    <http:client AutoRedirect="true" Connection="Keep-Alive"/>   
</http:conduit>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27388864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档