【发布时间】:2015-02-07 22:20:14
【问题描述】:
我无法使 Apache CXF 客户端 grails 插件与双向 SSL 身份验证一起工作。我调用的web服务提供了一个开发环境URL,不需要双向认证,一切正常。但是,他们提供的测试环境 URL 确实需要双向认证,我一直无法使其工作。
grails 应用程序正在 Windows 服务器上的 Tomcat 中运行。
我编写了一个独立的 Java 测试应用程序来测试 2 路身份验证。我用适当的密钥库、信任库等调用它,它工作正常。 (这是一个纯 Java 应用程序——没有 CXF。)我已经将这个相同的 Java 类导入到运行在 Tomcat 上的 grails 应用程序中,这也可以。但是,如前所述,使用 CXF 调用时,它不起作用。
我在 Tomcat 中开启了 -Djavax.net.debug=ssl 并且可以看到当服务器发送 CertificateRequest 消息时客户端没有发回证书。 (当使用 Java 类时,客户端会以正确的证书进行响应。)
我尝试了几种不同的方法来设置密钥库和信任库参数。我目前在启动 Tomcat 时使用 ++JvmOptions 设置它们:
++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。
【问题讨论】:
标签: java tomcat grails ssl cxf