如何获取和安装根CA证书
本文关键字:安装 CA 证书 何获取 获取 | 更新日期: 2023-09-27 17:54:08
我有一个问题与SslStream。AuthenticateAsClient耗时"很长"(~15秒)。这是一个已知的问题,在这篇MSDN博客文章中有解释。
给出两种可能的解
总而言之,这种行为是设计出来的。我们的选择有:1)在本地安装根CA证书,这样我们就不需要访问Internet获取受信任的根CA证书列表。2)禁用自动根证书更新功能通过GPO,所以我们不去
有人告诉我,从安全的角度来看,选项2不是一个好主意,所以我需要做选项1。
问题是我不知道如何获得根CA证书,一旦我有了它,我可能会弄清楚如何使用certutil来安装它。
我可以在这个函数中中断执行
private static bool CertificateValidationCallback(
object oSender,
X509Certificate oCertificate,
X509Chain oChain,
SslPolicyErrors oSslPolicyErrors)
{
}
所以我想我的问题是:
如何获取根CA证书?我需要什么信息才能得到它?我从哪里得到这个信息?
X509标准的权限信息访问扩展包含根CA证书的位置信息(URL),但它是一个可选字段。
https://www.rfc-editor.org/rfc/rfc5280 section-4.2.2.1
var cert = new X509Certificate2(certData);
var authInfoExtnsions = from ext in cert.Extensions.Cast<X509Extension>()
where ext.Oid.Value == "1.3.6.1.5.5.7.1.1"
select ext;
foreach (var authInfoExtnsion in authInfoExtnsions)
{
Console.WriteLine(Encoding.UTF8.GetString(authInfoExtnsion.RawData));
}
authInfoExtnsion.RawData
是一个复杂的ASN.1结构(您可以在X509标准中找到详细信息),该代码不会给您根CA证书的URL。您需要解析并获取URL。正如我所说的,权限信息访问是一个可选的扩展,但如果它存在,你会注意到根Ca证书的URL可以在控制台中读取。