JBoss:找不到可信证书

时间:2013-01-09 20:36:58

标签: java-ee jboss ssl-certificate

我们的外部供应商WS使用“自签名证书”,我完全按照以下主题中的说明在信任库中下载并导入证书:

Digital Certificate: How to import .cer file in to .truststore file using?

我还通过运行以下命令验证了证书是否已正确添加:

keytool -list -v -keystore keystore.jks

我在run.config(JBoss)文件中添加了以下条目:

if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djavax.net.ssl.trustStore=/jboss/jdk1.6.0_25/jre/lib/security/cacerts -Djavax.net.ssl.trustStorePassworld=changeit"
fi

重新启动的服务仍然得到以下execption:

ERROR [org.jboss.ws.core.CommonClient] Exception caught while (preparing for) performing the invocation: 
java.io.IOException: Could not transmit message 

....
....
....

Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found

我能错过什么?

1 个答案:

答案 0 :(得分:0)

您是否使用相同的JVM(您在属性javax.net.ssl.trustsotre中指向的JVM)来运行已部署应用程序的JBoss实例?

如果是这样,并且假设您似乎已在JVM-JRE cacerts文件中安装了可信证书,则不需要指定这些属性(trustStore和trustStorePassword),因为默认情况下JVM会查找可信证书$ JAVA_HOME / jre / lib / security / cacerts(只有在你想使用另一个密钥库时才需要定义这些属性)

啊,请注意,为了验证证书是否正确安装在cacerts中,您应该使用您指定的相同命令,但将-keystore参数指向$ JAVA_HOME / jre / lib / security / cacerts(而不是keystore.jks)。