[解決済み】ssl証明書はどのように検証されるのですか?
2022-04-05 05:14:08
質問
ssl証明書を安全に検証するために必要な一連の手順は何ですか? 私の(非常に限られた)理解では、https のサイトにアクセスすると、サーバーはクライアント(ブラウザ)に証明書を送信し、ブラウザはその証明書から証明書の発行者情報を取得し、それを使って発行者に連絡し、何らかの方法で証明書の有効性を比較する、というものだと思います。
- 具体的にはどのように行われるのですか?
- 中間者攻撃から保護される理由は何ですか?
- 中間者攻撃に使用するために、どこかのランダムな人物が独自の検証サービスを立ち上げて、すべてが安全に見えるようにすることを防ぐにはどうしたらよいでしょうか?
解決方法は?
ここでは、非常に簡略化して説明します。
-
Webブラウザは、Webサーバーの公開鍵を含むWebサーバーの証明書をダウンロードします。 この証明書は、信頼できる認証局の秘密鍵で署名されています。
-
お使いのウェブブラウザには、主要な認証局の公開鍵がインストールされています。 この公開鍵を使用して、Webサーバーの証明書が本当に信頼できる認証局によって署名されているかどうかを確認します。
-
証明書には、Webサーバーのドメイン名やIPアドレスが記載されています。 ブラウザは、証明書に記載されたアドレスが、接続可能なアドレスであることを認証局に確認します。
-
ブラウザは、HTTPトラフィックを暗号化するために使用される共有対称鍵を生成します。 ブラウザは対称鍵をウェブサーバーの公開鍵で暗号化して送り返し、ウェブサーバーだけがその秘密鍵を持っているので、ウェブサーバーだけが復号化できることを保証します。
なお、中間者攻撃を防ぐには、認証局(CA)が不可欠です。 しかし、署名されていない証明書であっても、共有された対称鍵にアクセスする方法がないため、誰かがあなたの暗号化されたトラフィックを受動的に盗聴することを防ぐことができます。
関連
-
[解決済み] どちらが大きいですか?O(log*n)とO(loglog n)
-
[解決済み] O(n)とO(log(n))の違い -どちらが優れていて、O(log(n))とは一体何なのか?
-
[解決済み] 大きなӨ記号は具体的に何を表すのですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] OpenSSLを使用して自己署名入りSSL証明書を生成する方法を教えてください。
-
[解決済み] HTTPSのURLは暗号化されていますか?
-
[解決済み】なぜBase64を使うのか?
-
[解決済み] [解答】ある数字が与えられたとき、元の数字と全く同じ桁数の次の数字を求めよ。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 大きなӨ記号は具体的に何を表すのですか?
-
[解決済み] バックトラックアルゴリズムの時間計算方法は?
-
[解決済み] NP - 非決定性多項式時間
-
[解決済み】有向グラフのサイクルを検出する最適なアルゴリズム【クローズド
-
[解決済み】美観を損なわないカラーパレットをランダムに生成するアルゴリズム【終了しました
-
[解決済み】ある点が2次元の三角形の中にあるかどうかを判断する方法は?[クローズド]
-
[解決済み】遺伝的アルゴリズム/遺伝的プログラミングの良い解決例とは?[クローズド]
-
[解決済み】動的計画法を用いて,最も長く増加する部分列を決定する方法とは?
-
[解決済み】純粋な関数型プログラミングの効率性
-
[解決済み】丸められたパーセンテージを100%にする方法