複数の Java キーストア

複数の Java キーストア

次のコマンドを使用してキーペアを作成しました。

"%JAVA_HOME%\bin\keytool" -genkeypair -keysize 2048 -alias tomcat -keyalg RSA -sigalg SHA256withRSA

jdk/lib/security フォルダーにキー ストアがあり、jre/lib/security フォルダーにも別のキー ストアがあることに気付きました。これらのストアの 1 つに、先ほど作成したキー ペアが格納されているものと想定しました。キー ペアは、ログインしたユーザーのディレクトリに作成されたデフォルトのキー ストアに作成されました。

最初の質問は、デフォルトのキーストアがユーザー ディレクトリにあるのはなぜかということです。これは奇妙に思えます。そのキーストアを移動できますか?

2 番目の質問は、なぜキーストアがこんなに多いのかということです。

最後の質問ですが、私のキー ペアはデフォルト ストア内の唯一のキーなので、それを別の場所に移動/コピーする必要がありますか? ICA による署名が必要なので、それだけでは適切ではないようです。

答え1

Java は、アップデートのたびにデフォルトのキーストアを上書きします (ほとんどの場合、新しい場所にインストールされ、以前の場所が消去されます)。そのため、パッケージをアップデートするたびに、ユーザーが作成した秘密キーがすべて削除されます (アップデートには、信頼されていない CA を削除するなど、デフォルトのトラストストアの変更も含まれる可能性があるため)。そのため、デフォルト (および最も健全な方法) では、ユーザーのフォルダーにデータを保存します。こうすることで、アップデートから分離されます。また、同じマシン上のすべてのユーザーが他のユーザーの秘密キーにアクセスしたり、デフォルトのトラストストアを操作してカスタム CA を許可したりできると、セキュリティ上の問題になります。

Windows 証明書も同様に動作します。デフォルトでは、現在のユーザーの個人用ストレージが表示されます。新しい秘密キーまたは信頼された証明書は現在のユーザーにのみ影響しますが、マシンには Windows が出荷されたときのデフォルトが引き続き適用されます (更新のたびに、新しい CA や信頼されていない CA などのデフォルトが変更されます)。

ユーザーが行った操作は、同じマシン上の他のユーザーに影響を与えてはなりません。

JRE と JDK については、前者は環境用running(つまり、アプリケーションの標準的な使用法用) であり、後者はdevelopment異なるニーズ用です。アプリケーション サーバーは、ページなどを*.jspオンザフライで「コンパイル」する必要があるため、JDK が必要です。JDK には独自の JRE が含まれているため、JRE が動作するために必要なすべてのものの独自のコピーがあります。クライアント (ユーザー) にはサーバーとは異なるサポートを提供する必要がある可能性があるため (つまり、JRE と JDK が異なるバージョンを使用している可能性があります)、共通部分を共有すると干渉する可能性があります。

-keystore file.jks入力した同じコマンド内でキーストア (名前と場所) を変更できますが、Java が同じキーストアを使用するには、他のコマンドまたは構成で同じファイルを参照する必要があります。エイリアスに名前を付けたのでtomcat、アプリケーション サーバーのキーストアとして使用するものと想定します。そのため、server.xml (または catalina.xml) ファイルでキーストアの場所を構成する必要があります。

/etc/ssl/サーバーのキーストアは、などのアクセスが制限されたディレクトリ (サーバーを実行しているユーザーのみが読み取り可能) に配置する必要があります。

ファイル自体の内容については、署名が必要なので、まず自己署名キーペアを作成し (実行したとおり)、次に CA に送信する CSR (証明書署名要求) を作成します。その後、チェーン全体 (新しく署名した証明書と CA の証明書チェーン) を同じキーストアの同じエイリアスにインポートする必要があります。キーストアでは依然として 1 つのエントリですが、そのエイリアスの下に複数の証明書 (および秘密キー) が含まれます。

サーバーが別のサーバーに接続する必要がない場合は、そのキーストアに他の証明書を含めないでください。必要な場合でも、代わりに別のトラストストア (cacerts ファイルと同様に、CA のみを含む 2 番目のキーストア) を用意する必要があります (または、JRE のデフォルトのトラストストアを使用するか、同じキーストアに CA を含めます)。

関連情報