簡體   English   中英

如何使用私鑰獲取證書的base 64編碼值?

[英]How to get the base 64 encoded value of a certificate with private key?

按照上一個問題 ,我有一些代碼需要獲得帶有私鑰的X509證書。 如答案中所述,在生產中,這將使用X509Store發生。

單元測試的最佳方法是什么? 我想使用不同於生產的證書來開發和測試,因此我可以創建一個CertificateRepository接口來提供不同的實現。

對於測試/開發實現,最好只使用證書的base64編碼字符串,並使用虛擬密碼和專用測試/開發證書創建一個證書實例。 但到目前為止,我一直無法弄清楚如何使用私鑰作為base64字符串對證書進行編碼。 每次我嘗試從MMC導出證書作為base-64時,它只對公鑰進行編碼。

我無法弄明白如何用mmc做到這一點。 但是我確實弄清楚如何在代碼中執行此操作:

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var certificate = store.Certificates.Find(X509FindType.FindByThumbprint, 
    "BLABLABLA", false)[0]; // doesn't matter how you get the cert
var exported = certificate.Export(X509ContentType.Pfx, "the password");
var base64 = Convert.ToBase64String(exported);
store.Close();

只要您從x 509商店獲得的證書具有私鑰,它將最終出現在導出的字節arrray中,然后您可以將其轉換為base64字符串。

將證書添加到商店時,請確保將私鑰標記為可導出。

如果使用makecert創建證書,請添加-pe選項以使私鑰可導出。

暫無
暫無

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

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