簡體   English   中英

如何獲取和安裝根CA證書

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM