2008-10-06 64 views
3

我發現自己需要存儲公共密鑰證書,以及一個私人密鑰證書用於內部應用程序。在DB中存儲X509證書 - 是或否?

我們團隊的一位成員建議將X509證書存儲在數據庫中,而不是將其存儲在Windows證書存儲區中,就像我們以前一直在做的那樣。我不喜歡重新發明輪子,但我必須至少考慮這個想法。這意味着保持我們的數據更集中,這是好的,我想。

,我可以看到最初的障礙是:

  • 私鑰仍然需要存儲在某個地方,我不知道是否shoehorning它變成一個「公鑰」表是一個好主意。我不喜歡爲單個元素設置表格的想法。也許只是將私鑰保存爲本地文件? (例如.pfx文件)。
  • 吊銷列表。我們可能必須建立一個處理撤銷公鑰的流程。

我沒有很多與X509證書的經驗,所以,我的問題是:是否有任何其他的問題,我們很可能會遇到存儲公鑰證書在數據庫中,而不是與Windows證書去商店?

值得注意的是,該應用程序將推出到多個業務客戶端服務器上,因此將所有數據保存在一個位置將使備份更加容易。哦,並且正在討論的內部應用程序正在用C#開發。

謝謝!

回答

3

你的應用程序的目的是什麼?

如果您正在處理應用程序中的所有加密項,並且可以引用PKCS#12證書+私鑰文件,那麼執行數據庫路由可能沒問題。

如果您需要使用Windows Crypto API訪問證書,那麼您可能會想要繼續使用內置證書存儲。您可以在此獲得一些優勢,因爲您可以保護外部設備上的私鑰,如智能卡或硬件安全模塊(HSM)。

如果您要在本地磁盤上存儲所有內容,您需要確保您經過大量努力來保護私鑰。請務必使用強大的密碼並使用最佳做法來保護您的應用中的此密碼。

1

我不願意將私鑰移到任何其他位置,除非真的有必要。如果密鑰用於簽名,則不需要,只有在密鑰用於解密時才需要,並且您希望將其存檔以備將來使用。即使在這種情況下,頒發證書的證書頒發機構通常也能夠處理存檔和恢復。對於更受歡迎的CA(例如Microsoft和委託人)來說,情況確實如此。

如果您必須存儲它,然後使用AES和一個可以在HSM(硬件安全模塊)或智能卡上進行保護的密鑰對其進行加密。不要將此密鑰保存爲純文本(在文件或註冊表中)。

您還希望保護此密鑰在其生成位置和中央數據庫之間傳輸。SSL或VPN等

吊銷列表由證書頒發機構在大多數環境中發佈,通常發佈到LDAP或目錄或兩者。