SSL証明書はどのように検証されますか?
-
06-07-2019 - |
質問
SSL証明書を安全に検証するために必要な一連のステップは何ですか?私の(非常に限られた)理解は、httpsサイトにアクセスすると、サーバーがクライアント(ブラウザ)に証明書を送信し、ブラウザがその証明書から証明書の発行者情報を取得し、それを使用して発行者に連絡し、何らかの方法で比較することです有効性の証明書。
- これは正確にどのように行われますか?
- このプロセスは、中間者攻撃の影響を受けませんか?
- ランダムな人が独自の検証サービスを設定して中間者攻撃で使用できないようにするため、すべてが「見える」安全ですか?
解決
これは非常に簡単な説明です:
-
Webブラウザーは、Webサーバーの公開キーを含むWebサーバーの証明書をダウンロードします。この証明書は、信頼できる認証局の秘密鍵で署名されています。
-
Webブラウザーには、すべての主要な認証局の公開鍵がインストールされています。この公開鍵を使用して、Webサーバーの証明書が信頼できる認証局によって実際に署名されたことを確認します。
-
証明書には、Webサーバーのドメイン名またはIPアドレス、あるいはその両方が含まれています。 Webブラウザーは、認証局に、証明書にリストされているアドレスがオープン接続を持っているアドレスであることを確認します。
-
Webブラウザーは、この接続のHTTPトラフィックの暗号化に使用される共有対称キーを生成します。これは、すべてに公開/秘密キー暗号化を使用するよりもはるかに効率的です。ブラウザは対称キーをWebサーバーの公開キーで暗号化してから送り返し、Webサーバーのみが秘密キーを持っているため、Webサーバーのみがそれを解読できるようにします。
認証局(CA)は中間者攻撃を防ぐために不可欠であることに注意してください。ただし、署名されていない証明書であっても、共有対称キーにアクセスする方法がないため、暗号化されたトラフィックを受動的に傍受することはできません。
他のヒント
証明書を購入することに加えて(前述のとおり)、独自の証明書を無料で作成することもできます。これは「自己署名証明書」と呼ばれます。自己署名証明書と購入した証明書の違いは簡単です。購入した証明書は、ブラウザがすでに知っている認証局によって署名されています。つまり、ブラウザは購入した証明書の信頼性を簡単に検証できます。
残念ながら、自己署名証明書はGoDaddyやVerisignなどの商用CAが販売する証明書よりも本質的に安全性が低く、使用する場合はブラウザの警告/例外に対応しなければならないという誤解を招きました。 これは間違っています。
自己署名証明書(またはbobinceが示唆するCA証明書)を安全に配布し、サイトを使用するブラウザーにインストールする場合、購入したものと同じくらい安全です中間者攻撃や証明書の偽造に対して脆弱ではありません。明らかにこれは、少数の人々だけがあなたのサイトへの安全なアクセスを必要とする場合にのみ実行可能であることを意味します(例えば、内部アプリ、個人的なブログなど)。
意識を高め、自分のような仲間の小規模ブロガーに自分自身を守るように促すために、証明書の背後にある概念をより詳細に説明し、自己を安全に作成して使用する方法を説明するエントリーレベルのチュートリアルを作成しました-署名済み証明書(コードサンプルとスクリーンショットを含む)。
あなたはそれを言った
ブラウザはそこから証明書の発行者情報を取得します 証明書、それを使用して発行者に連絡し、どういうわけか 証明書の有効性を比較します。
次の2つの理由により、クライアントは発行者に確認する必要がありません:
- すべてのブラウザには、すべての主要なCA公開鍵のリストが事前にインストールされています
- 証明書は署名されており、その署名自体は、クライアントが自分で、発行者のサーバーに接続することなく、その証明書が本物であることを確認できるため、証明書が有効であることの十分な証拠です。それが非対称暗号化の美しさです。
1なしでは2.を実行できないことに注意してください
これは、この大きな図で説明したものです。
(下部の「署名とは何ですか?」にスキップ)
クライアントには、SSL認証局の公開鍵のシード済みストアがあります。サーバーの証明書から、いわゆる「ルート」のいずれかまでの中間機関までの信頼チェーンが必要です。サーバーを信頼するための証明書。
信頼できる機関のリストを調べたり、変更したりできます。多くの場合、これは、あなたが働いている会社や通っている学校など、あなたが信頼していることがわかっている地方自治体の証明書を追加するために行います。
事前にシードされたリストは、使用するクライアントによって異なります。大きなSSL証明書ベンダーは、ルート証明書がすべての主要なブラウザー($$$)にあることを保証しています。
モンキー・イン・ザ・ミドル攻撃は「不可能」です。攻撃者が信頼できるルート証明書の秘密鍵を持っている場合を除きます。対応する証明書が広く展開されているため、このような秘密キーの公開は、一般的にeコマースのセキュリティに重大な影響を及ぼします。そのため、これらの秘密鍵は非常に厳密に保護されています。
より技術的に考えている場合、このサイトはおそらくあなたが望むものです: http: //www.zytrax.com/tech/survival/ssl.html
警告:ウサギの穴が深くなります:)。