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


17

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
    

回答:


3

通常のhttpsに必要なコマンドは1つだけです。

keytool -genkeypair

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

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

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


編集がピアレビューされるまで:フラグは-genkeypairであり、証明書をカスタマイズするためにさまざまなフラグを追加できます(たとえば、-validity 365または-dname "cn = Mark Jones、ou = JavaSoft、o = Sun、c = US ")。詳細については、回答のリンクをご覧ください。
ヨハネスシュタドラー

1
@JohannesStadlerありがとうございます。編集を承認し、リンクを最新のJavaバージョンに更新しました。「このコマンドは以前のリリースでは-genkeyという名前でした」
-user1133275
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.