JAVAサーバーとクライアントはSSLを使用してネットワーク経由で通信します。サーバーとクライアントは証明書を使用して互いに認証します。サーバーとクライアントが使用するキーストアのタイプはJKSです。サーバーとクライアントは対応するキーストアとトラストストアファイルをロードします。キーストアとトラストストアのファイル名は、server.keystore、server.truststore、client.keystore、client.truststoreです。テスト用に自己署名証明書を使用しています。
質問:
Q1.手順6で、サーバーとクライアントのそれぞれの証明書をそれぞれのトラストストアに追加する理由を知りたいです。
Q2.同じ目標を達成するためにステップ数を減らすことはできますか?それではどうですか?
サーバーのRSA鍵、自己署名証明書、鍵ストア、およびトラストストアを生成するには
RSA秘密鍵の生成
openssl genrsa -out diagserverCA.key 2048
x509 証明書の作成
openssl req -x509 -new -nodes -key diagserverCA.key \ -sha256 -days 1024 -out diagserverCA.pem
秘密鍵と公開証明書からPKCS12鍵ストアを作成します。
openssl pkcs12 -export -name server-cert \ -in diagserverCA.pem -inkey diagserverCA.key \ -out serverkeystore.p12
PKCS12キーストアをJKSキーストアに変換
keytool -importkeystore -destkeystore server.keystore \ -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias server-cert
クライアントの証明書をサーバーのトラストストアにインポートします。
keytool -import -alias client-cert \ -file diagclientCA.pem -keystore server.truststore
サーバーの証明書をサーバーのトラストストアにインポートします。
keytool -import -alias server-cert \ -file diagserverCA.pem -keystore server.truststore
クライアント用のRSA秘密鍵、自己署名証明書、鍵ストア、およびトラストストアを作成する手順
秘密鍵の生成
openssl genrsa -out diagclientCA.key 2048
x509 証明書の作成
openssl req -x509 -new -nodes -key diagclientCA.key \ -sha256 -days 1024 -out diagclientCA.pem
秘密鍵と公開証明書からPKCS12鍵ストアを作成します。
openssl pkcs12 -export -name client-cert \ -in diagclientCA.pem -inkey diagclientCA.key \ -out clientkeystore.p12
PKCS12キーストアをJKSキーストアに変換
keytool -importkeystore -destkeystore client.keystore \ -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \ -alias client-cert
サーバーの証明書をクライアントのトラストストアにインポートします。
keytool -import -alias server-cert -file diagserverCA.pem \ -keystore client.truststore
クライアントの証明書をクライアントのトラストストアにインポートします。
keytool -import -alias client-cert -file diagclientCA.pem \ -keystore client.truststore
答え1
通常のhttpsには1つのコマンドしか必要ありません。
keytool -genkeypair
クライアントが証明書を盲目的に信頼しない場合は、サーバーの公開証明書をクライアントにコピーする必要があります。
なぜopensslを使用していますか?