簡體   English   中英

.NET Core 3.1 與 Net Framework 4.7 中的 X509Certificate2

[英]X509Certificate2 in .NET Core 3.1 vs .Net Framework 4.7

我正在將代碼從 .NET Framework 4.7.2 項目移植到一個新項目 .Net Core 3.1 中。 代碼需要使用 X509Certificate 從 https 端點提取數據:

        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
        req.Method = "GET";
        var cert = new X509Certificate2( X509Certificate.CreateFromCertFile("myCert.cer"));
        req.ClientCertificates.Add(cert);
        req.Timeout = timeoutMs;
        WebResponse response = req.GetResponse();
        Stream responseStream = response.GetResponseStream();

這在 .Net Framework 項目中運行良好,但復制到 .Net Core 3.1 項目中的相同代碼返回 403。兩者都是簡單的控制台應用程序。 我正在使用 .cer 文件的完整路徑,並且我已確認它已成功加載證書數據。

.Net Core 3.1 中的 X509Certificate 是否存在任何已知問題? 或者必須以不同方式做的事情? web 上的大部分信息都使用了一個證書文件和一個密鑰文件,但我只有一個.cer 文件。 這是一個問題嗎(顯然我對證書不是很熟悉)?

該行:

var cert = new X509Certificate2( X509Certificate.CreateFromCertFile("myCert.cer"));

假設您只附加公共證書,沒有關聯的私鑰。 這不足以進行客戶端證書身份驗證。 證書必須具有X509Certificate2.HasPrivateKey屬性才能返回true (例如從 PFX 導入或個人證書存儲)。 這不適用於任何 .NET 版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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