2011-11-11 132 views
2

我有使用X.509證書進行安全保護的遠程Web服務。
我生成的Web服務客戶端的東西(使用jax-ws),但需要配置,如果證書的使用。
我該如何繼續?
我想我應該在我的本地信任密鑰庫登記證書,並將其設置是這樣的:X.509安全網絡服務的Java客戶端

System.setProperty("javax.net.ssl.keyStore", keyStore); 
System.setProperty("javax.net.ssl.keyStoreType", "JKS"); 
System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword); 
System.setProperty("javax.net.ssl.trustStore", trustStore); 
System.setProperty("javax.net.ssl.trustStoreType", "JKS"); 
System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword); 

但目前尚不清楚哪些數據應作爲參數來提供。
請幫忙。
謝謝。

回答

3

密鑰庫屬性定義識別您的服務器證書:

System.setProperty("javax.net.ssl.keyStore", keyStore);

這是你的X509證書Java密鑰。你可以使用tha程序keytool來創建它。

System.setProperty("javax.net.ssl.trustStore", trustStore);

這是一個java密鑰庫與標識所述web網站的證書(或多個)。這僅供您的網絡服務軟件使用,以確保您確實在與正確的網站交談。

System.setProperty("javax.net.ssl.keyStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStoreType", "JKS");

這只是規定了javax.net.ssl.keyStore和javax.net.ssl.trustStore中的格式爲Java密鑰。

System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword); System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword);

這是一個用於創建時的Java密鑰進行加密的密碼。

+1

只需添加@sstendal所說的內容,trustStore和keystore就是包含您的可信證書和私鑰的物理文件。您的密鑰庫理想情況下應該包含您的私鑰,並且證書應該存放在您的信任庫中。您需要信任庫中的根證書頒發機構(CA--認可服務器證書的實體;例如Verisign)證書,以便完成SSL握手。 – Drona

+0

謝謝@sstendal你的答案。你描述的東西現在很清楚。你是否也可以指示我如何組織整個過程,因爲我擁有的只是這種格式的證書:'MIICGDCCAYWgAwIBAgIQMYx/1mo3y4RDkMC7Pf6tITAJBgUrDgMCHQUAMCIxIDAeBgNVBAMTF1JhZGlvT3B0IERldmVsb3B ......'我的意思是,我應該向密鑰庫添加什麼?如果我只想調用遠程WS,我應該將它添加到密鑰庫和信任庫嗎? – kardanov

+0

它看起來像你有一個base64編碼證書。您可以按照此處的說明創建pem文件:http://www.herongyang.com/Cryptography/Certificate-Format-PEM-on-Certificates.html。您應該使用keytool將其導入密鑰庫,如下所述:http://www.herongyang.com/Cryptography/Certificate-Format-keytool-Import-in-DER-and-PEM.html。 – sstendal