2012-04-13 118 views
6

我基本上需要保護我對這個服務的請求。使用JKS和/或PFX證書從C#客戶端調用Java Web服務

我已經提供了一個JAR測試客戶端和兩個文件,trust.jksClient.pfx,但我不知道如何使用它們:我明白X509Certificate2類是參與了一些辦法。

命令行執行測試客戶端如下:

java -Djavax.net.ssl.trustStore=trust.jks -Djavax.net.ssl.trustStorePassword=******** -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.keyStore=Client.pfx -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=******** -jar TestClient.jar https://myServiceurl 

它的工作原理,這樣我就可以看到兩者的服務和服務本身應適當配置。

我的C#客戶端(它是針對.NET 2.0)使用普通Web引用執行請求:

wsReferenceClient service = new wsReferenceClient(); 
//certificate code here ? 
//maybe service.ClientCertificates.Add(<X509Certificate2 object built somehow>); ? 
service.MyRequest(myParameters); 

服務器的設置應適當。

我與X509Certificate2方法裏摸索,但我不能用的東西,有道理出來,所以答案爲「你嘗試過什麼?」目前的問題是「我真的不知道該怎麼嘗試」。

任何幫助將非常感激。

+0

AFAIK JKS商店是專有的Java解決方案。您必須使用keytool導出公鑰(可能是整個鏈)並將其導入到PKCS等開放格式存儲中。 – home 2012-04-13 09:43:41

+0

正確,我寧願單獨拿走它的可信證書並使用它們。 pfx已經應該包含私鑰和證書鏈。 – 2012-04-13 10:38:05

+0

那麼,如果我理解正確,我需要以某種方式讓JKS文件可以被我的客戶使用?想想我會多一點谷歌... – Alex 2012-04-13 11:55:23

回答

7

原來我不需要對JKS文件做任何事情。

wsReferenceClient service = new wsReferenceClient(); 
X509Certificate2 cert = new X509Certificate2(); 
cert.Import("Client.pfx", "<the password>", DefaultKeySet); 
service.ClientCertificates.Add(cert); 
service.MyRequest(myParameters); 

這允許我的HTTPS請求成功通過。

相關問題