WLP中的出站SSL连接
问题描述:
我有一个启用了spring security的Web应用程序,它使用通过WLP部署的SSL连接到LDAP。我在jvm.options
文件中指定的信任库,然后如下密码WLP中的出站SSL连接
-Djavax.net.ssl.trustStore=path/to/keystore
-Djavax.net.ssl.trustStorePassword=password
我server.xml
看起来如下
<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>jsp-2.2</feature>
<feature>ssl-1.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>
<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443" />
<keyStore id="defaultKeyStore" location="/path/to/identity.jks" password="password" provider="SUN" />
<webContainer deferServletLoad="false" />
<application id="appId" location="/path/to/app.war" name="app" type="war" />
</server>
不过,我得到下面的异常
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我尝试同样的信任存储与一个独立的Java程序,它的工作原理。任何帮助表示赞赏。
注:如果我有可信CA在identity.jks它的工作原理
感谢 穆拉利
答
你identity.jks不能被识别,因为它不与HTTP端点的关联。应该不需要使用JSSE系统属性,因为在那里也可以定义信任库。你没有提到你的wlp版本。 8.5在这里看到http://www-01.ibm.com/support/knowledgecenter/SSD28V_8.5.5/com.ibm.websphere.wlp.core.doc/ae/rwlp_ssl.html
(WebSphere Application Server的开发工具Eclipse的提供编辑server.xml中的用户界面)
你的server.xml应该是这样的:
<?xml version="1.0" encoding="UTF-8" ?>
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>jsp-2.2</feature>
<feature>ssl-1.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>
<keyStore id="keyStore" location="/path/to/identity.jks" password="keyStorePassword" type="jks" />
<keyStore id="trustStore" location="/path/to/truststore.jks" password="trustStorePassword" type="jks" />
<sslDefault sslRef="defaultSSLConfig" />
<ssl id="defaultSSLConfig" keyStoreRef="keyStore" serverKeyAlias="serverKeyAlias" trustStoreRef="trustStore" />
<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443">
<sslOptions sslRef="defaultSSLConfig"></sslOptions>
</httpEndpoint>
<webContainer deferServletLoad="false" />
<application id="appId" location="/path/to/app.war" name="app" type="war" />
</server>
请运行用“-Djavax.net.debug = all”来获得完整的SSL调试日志,并在这里粘贴问题。 – 2014-11-06 23:02:32
您为什么不能使用identity.jks来存储可信任的CA的任何原因? – Gas 2014-11-07 00:22:49
我希望它与众不同,因为服务器证书是从外部获取的,CA证书是所有环境的标准。但看起来我必须选择一个密钥存储选项。 – Murali 2014-11-07 03:05:14