gpt4 book ai didi

.net - .NET 中的 TLS - 第三方根 CA 未被识别为受信任的根 CA

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:29 30 4
gpt4 key购买 nike

我正在尝试在我的 .NET 应用程序和我安装了第三方根 CA 证书和中间 CA 证书的网站之间建立 TLS 连接:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
var handler = new WebRequestHandler
{
ClientCertificateOptions = ClientCertificateOption.Manual
};
handler.ClientCertificates.Add(someClientCertificate);
var httpClient = new HttpClient(handler);
httpClient.DefaultRequestHeaders.AcceptCharset.Add(new StringWithQualityHeaderValue("utf-8"));
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var httpResponseMessage = httpClient.GetAsync("https://somewebsite.com").Result;

当我尝试这样做时,我在服务器证书验证期间收到以下错误:

(PartialChain) A certificate chain could not be built to a trusted root authority.

当我将根 CA 证书安装到受信任的根 CA 存储时,错误消失了。

这种行为的原因是什么?从我读过的内容(参见 https://security.stackexchange.com/questions/140211/whats-the-difference-between-trusted-root-certification-authorities-and-thir )来看,我的印象是第三方根 CA 存储基本上只是受信任的根 CA 存储的一个子集,因此应该成功构建链。

请注意,将根 CA 证书安装到受信任的根 CA 存储不是我的选择。

最佳答案

由于我一直不明白的原因,CurrentUser\ThirdPartyRoot 存储区似乎没有任何功能。至少,它没有以类似于 LocalMachine\ThirdPartyRoot 的方式链接到链构建者信任决策。

http://kreelbits.blogspot.com/2014/02/whats-purpose-of-users-third-party-root.html有一点 self 发现,它显示了 CurrentUser\Root 存储的支持实现与 LocalMachine\Root 的结构不同。从中可以推断出“Root”(而不是“ThirdPartyRoot”)存储是唯一实际用于信任决策的存储(LM\ThirdPartyRoot 通过存储链接包含在内)。

关于.net - .NET 中的 TLS - 第三方根 CA 未被识别为受信任的根 CA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855951/

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