2012-12-17 41 views
1

在在Windows環境.NET,如果一個.pfx /或.p12包含私鑰,它可以被編程安裝到證書存儲在以下方式(其中RAWDATA是包含完整.PFX /或.p12一個字節數組,公共和私有密鑰,密碼是密碼的.pfx /或.p12):我希望做同樣的在Linux編程安裝PKCS12的私鑰爲單聲道證書存儲

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
X509Certificate2 certificate = new X509Certificate2(rawData, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); 
store.Open(OpenFlags.ReadWrite); 
store.Add(certificate); 
store.Close(); 

Mono在Linux環境中的事情。上面的代碼在Windows上工作,只能在Linux上安裝證書的公鑰而不是私鑰。我已經能夠使用Mono的certmgr實用程序手動安裝.p12的私鑰,但我正在尋找一個編程解決方案。

謝謝!

回答

1

對不起,這個答案不會解決你的問題。 Mono不支持將私鑰保存到證書存儲區。 (高度)技術細節可在 this interesting discussion中找到。

在我的應用我結束了存儲證書和數據庫中的私鑰,因爲反正我的應用程序設計所需的一種集中式的證書存儲區。

+0

它可以通過經由OpenSSH的證書轉換爲PEM,然後在/sbin/.config/.mono/keypairs其加入到單密鑰庫(或任何單有可能做到這一點「手動」(單聲道以外的)離開它) - 在這種情況下,它只是應用程序調用process.start適當的問題來調用openssl。 – PhonicUK