在Sun Glassfish服务器中,我部署了一个通过SSL与外部Web服务进行通信的应用程序。
我已使用java keytool cli(keytool -import -trustcacerts -keystore cacerts.jks -alias somealias -file somecert.cer
)在cacerts.jks中手动导入证书。
我验证一切正常,但经过一段时间后停止工作,我在日志中得到以下输出:
[#|2010-06-18T09:13:23.930+0200|WARNING|sun-appserver9.1|...|_ThreadID=850;_ThreadName=p: thread-pool-1; w: 901;javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: The certificate chain from the server is not trusted|...|#]
从此处服务停止工作。根据日志,在异常发生前不久,证书被质疑,服务器默认回复否,我怀疑这是产生错误的原因。
但是什么触发服务器突然质疑证书?证书已导入并在密钥库中标记为受信任。所有日期都可以。我错过了什么吗?
答案 0 :(得分:1)
也许有一些其他应用程序正在更改系统属性(javax.net.ssl.trustStore
)。 javax.net.ssl.trustStore
指向可信密钥库。尝试打印出此System属性以查看它是否更改。
另一种选择是使用以下选项启动JVM
-Djavax.net.debug=SSL,handshake,data,trustmanager
这应该会在stdout日志文件中为您提供一些详细的输出。