2008-10-03 62 views
1

我在使用ASPNET用戶導入和訪問私鑰時遇到了一些麻煩。 我知道,當一個人手動導入私鑰(.pfx文件)時,在Windows中,您可以選擇將該鑰匙標記爲可導出。 現在,據我所知,這是必要的,以便稍後檢索該私鑰。如何使用ASPNET用戶帳戶訪問私鑰?

我的問題是,我在代碼中導入私鑰,作爲ASPNET用戶,並且似乎沒有辦法將其標記爲可導出的方式,就像Windows證書導入嚮導一樣。 爲了澄清,導入工作正常,但是當我訪問現在導入的證書上的詳細信息時,沒有私鑰數據。

這是我用來導入證書的代碼,一旦我已經用正確的密碼打開.pfx文件。

public void ImportCertificate(X509Certificate2 cert, StoreName name, StoreLocation loc) 
{ 
    X509Store certStore = new X509Store(name, loc); 
    StorePermission permission = new StorePermission(PermissionState.Unrestricted); 
    permission.Flags = StorePermissionFlags.AddToStore; 
    permission.Assert(); 
    certStore.Open(OpenFlags.ReadWrite); 
    certStore.Add(cert); 
    certStore.Close(); 
} 

我是否搞錯了權限或導入這個私鑰的方式? 或者我完全用錯誤的方式去做這件事?

回答

1

我相信你需要在導入證書時設置X509KeyStorageFlags.Exportable標誌。你不顯示的代碼,但導入方法與此簽名的重載:

public override void Import(string fileName, string password, 
          X509KeyStorageFlags keyStorageFlags); 

或者這一個:

public override void Import(byte[] rawData, string password, 
          X509KeyStorageFlags keyStorageFlags); 

可以讓你把它導入之前。否則,一切看起來不錯!

Richard

相關問題