web-dev-qa-db-ja.com

ChromeおよびFirefoxがSSL証明書を検証する方法は?

ChromeとFirefoxはSSL証明書を検証していますか?Webサーバーから受信した証明書を検証するために、GeoTrustなどのSSL証明書Webサイトからデータを要求していますか?

26
user1397542

ブラウザやオペレーティングシステムには、接続先のサーバーの証明書を確認するためのトラストアンカーとして使用されるCA証明書の事前定義リストが付属している傾向があります。それらはすべてカスタマイズ可能です(EV証明書は例外です。ルート証明書はブラウザーにハードコードされていますが、無効にすることはできます...バグは除きます)。

Firefoxはすべてのプラットフォームで 独自のリスト を使用します。

Internet ExplorerおよびChrome Windowsでオペレーティングシステムの証明書リポジトリを使用します。デフォルトはMicrosoftの ルート証明書プログラム から利用できます。

Appleには そのプログラム もあります。

アプリオリに不明なサーバー証明書を信頼するには、この証明書とブラウザーのトラストアンカーの1つとの間に証明書パスを構築します。これは、RFC 3280/RFC 5280の定義に従って行われます。

さらに、CRLまたはOCSPのいずれかを使用して、証明書の失効を確認することもできます。

証明書がブラウザのキャッシュに既にある可能性があるため、有効な証明書を偽造するためにブラウザとCA間の通信を傍受することはできませんか?

Wugの回答に対するコメントとして私が述べたポイントを繰り返します。トラストアンカーリポジトリは cache ではありません。キャッシュは、最近アクセスしたものをすぐに必要になるという想定に基づいて、最近アクセスしたものを自由に使用できるようにすることを目的とした動的なプレースホルダーです。対照的に、信頼できる証明書のリストは、現在閲覧している内容に基づいて自動的に更新されてはなりません。 (自動セキュリティ更新によって更新される可能性がありますが、それは別の問題です。)

サーバー証明書は、新しいSSL/TLSセッションが確立されるたびに取得され、ブラウザは毎回それを確認する必要があります。キャッシュされません。 (OCSPキャッシングを使用することもできますが、これはパフォーマンスを向上させるためであり、短期間のみ保持されます。これは、アクセス時の失効ステータスを確認するためだけです。)

CAへの連絡は、証明書の失効のみを目的としています。それ以外の場合は、CAに連絡しません。 CA証明書(信頼できるアンカー)は、OS /ブラウザ(明示的に選択できますが、指定された接続に関する限り固定されています)によってバンドルされた「信頼の飛躍」です。せいぜい、証明書の失効チェックが行われないようにすることができます(設定によっては、ブラウザーが検証を失敗させる可能性があります)。

16
Bruno

Webサーバーは、要求に応じて証明書チェーン全体をクライアントに送信します。ブラウザ(またはその他のバリデータ)は、ローカルに保存されているCA証明書を使用して、チェーン内の最高の証明書をチェックできます。

ほとんどのオペレーティングシステムは、ブラウザがそのような目的でアクセスできる信頼できる証明書のキャッシュを保持しています。それ以外の場合、ブラウザは独自の証明書のセットをどこかに持っています。

証明書は別の証明書で署名され、「信頼の連鎖」を形成します。通常は、GeoTrust、Verisign、Goadddyなどのエンティティによって提供される自己署名の信頼できる証明書で終了します。

これは セキュリティSEサイト のより良い質問になります。

具体的には、GoogleクロムはOSキャッシュを確実に使用しているとは限りませんが、レンチ->設定->詳細設定の表示-> HTTPS/SSL->証明書の管理->信頼されたルート認証局を介して信頼できる証明書を追加できます。そこに信頼できるCA証明書を追加します。

3
Wug

Wugが説明したように、検証はサーバー証明書からチェーンの最上位の証明書まで行われます。ブラウザは証明書のプロパティを確認し、URLが_Issued to_フィールドと一致することを確認するなどの基本的な検証を実行します。_Issued By_フィールドには信頼できる認証局が含まれ、有効期限は_Valid From_フィールドなど.

さらに、各証明書には、証明書失効リスト(_CRL Distribution Points_)を指すURLが含まれています。クライアントは、そのようなURLからリストをダウンロードして、手元にある証明書が取り消されていないことを確認します。

あなたの質問に答えるために

Webサーバーから受信した証明書を検証するために、GeoTrustなどのSSL証明書Webサイトからのデータを要求していますか?

はい、ブラウザは基本的な検証を実行し、証明書がまだ良好であることを確認するために(CRLポイントを通じて)CA機関サーバーに接続します。

3
Ulises

これが私の証明書の有効期限に関する私の見解です。 Web証明書の名前が正しいと仮定すると、ブラウザーは、Webサーバー証明書に署名した認証局を見つけて、署名者の公開鍵を取得しようとします。署名認証局はCAのチェーンの一部である可能性があります

公開鍵を使用すると、Webサイトの証明書の署名を復号化して(秘密鍵が侵害されない限り、CAのみが署名できることが保証されます)、Webサーバー証明書のハッシュを公開できます。また、ブラウザはWebサーバー証明書のハッシュを計算し、2つのハッシュが一致する場合、認証局が証明書に署名したことを証明します。

署名者の公開鍵が見つからないか、ハッシュが一致しない場合、証明書は無効です。

このシステムの問題は、認証局が完全に信頼できるわけではないことです。

1
Bill Laing

Google Chromeは、2012年2月7日頃にCRLリストの使用を停止し、証明書が有効かどうかを確認しました。有効な証明書をすべてブラウザに組み込み、新しいセットを毎回インストールするようです。ブラウザが更新されました。URL: https://threatpost.com/en_us/blogs/google-stop-using-online-crl-checks-chrome-020712 を参照してください。

0
Andrew Stern