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
上記のコマンドを実行すると、次の出力が得られます。
上記のコマンドは主に Java に焦点を当てていることに注意してください。