アプリケーションに要求を送信するときにSSL証明書が表示されない

アプリケーションに要求を送信するときにSSL証明書が表示されない

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は発行された証明書チェーンで使用する署名アルゴリズムの選択肢をほとんど提供しません。

おすすめ記事