2つの証明書チェーンがインストールされたJavaキーストアがあります。 CSRはCAによって生成および署名され、そのCAを含む証明書がインストールされます。ただし、ポートからアプリケーションに要求を送信すると、1つの証明書しか表示されませんが、キーストアの両方の証明書が表示され、優先証明書に基づいて認証できるようにしたいと思います。
助けが必要です。
ベストアンサー1
ナレーター:CAはCSRに署名しません。部分的にCSRに基づいていますが、部分的にはそうではありません(両方の部分が重要です)。
あなたは」と言います。ㅏCSRの生成". CSR(キー用)を生成し、そのCSRの2つの証明書(それぞれチェーンを含む)を取得し、両方の証明書チェーンをリポジトリ秘密鍵エントリの1つにインストールすると、2番目の証明書チェーンが置き換えられます。チェーンが必要で、リポジトリには2番目の証明書のみが必要です。
2つの秘密鍵と2つのCSR(各鍵ごとに1つ)を生成し、各CSRに証明書チェーンがあり、それをその秘密鍵にインストールしたとします。したがって、実際に証明書チェーンの秘密鍵とその両方を見たいです。疑わしい場合はkeytool -list [-v]
確認してください。
SSL(現在のTLS)プロトコルはこれを行いません。;サーバーは単に「エンティティ」(サーバー)証明書とそのチェーン証明書(存在する場合)を送信し、単一のハンドシェイクでその秘密鍵を証明します。
あなた可能2つの要求を実行できます。各要求は次のようになります。一つ必要な証明書チェーン:
証明書のサブジェクト/ SAN名が異なり、クライアントがSNI拡張を使用している場合(最近のブラウザではこれを実行しますが、他のソフトウェアはそうでもそうでない場合もあります)、Java 8サーバーはSNIと一致する証明書を好みます。ほとんどのクライアント(OpenSSLではありません!)は常にSNIを接続するホスト名と同じにするため、複数のホスト名が同じサーバーを指すように名前解決を(一時的に?)変更する必要があります(ファイルの使用
hosts
またはバインド解除)。同様の文書。証明書が別のキータイプ(RSA、DSA、EC)用であり、クライアントが1つのキータイプを使用する暗号スイートのみを提供している場合、Javaサーバーはそのキータイプの証明書を使用します。一部のクライアントでは提供された暗号スイートを簡単に制御できますが、一部のクライアントではそうではありません。
同様に、証明書チェーンが異なる(複数セットの)署名アルゴリズムを使用し、クライアントがSignatureAlgorithms拡張を使用してTLS1.2を実装している場合、Java 7 +サーバーはSigAlgsを満たす証明書チェーンを好みます。ただし、SigAlgsを簡単に選択できるクライアントはなく、CAは発行された証明書チェーンで使用する署名アルゴリズムの選択肢をほとんど提供しません。