[英]How to get and install a root CA certificate
我在SslStream.AuthenticateAsClient上花費了“很長時間”(約15秒)的問題。 這是一個已知問題,並在此MSDN博客文章中進行了解釋。
它給出了兩種可能的解決方案
總結起來,這種行為是設計使然。 我們提供的選項有:1)在本地安裝根CA證書,因此我們無需訪問Internet即可獲得受信任的根CA證書的列表。 2)通過GPO禁用“自動根證書更新”功能,因此無論如何我們都不會訪問Internet。
從安全性的角度,我被告知選項2不是一個好主意,因此我需要執行選項1。
問題是我不知道如何獲取根CA證書。 一旦有了它,我大概就能弄清楚如何使用certutil進行安裝。
我可以中斷執行此功能
private static bool CertificateValidationCallback(
object oSender,
X509Certificate oCertificate,
X509Chain oChain,
SslPolicyErrors oSslPolicyErrors)
{
}
所以我想我的問題是:
如何獲得根CA證書? 我需要什么信息? 我從哪里獲得此信息?
X509標准的頒發機構信息訪問擴展包含根CA證書的位置信息(URL),但這是一個可選字段。
http://tools.ietf.org/html/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。 正如我所說的,“權威信息訪問”是一個可選擴展,但是如果存在,您會注意到可以在控制台中讀取“根證書”的URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.