2012-09-11 50 views
2

問題運行下面的代碼時:X509Certificate2 p12是否需要商店?

X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password", X509KeyStorageFlags.Exportable); 
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey; 

我得到以下錯誤:Keyset does not exist

我還沒有將證書添加到商店,這是否需要能夠訪問私鑰?

回答

6

X509KeyStorageFlags.PersistKeySet選項添加到X509Certificate2構造函數的最後一個參數。否則,當它加載p12文件時,它不會加載私鑰。具體來說:

X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password",  
    X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet); 
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey; 

如果失敗,它可能是存儲密鑰的位置的文件權限問題。有關說明和示例,請參閱X509Certificate - Keyset does not exist

+0

仍然收到相同的錯誤。 – Rutger

+0

@Rutger我在答案中加了一個額外的支票。 – akton

+0

我沒有將證書添加到商店,這是必需的嗎? – Rutger

相關問題