![](/img/trans.png)
[英]C# new X509Certificate2(path) PKCS#7/P7B -> System.Security.Cryptography.CryptographicException: 'Cannot find object or property'
[英]Azure Web Application new X509Certificate2() causing System.Security.Cryptography.CryptographicException: Access denied
現在我上傳一個.pfx文件,輸入密碼並打電話
var cert = new X509Certificate2(fileData, password);
並存儲指紋等內容。我不需要將其實際存儲在服務器上,只需驗證它是否是有效的證書並存儲一些信息。 在本地這個工作(顯然我有更好的訪問我的密鑰庫)但是當我把它放在天藍色時我得到錯誤:
System.Security.Cryptography.CryptographicException:拒絕訪問。
有沒有辦法讓這些信息回避這個或使用這種方法而不會被拒絕訪問? 我對證書不是很了解,所以如果您需要更多信息請告訴我。 謝謝。
在Windows上打開PFX時,任何私鑰都會寫入磁盤。 它們將在以后刪除(除非您指定PersistKeySet),但它們仍然必須寫入(ish)。
他們在哪里寫的?
X509KeyStorageFlags.MachineKeySet
:在計算機密鑰庫中,您需要是管理員。 X509KeyStorageFlags.UserKeySet
:在用戶密鑰庫中,您的用戶配置文件可能需要存在/加載。 鑒於“拒絕訪問”,我猜你會遇到PFX本身指定機器密鑰庫的情況,為了解決這個問題你要改變你的呼叫
new X509Certificate2(fileData, password, X509KeyStorageFlags.UserKeySet)
一切都應該有效。 如果您指定UserKeySet並仍然收到錯誤,那可能是配置文件加載問題。
可以選擇在不將私鑰寫入磁盤的情況下加載PFX,但它在.NET Framework中不可用(盡管最近已添加到.NET Core中)。 如果您確實需要它,可以查看p /使用PKCS12_NO_PERSIST_KEY
標志調用PFXImportCertStore ,然后將生成的HCERTSTORE值傳遞給X509Store.ctor(IntPtr)並通過X509Store.Certificates
屬性讀取您的證書。 但請注意,大多數.NET Framework都不會理解這些證書對象具有關聯的私鑰,因此它們可能只會作為公共證書對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.