HOWTO · Java

Cacerts と Java のキーストア

このチュートリアルでは、Java の cacerts とキーストアの違いについて説明します。

このページの内容

このチュートリアルでは、cacerts と KeyStore を比較し、違いを強調します。

Java のcacertsとKeyStore

cacerts はピアの認証に使用される TrustStore であり、KeyStore は自分自身の認証に使用されます。

Keystore と TrustStore はどちらも、主に SSL/TLS を介して通信する必要があるアプリケーションに使用されます。 これらのファイルはパスワードで保護されています。

Keystore のデフォルト形式は、Java 9 の PKS12 です。 ただし、別のデフォルト形式であるJKSは、Java 8まで使用されます。 それでは、以下で KeyStore と TrustStore を個別に説明しましょう。

Java のキーストア

KeyStore は、主に暗号化の目的で使用される秘密エントリ、公開鍵、および証明書のストレージです。 KeyStore は、プログラムがサーバーとして機能し、HTTPS を使用する場合にプログラムによって使用されます。

SSL によるハンドシェーク中に、サーバー プログラムは KeyStore から秘密鍵を探します。 KeyStore はクライアント プログラムでも使用されます。

クライアント プログラムがサーバーに接続しようとするとき、それ自体を認証する必要があります。 認証中、クライアント プログラムは KeyStore から公開鍵と証明書も探します。

まとめると、KeyStore は必要なすべてのセキュリティ ファイルを保持する場所であると言えます。

Java のトラストストア

TrustStore は KeyStore の反対側にあります。 KeyStore は私たちを識別するためのファイルを保持しますが、TrustStore は他者を識別するためのファイルを保持します。

Java には、cacerts と呼ばれるバンドルされた TrustStore が含まれており、ディレクトリ $JAVA_HOME/jre/lib/security に配置されています。

Keystore と TrustStore (cacerts) のデモンストレーション

以下は、Keystore と TrustStore に関するコマンドの例です。 コマンドは次のようになります。

keytool -list -keystore cacerts

上記のコマンドを実行すると、次の出力が得られます。

cacerts vs Java のキーストア - 出力

上記のコマンドは主に Java に焦点を当てていることに注意してください。