web-dev-qa-db-ja.com

PKI EJBCA:EJBCAインスタンスからCAを抽出し、サブCAを保持するだけ

私は、EJBCAインスタンスからCAを抽出し、それを外部ドライブに配置するソリューションを探しています。これは、たとえば貸金庫で保護されています。したがって、EJBCAインスタンスでエンドユーザー証明書に署名するためのサブCAのみを保持します。

次に、サブCAを再度生成するか、作成済みのサブCAを取り消す必要がある場合にのみ、元に戻します。

このようにして、サーバーが侵害された場合でも、残りのサブCAのみが侵害されていることを確認できますが、ルートCAは引き続き有効です。

そのようなことをするための解決策はありますか?

ありがとう。

1
Florent

ルートCAをオフラインにすることは、適切なセキュリティポリシーであるため、非常に良いスタートです。ただし、完全に分離したい場合は、最初に同じサーバーでルートCAとサブCAを構築してから、ルートCAを削除しないでください。代わりに、最初から別々に設定する必要があります。それらを分離するために余分な努力をする必要はありません。以下に、それを実行するいくつかの方法と、実際のCAを同じ場所に保持しながらキーをロックする方法をリストします。

1-完全に独立したサーバー

最も安全な方法は、問題にお金を投じることです。つまり、ルートCA用に別のサーバーを取得します。そのサーバー上にルートCAを作成します。次に、発行CAを実行するサーバーに移動し、そのサーバーにサブCAを作成します。ルートCAにサブCAに署名してもらいます。 EJBCAユーザーガイド にこれを行う方法に関する情報があります。完了したら、ルートCAを使用してサーバーをロックできます。

2-別のディスク

2番目の方法は、EJBCA/JBossの個別のインスタンスとデータベース(通常はMySQL)を用意し、すべてのデータをリムーバブルディスクに保存することです。利点は、余分なサーバーがないことです。不利な点は、あなたが持っているものにいくらかの複雑さが追加されることです-別々の設定ファイルとsystemdスタートアップconfigs/initファイルなどが必要です。ただし、基本的には別のサーバーの場合と同じように処理しますが、サーバー全体をシャットダウンする代わりに、JBossとデータベースインスタンスをシャットダウンし、データが存在するディスクをアンマウントして、ディスクをロックします。 。

3-ディスク/サーバーの代わりにキーを削除する

ルートCAを発行CAと一緒に保持できますが、その秘密鍵は削除します。これは事実上それを破壊しています-それはそこにありますが、何にも署名できないので、悪用することはできません。これは最も安価な方法であり、ルートCAを使用する場合にも簡単になります。 これを初めてテストする前にバックアップを取ってください!

以下のすべての手順は、Web GUIからではなく、コマンドラインから実行されます。 GUIからその一部を実行できますが、移動するには実際のサーバーにアクセスする必要があるため、最初からすべてを実行する方が簡単です。

  1. ルートCAキーをPKCS#12ファイルにエクスポートします
 $ bin/ejbca.sh ca exportca TestCA /mnt/USBDrive/TestCA.p12
JBossJNDIプロバイダーを使用しています... 
キーストアパスワードを入力してください:YourVeryGoodPassword 
  1. USBドライブをアンマウントし、金庫にロックします。

  2. サーバーからキーストアを削除します

 $ bin/ejbca.sh ca removekeystore TestCA 
 JBossJNDIプロバイダーを使用しています... 

ここでGUIを見ると、TestCAがオフラインであり、アクティブ化できないことがわかります。

  1. ルートCAを再度使用する場合は、キーストアをインポートします。
 $ bin/ejbca.sh ca restorekeystore TestCA /mnt/USBDrive/TestCA.p12 -s SignatureKeyAlias -e EncryptionKeyAlias 
 JBossJNDIプロバイダーを使用しています... 
キーストアパスワードを入力してください:YourVeryGoodPassword 
 $ 

そしてもちろん、実行していることをすべて実行したら、手順3のようにキーストアを再度削除します。

5
Jenny D