gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:20 24 4
gpt4 key购买 nike

一段时间以来,我们一直在努力解决一个问题。

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

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

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

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

enter image description here

当我们尝试通过 .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 在请求中发送了两个证书,即客户端证书和证书颁发机构。

enter image description here

但是 .Net 客户端只发送客户端证书而不是 CA。所以服务器的防火墙不允许我们的调用。

enter image description here

所以我的问题是,我们如何在 .Net 中像 SOAP UI 一样设法通过我们的请求发送 CA 根?

如果有人可以就此问题提出任何想法,我将不胜感激!

最佳答案

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

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

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

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

关于c# - 如何从 .net 客户端发送多个(包括根 CA)证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38541693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com