【发布时间】:2016-07-23 12:16:21
【问题描述】:
一段时间以来,我们一直在尝试解决一个问题。
我们使用带有客户端证书的 Web 服务。
服务所有者给了我们一个 .p12 文件,它包含客户端证书和 CA 和私钥。
我们可以从证书本身看到认证路径。
问题是,当我们尝试通过 SOAP UI 调用 Web 服务时,它可以工作。在 SOAPUI 中,我们选择 .p12 文件作为密钥库并设置密码。它有效。
当我们尝试通过 .net 客户端应用程序调用 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 在请求中发送了两个证书,分别是客户端证书和证书颁发机构。
但是 .Net 客户端只发送客户端证书而不发送 CA。所以服务器的防火墙不允许我们调用。
所以我的问题是,我们如何设法在 .Net 中通过我们的请求(如 SOAP UI)发送 CA 根?
如果有人能就这个问题提供任何想法,我将不胜感激!
【问题讨论】:
-
还是没有答案?你找到解决办法了吗?我也有类似的问题
标签: c# web-services ssl certificate client-certificates