我有一個 PFX 證書,里面有 CNG 密鑰(KSP 提供商信息在 PFX 中指定)。我找不到在 .NET 中導入證書的方法,以允許以純文本(MS-CAPI 格式)導出私鑰。var?cert?=?new?X509Certificate2(pfxBytes,password,X509KeyStorageFlags.Exportable);然后我使用此句柄通過調用帶有啟用標志以允許 CNG 密鑰的CryptAcquireCertificatePrivateKey函數來獲取私鑰上下文。調用成功。當我調用NCryptExportKey時,調用失敗并出現 0x8009000b 錯誤:密鑰在指定狀態下無效。為了調試這個問題,我調用了NCryptGetProperty函數來獲取導出策略,實際上,NCRYPT_ALLOW_EXPORT_FLAG標志已啟用,但NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG沒有啟用。嘗試調用NCryptSetProperty函數以在導出策略屬性中啟用此標志,但調用失敗并出現相同的 0x8009000b 錯誤。問題:如何從文件導入 .NET 中的 pfx 文件而不保留NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAGCNG 密鑰的密鑰和啟用標志?ps 由于某些原因,我僅限于 .NET 4.0/4.5。
X509Certificate2.使用 NCRYPT_ALLOW_PLAINTEXT
慕碼人8056858
2023-07-23 16:47:16