サーバー側とクライアント側のセキュリティ設定において、keystoreとtruststoreの役割と配置について説明します。
keystoreとtruststoreの概要
keystore:
証明書と秘密鍵を格納する。
主にサーバー側で使用されるが、クライアント側でも必要に応じて使用される。
自分自身の証明書と秘密鍵を管理するためのストア。
truststore:
信頼する証明書を格納する。
クライアント側とサーバー側の両方で使用される。
他のエンティティ(サーバーやクライアント)の証明書を信頼するためのストア。
サーバー側の設定
keystore
サーバーは自身の証明書と秘密鍵を使用してクライアントに対する認証を行うため、keystoreが必要です。
keystoreの作成には、通常以下のようなコマンドを使用します
keytool -genkeypair -alias server-alias -keyalg RSA -keysize 2048 -keystore server.keystore
truststore
サーバーがクライアント証明書を信頼する場合、または他のサーバーとの通信において相手の証明書を検証する必要がある場合、truststoreを使用します。
truststoreに証明書を追加する例:
keytool -importcert -alias ca-cert -file ca-cert.cer -keystore server.truststore
クライアント側の設定
keystore
クライアントが自身を認証するための証明書と秘密鍵が必要な場合、keystoreを使用します。
クライアントのkeystoreの作成:
keytool -genkeypair -alias client-alias -keyalg RSA -keysize 2048 -keystore client.keystore
truststore
クライアントはサーバーの証明書を検証する必要があるため、truststoreが必要です。
サーバーの証明書を信頼するための証明書をtruststoreに追加する例
keytool -importcert -alias server-cert -file server-cert.cer -keystore client.truststore
ファイルの配置
サーバー側のkeystoreとtruststore:
サーバーのアプリケーションがアクセス可能な場所に配置します。多くの場合、サーバーの設定ファイルでパスを指定します。
クライアント側のkeystoreとtruststore:
クライアントアプリケーションがアクセス可能な場所に配置します。Javaプログラムでシステムプロパティを使用してパスを指定します。