Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JKS和/或PFX证书从C#client调用javaweb服务_C#_Java_Ssl_Request_Certificate - Fatal编程技术网

使用JKS和/或PFX证书从C#client调用javaweb服务

使用JKS和/或PFX证书从C#client调用javaweb服务,c#,java,ssl,request,certificate,C#,Java,Ssl,Request,Certificate,我基本上需要保护我对该服务的请求 我得到了一个JAR测试客户端和两个文件,trust.jks和client.pfx,但我不知道如何使用它们:我知道X509Certificate2类以某种方式涉及其中 执行测试客户端的命令行如下所示: java -Djavax.net.ssl.trustStore=trust.jks -Djavax.net.ssl.trustStorePassword=******** -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.

我基本上需要保护我对该服务的请求

我得到了一个
JAR
测试客户端和两个文件,
trust.jks
client.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);
wsReferenceClient服务=新的wsReferenceClient();
//证书代码在这里?
//可能是service.ClientCertificates.Add()?
服务.MyRequest(myParameters);
应正确设置服务器设置

我摸索了
X509Certificate2
方法,但我找不出有意义的东西,所以现在对“你尝试了什么?”问题的答案是“我真的不知道首先要尝试什么”


任何帮助都将不胜感激。

事实证明,我不需要对
JKS
文件做任何事情

wsReferenceClient service = new wsReferenceClient();
X509Certificate2 cert = new X509Certificate2();
cert.Import("Client.pfx", "<the password>", DefaultKeySet);
service.ClientCertificates.Add(cert);
service.MyRequest(myParameters);
wsReferenceClient服务=新的wsReferenceClient();
X509Certificate2证书=新的X509Certificate2();
cert.Import(“Client.pfx”,“DefaultKeySet”);
service.ClientCertificates.Add(cert);
服务.MyRequest(myParameters);

这允许我的HTTPS请求成功通过。

AFAIK JKS存储是一个专有的Java解决方案。您必须使用keytool导出公钥(可能是整个链),并将其导入到开放格式存储(如PKCS)中。正确,尽管我宁愿单独从中获取可信证书并使用它们。pfx应该已经包含了私钥和证书链。所以,如果我理解正确,我需要让JKS文件以某种方式可供我的客户使用?我想再搜索一下……你是说X509keystrageFlags.DefaultKeySet