2015-09-04 82 views
1

我試圖從pfx文件加載帶有私鑰的證書並將其導入LocalMachine/My(Personal)證書存儲區。我的代碼工作,除了罰款,當我查看證書存儲區中,它說無法使用私鑰導入證書pfx從Windows Server 2012上的.net c#3.5存儲

「的相關私鑰無法找到」

並進一步的certutil說

「無法找到證書和私鑰解密「

奇怪的部分是,我的代碼在Windows 7開發盒上工作正常,但在Windows Server 2008 R2或2012上沒有問題。另外奇怪的是,如果我使用mmc手動導入pfx文件,私鑰似乎仍然存在正常。

這裏是代碼我使用加載文件並導入:

// load the certificate from pfx file 
X509Certificate2 cert = new X509Certificate2(filePath, pfxPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet); 

// import to the store 
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
store.Open(OpenFlags.ReadWrite); //tried MaxAllowed as well 
store.Add(caCert); 
store.Close(); 

任何想法?對於背景信息,我也在使用BouncyCastle的早期步驟中生成代碼中的證書。我在那一步遇到了一些持續私鑰的問題,但是解決了this question的回答。此外,試圖導入的代碼以管理員身份運行。

+0

參考這個答案,http://stackoverflow.com/questions/749654/associate-private-key-to-certificate-for-pfxexportcertstoreex – Raj

+0

@Raj謝謝你的指針,但我沒有明確的使用CryptoAPI在此時此刻。我想知道是否有辦法使用c#System.Security.Cryptography.X509Certificates或相關的命名空間來做到這一點... – rusty

回答

0

離這個問題一小段時間幫助我完善了我的調查。我在

C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
中追蹤了導入證書的私鑰文件,發現該文件沒有設置所有者,也沒有設置權限(即使對於管理員或系統也沒有)。在查看商店中的證書時,手動修改這些權限會導致「關聯私鑰」消息消失。

,導致我修改我的代碼試圖將其導入到店之前設置的專用密鑰權限: https://stackoverflow.com/a/4902009/332610

萬歲!

相關問題