Certificate

PKI EJBCA : 從 EJBCA 實例中提取 CA 並保留子 CA

  • April 14, 2016

我正在尋找一種從 EJBCA 實例中提取 CA 的解決方案,將其放在外部驅動器上,例如,該驅動器被固定在保險箱中。因此,我只保留用於在 EJBCA 實例中籤署最終使用者證書的子 CA。

然後我只會在需要再次生成 sub-ca 或撤銷已經創建的 sub-ca 時將其放回去。

這樣我就可以確保即使我的伺服器被入侵,我確信只有剩餘的 sub-ca 被入侵,但我的根 ca 仍然有效。

有沒有辦法做這樣的事情?

謝謝。

使根 CA 離線是一個可靠的安全策略,因此這是一個很好的開始。但是,如果您希望它完全分開,您不應該首先在同一伺服器中建構根 CA 和子 CA,然後刪除根 CA - 相反,您應該從一開始就單獨設置它們,這樣您就不會不需要通過任何額外的努力將它們分開。我將在下面列出幾種解決方法,以及一種在將實際 CA 保持在同一個位置的同時鎖定密鑰的方法。

1 - 完全獨立的伺服器

最安全的方法是花錢解決問題 - 即為根 CA 獲取單獨的伺服器。在該伺服器上創建根 CA。然後轉到您將在其上執行頒發 CA 的伺服器並在該伺服器上創建子 CA。讓根 CA 簽署子 CA;EJBCA 使用者指南中有關於如何執行此操作的資訊。完成後,您可以鎖定帶有根 CA 的伺服器。

2 - 單獨的磁碟

第二種方法是擁有一個單獨的 EJBCA/JBoss 實例和數據庫(通常是 MySQL),其中所有數據都儲存在可移動磁碟上。優點是您沒有額外的伺服器。缺點是增加了一些複雜性 - 你需要單獨的配置文件和 systemd 啟動配置/初始化文件,等等。但是你基本上會以與單獨伺服器相同的方式進行操作,除了關閉整個伺服器,而是關閉 JBoss 和數據庫實例,解除安裝它們的數據所在的磁碟,然後鎖定磁碟.

3 - 刪除密鑰而不是磁碟/伺服器

您可以將根 CA 與發布 CA 一起保留,但刪除其私鑰。這實際上削弱了它 - 它在那裡,但它不能簽署任何東西,所以它不能被濫用。這是最便宜的方式,並且在您使用根 CA 時也更容易。在第一次測試之前請務必備份!

下面的所有步驟都是從命令行完成的,而不是從 Web GUI 完成的。您可以從 GUI 中完成其中的一些操作,但您仍然需要訪問實際伺服器才能移動內容,所以我發現從那裡開始做所有事情都更容易。

  1. 將根 CA 密鑰導出到 PKCS#12 文件
$ bin / ejbca.sh 作為導出器 TestCA /mnt/USBDrive/TestCA.p12
使用 JBoss JNDI 提供程序...
輸入密鑰庫密碼:YourVeryGoodPassword
  1. 解除安裝 USB 驅動器並將其鎖定在保險箱中。
  2. 從伺服器中刪除密鑰庫
$ bin/ejbca.sh ca removekeystore TestCA
使用 JBoss JNDI 提供程序...

如果您現在查看 GUI,您將看到 TestCA 處於離線狀態並且無法啟動。

  1. 當您想再次使用根 CA 時,請導入密鑰庫:
$ bin/ejbca.sh ca restorekeystore TestCA /mnt/USBDrive/TestCA.p12 -s SignatureKeyAlias -e EncryptionKeyAlias
使用 JBoss JNDI 提供程序...
輸入密鑰庫密碼:YourVeryGoodPassword
$

當然,一旦你完成了你正在做的任何事情,就像在第 3 步中一樣再次刪除密鑰庫。

引用自:https://serverfault.com/questions/770311