2017-07-10 101 views
0

我有一個自託管的WCF應用程序,它充當服務器,我想在Windows計算機上安裝/部署它。C#X509Certificate2:在哪裏存儲私鑰?

該應用程序使用我使用makecert.exe創建的自簽名證書。所以PFX,CER和PVK在那裏並且可用。一切正常。

在這個時間點上,僅用於測試,應用程序將從嵌入資源中讀取證書和私鑰。這意味着兩者都被編譯到應用程序中,這是一個高度安全風險。

我已經知道,存儲這些數據的最常見方式是Windows證書存儲。而且我也知道,如何保存並從Windows證書存儲中讀取。

但有件事,我還是不明白:

在哪裏存儲證書(CER)的私有密鑰(PVK),讓我的應用程序能夠使用的CER?

我的意思是,如果我的應用程序可以讀取它,那麼任何有權訪問此機器的人都可以讀取它。或者這是錯誤的?

我是否必須自己照顧自己,或者是否有Windows機器的「行業標準」,以保存和閱讀PVK?

回答

1

Windows證書存儲是存儲證書(即CA)或使用私鑰(End entity)的證書的最常見位置。

如果存儲證書(與私鑰 - PFX)在LOCALMACHINE \我店,那麼你可以指定誰(什麼賬戶)可以訪問私鑰的權限。它通過certlm.msc工具完成。系統帳戶默認具有訪問權限,因此任何系統服務都可以使用私鑰。

還有其他的方式來存儲私鑰(如智能卡,HSM,網絡HSM等)和其他方式來訪問私鑰(如PKCS#11)。

+0

謝謝你,pepo。如果你說「帳戶」,你的意思是Windows帳戶,不是嗎?因此,該軟件必須在「系統帳戶」下或運行軟件的帳戶下運行。有什麼方法,只有軟件可以訪問私鑰?例如,通過另一個密碼或另一個祕密? – Michael

+1

是的,帳戶= Windows帳戶。我不知道有一種方法只允許訪問此應用程序,也不允許其他應用程序訪問。那麼,如果您使用PKCS#11訪問私鑰,則會有一個登錄密碼。您可以使用此密碼啓動應用程序,並且只有該應用程序才能訪問私鑰。但是使用PKCS#11意味着你必須自己實現幾乎所有的功能。 – pepo

+1

「只有軟件可以訪問私鑰」 - 軟件不是安全邊界。爲了您的目標,您必須將密鑰保存在軟件中。 – Crypt32