如何从.net客户端发送多个(包括根CA)证书

问题描述:

我们一直在试图解决一个问题。如何从.net客户端发送多个(包括根CA)证书

我们使用客户端证书的Web服务。

服务所有者给了我们一个.p12文件,它包含客户端证书以及CA和私钥。

我们可以从证书本身看到证书路径。

问题是,当我们尝试通过SOAP UI调用Web服务时,它会起作用。在SOAPUI中,我们选择.p12文件作为密钥库并设置密码。有用。

enter image description here

当我们试图通过调用.NET我们的客户端应用程序的Web服务,这是行不通的。

- 这是我们如何调用Web服务

 channelFactory = new ChannelFactory<AcquisitionAutorisationService>(binding, serviceAddress); 
     channelFactory.Credentials.ClientCertificate.Certificate = new X509Certificate2(); 
     channelFactory.Credentials.ClientCertificate.Certificate.Import(@"C:\cert\abc.p12", "password", X509KeyStorageFlags.DefaultKeySet); 

当我们监测使用Wireshark的包,我们看到,SOAPUI发送两个证书在请求包括客户端证书和证书颁发机构。

enter image description here

但.Net客户端仅发送客户端证书不CA.所以服务器的防火墙不允许我们拨打电话。

enter image description here

所以我的问题是怎么来的,我们成功地与我们像SOAP UI发送请求CA根,在.net中?

如果有人可以对这个问题有任何想法,我将不胜感激!

+0

还是没有答案?你找到了解决方案吗?我有类似的问题 –

如果第一个客户端(SOAP UI)正在发送CA证书,则它必须是本身由另一个CA签名的中间CA证书。客户端没有任何理由发送根CA证书。

这可能与在服务器上安装中间CA证书一样简单,以便第二个客户端不需要发送它。

它也可以像在本地计算机(或用户)的Windows证书存储区中的客户端上安装中间CA证书一样简单,以便在构建客户端证书链时可用。

否则,我很确定你要找的是如何让.NET在客户端证书链中发送中间码 CA证书。

+0

谢谢你的答案。中级CA证书实际安装在客户端Windows证书存储区中。但是我想知道,SOAPUI和.net客户端之间的区别是什么?因为这两个应用程序使用相同的.p12文件。 (对不起,我不是那些认证问题的专家,我可能会错误地表达这个问题) –

+0

我不知道这两个特定客户端之间的区别,但是例如,如果您要编写基于openssl的客户端,在您所做的API调用中,openssl将会或不会将中间证书添加到链中。这一切都取决于API,然后,你对该API做出了什么样的调用。 –