2012-04-13 120 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请求成功通过。

相关问题