我正在開發一個在Windows Mobile PDA上運行的移動應用程序。該應用程序是用Java編寫的,爲了運行它,我們使用了IBM的J9 JVM。該應用程序通過HTTP與Apache Tomcat服務器進行通信,我們正在嘗試將其設置爲使用SSL。SSL HandShakeException:No_Certificate。使用IBM的J9 JVM和Apache Tomcat
我爲客戶端和服務器都生成了公鑰/私鑰,導出了自簽名證書並將它們導入到各自的密鑰庫中。最初,我試圖只使用服務器端身份驗證來實現它,並取得了成功。但我現在試圖通過在apache conf目錄的server.xml文件中設置clientAuth =「true」來獲得相互認證。
我已啓用服務器上的SSL日誌記錄,當客戶端連接服務器時報告SSLProtocolException:握手警報:no_certificate。客戶端日誌也顯示異常:
javax.net.ssl.SSLHandshakeException: unexpected_message
at com.ibm.j9.jsse.SSLSocketImpl.completeHandshake(Unknown Source)
at com.ibm.j9.jsse.SSLSocketImpl.startHandshake(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.openSocket(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.connect(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.sendRequest(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.doRequest(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.getInputStream(Unknown Source)
客戶端密鑰庫和信任是通過設置下面的系統屬性配置:
javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
javax.net.ssl.keyStore
javax.net.ssl.keyStorePassword
沒有人有任何想法如何,我可以設置客戶端身份驗證的J9 JVM?
路徑很好。信任庫與它無關,它包含服務器證書。密鑰庫更可能有錯,但我不認爲將其更改爲keystoreFile和keystorePass是有道理的。系統屬性被記錄爲keyStore和keyStorePassword。 – DaveJohnston 2010-02-08 17:31:56
你是對的,這些參數在服務器屬性中。 您是否嘗試過使用Web瀏覽器並安裝證書,請檢查您是否可以建立SSL隧道? 我確定客戶端沒有提供正確的證書。 您使用PKCS12嗎? – juanp 2010-02-09 03:08:48