web-dev-qa-db-ja.com

ssltest:チェーンの問題-アンカーが含まれています

Webアプリケーションで ssltest を実行しましたが、「チェーンの問題-アンカーが含まれています」(「追加の証明書(指定されている場合)」セクション)が見つかりました

どういう意味ですか?修正する必要がありますか?悪用される可能性はありますか?

81
Andrei Botalov

サーバーがクライアントに証明書を送信するとき、サーバーは実際に証明書チェーンを送信するので、クライアントはサーバー証明書の検証が簡単になります(クライアントはrequiredでチェーンを正確に使用する必要はありませんが、実際には、ほとんどのクライアントはチェーンを使用し、それ以外は使用しません)。これは SSL/TLS標準 のセクション7.4.2で説明されており、特に、この啓発的な抜粋が含まれています。

送信者の証明書はリストの最初に来る必要があります。以下の各証明書は、その前の証明書を直接証明する必要があります。証明書の検証ではルートキーを個別に配布する必要があるため、ルート認証局を指定する自己署名証明書は、リモートエンドがそれを検証するためにすでに所有している必要があるという前提の下で、チェーンから省略される場合があります。

これは「MAY」の場合(「MAY」、「MUST」、「SHOULD」... RFCの用語は RFC 2119 で説明されている非常に正確な意味を持っている)であるため、サーバーはチェーン内のルート証明書(別名「トラストアンカー」)、または省略します。一部のサーバーには含まれていますが、含まれていないサーバーもあります。送信されたチェーンを正確に使用することを目的とした一般的なクライアント実装では、最初にトラストストアでチェーン証明書を見つけようとします。それが失敗すると、トラストストアで「最後の」チェーン証明書の発行者を見つけようとします。したがって、どちらにしても、これは標準に準拠しており、機能するはずです。

(チェーンの順序に関して多少の混乱の原因があります。true X.509 の場合、チェーンはトラストアンカーからエンドエンティティ証明書に順序付けられます。SSL/ TLSの「証明書」メッセージがエンコードされます逆の順序で、サーバー自体を修飾するエンドエンティティ証明書が最初に来ます。ここでは、SSL/TLS用語でX.509ではなく「最後」を使用しています。

チェーン内のルートを送信することについて言える唯一の悪い点は、ネットワーク帯域幅を必要以上に使用することです。これは、接続ごとに約1 kBのデータで、完全なハンドシェイクが含まれます。クライアント(Webブラウザー)とサーバー間の一般的なセッションでは、そのタイプの接続は1つだけです。クライアントからの他の接続では、初期のハンドシェイクに基づいて構築される「省略されたハンドシェイク」が使用され、証明書はまったく使用されません。そして、各接続は、連続する多くのHTTP要求に対して存続します。そのため、ルート送信が意味するネットワークオーバーヘッドはわずかです。

104
Thomas Pornin

これは、サイトが提供する証明書に、証明書チェーンのルート証明書(証明書が発行者の証明書にリンクされているチェーンであり、ルートが自身の発行者である証明書)が含まれていることを意味します。

証明書は、そのチェーンのルート(またはその中間)証明書がクライアントによって明示的に信頼されている場合にのみ信頼されるため、ルート証明書を提供する必要はありません。信頼されている場合、クライアントはすでにそれを持っています。ちなみに、このレポートは、「In trust store」という発言でさらに下にあることを示しています。

私は警告の理由を考えていません、おそらくヒントのためだけです。 ssltestも、証明書の100%の評価を考えると幸せそうです。

悪用された可能性があります。不正なルート証明書を提供する悪質なサイトは、バグのあるクライアントが信頼できるものと間違え、その結果、クライアントがサイトを信頼することになります。とにかく、そのようなクライアントのユーザーは困っています。

24
mkl