我有一個部署在需要雙向SSL身份驗證的SUNWappserver上的webapp-1。我可以爲它編寫一個Java客戶端1,它工作得很好。兩個WebApps之間的SSL握手
但是,當我爲webapp-1編寫客戶端-2作爲web服務(而不是獨立的java程序)時,我遇到了問題。
我在jetty-8服務器上部署client-2。在SSL握手過程中,Jetty首先從SUNWappserver獲得證書(可以:找到可信證書),然後Jetty從SUNWappserver(以及證書頒發機構)接收證書請求。但是,Jetty只是回覆一個空的證書鏈。
.
.
*** CertificateRequest
Cert Types: RSA, DSS
Cert Authorities:
****<CNs removed from here>****
*** ServerHelloDone
*** Certificate chain
***
*** ClientKeyExchange, RSA PreMasterSecret, TLSv1
.
.
我不確定發生了什麼。是否需要啓用jetty-ssl.xml配置中的某些設置,以便使用證書鏈答覆?下面是我使用的是現在
<Set name="KeyStore"><SystemProperty name="jetty.home" default="." />/server-certs/keyStore.jks</Set>
<Set name="KeyStorePassword">$PASS</Set>
<Set name="KeyManagerPassword">$PASS</Set>
<Set name="TrustStore"><SystemProperty name="jetty.home" default="." />/server-certs/trustStore.jks</Set>
<Set name="TrustStorePassword">$PASS</Set>
<Set name="certAlias">$CORRECT_ALIAS</Set>
<Set name="wantClientAuth">true</Set>
我的信任庫,然後密鑰庫中的選項罰款,因爲他們當我使用客戶端作爲一個獨立的Java應用程序(而不是部署碼頭服務器)上運行。當我啓動Jetty服務器時,Jetty正確讀取keyStore和trustStore。我也嘗試在啓動Jetty服務器時給予-Djavax.net.ssl.trustStore等作爲jvm選項。