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
通常のhttpsには1つのコマンドしか必要ありません。
keytool -genkeypair
クライアントが証明書を盲目的に信頼していない場合は、サーバーのパブリック証明書をクライアントにコピーする必要があります。
なぜopensslを使用しているのですか?