2010-06-18 99 views
3

在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|...|#]

而且從這裏的服務停止工作。根據日誌,在發生異常之前不久,證書會被質疑,服務器默認回覆否,我懷疑這是產生錯誤的原因。

但是什麼觸發了服務器突然提問證書?證書已導入並在密鑰庫中標記爲可信。所有日期都可以。我錯過了什麼嗎?

回答

1

也許有一些其他應用程序正在更改系統屬性(javax.net.ssl.trustStore)。 javax.net.ssl.trustStore是指向可信密鑰庫的內容。嘗試打印出這個系統屬性,看看它是否發生了變化。 另一種選擇是使用以下選項啓動JVM -Djavax.net.debug=SSL,handshake,data,trustmanager 這應該在stdout日誌文件中給出一些詳細的輸出。