web-dev-qa-db-ja.com

自己署名証明書を使用してキーストアとトラストストアを作成するにはどうすればよいですか?

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
    
18
vic99

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

keytool -genkeypair

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

なぜopensslを使用しているのですか?

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

3
user1133275