自己署名証明書を使用してキーストアとトラストストアを作成するには?

自己署名証明書を使用してキーストアとトラストストアを作成するには?

JAVAサーバーとクライアントはSSLを使用してネットワーク経由で通信します。サーバーとクライアントは証明書を使用して互いに認証します。サーバーとクライアントが使用するキーストアのタイプはJKSです。サーバーとクライアントは対応するキーストアとトラストストアファイルをロードします。キーストアとトラストストアのファイル名は、server.keystore、server.truststore、client.keystore、client.truststoreです。テスト用に自己署名証明書を使用しています。

質問:

Q1.手順6で、サーバーとクライアントのそれぞれの証明書をそれぞれのトラストストアに追加する理由を知りたいです。

Q2.同じ目標を達成するためにステップ数を減らすことはできますか?それではどうですか?

サーバーのRSA鍵、自己署名証明書、鍵ストア、およびトラストストアを生成するには

  1. RSA秘密鍵の生成

    openssl genrsa -out diagserverCA.key 2048
    
  2. x509 証明書の作成

    openssl req -x509 -new -nodes -key diagserverCA.key \
                -sha256 -days 1024 -out diagserverCA.pem
    
  3. 秘密鍵と公開証明書からPKCS12鍵ストアを作成します。

    openssl pkcs12 -export -name server-cert \
                   -in diagserverCA.pem -inkey diagserverCA.key \
                   -out serverkeystore.p12
    
  4. PKCS12キーストアをJKSキーストアに変換

    keytool -importkeystore -destkeystore server.keystore \
            -srckeystore serverkeystore.p12 -srcstoretype pkcs12 
            -alias server-cert
    
  5. クライアントの証明書をサーバーのトラストストアにインポートします。

    keytool -import -alias client-cert \
            -file diagclientCA.pem -keystore server.truststore
    
  6. サーバーの証明書をサーバーのトラストストアにインポートします。

    keytool -import -alias server-cert \
            -file diagserverCA.pem -keystore server.truststore
    

クライアント用のRSA秘密鍵、自己署名証明書、鍵ストア、およびトラストストアを作成する手順

  1. 秘密鍵の生成

    openssl genrsa -out diagclientCA.key 2048
    
  2. x509 証明書の作成

    openssl req -x509 -new -nodes -key diagclientCA.key \
                -sha256 -days 1024 -out diagclientCA.pem
    
  3. 秘密鍵と公開証明書からPKCS12鍵ストアを作成します。

    openssl pkcs12 -export -name client-cert \
                   -in diagclientCA.pem -inkey diagclientCA.key \
                   -out clientkeystore.p12
    
  4. PKCS12キーストアをJKSキーストアに変換

    keytool -importkeystore -destkeystore client.keystore \
            -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \
            -alias client-cert
    
  5. サーバーの証明書をクライアントのトラストストアにインポートします。

    keytool -import -alias server-cert -file diagserverCA.pem \
            -keystore client.truststore
    
  6. クライアントの証明書をクライアントのトラストストアにインポートします。

    keytool -import -alias client-cert -file diagclientCA.pem \
            -keystore client.truststore
    

答え1

通常のhttpsには1つのコマンドしか必要ありません。

keytool -genkeypair

クライアントが証明書を盲目的に信頼しない場合は、サーバーの公開証明書をクライアントにコピーする必要があります。

なぜopensslを使用していますか?

https://docs.oracle.com/javase/10/tools/keytool.htm

関連情報