- 証明書自体を検証し、既に信頼している CA 証明書にチェーンできることを確認することで、証明書が本物で有効であることを確認できます。
- 証明書のホスト名を確認すると、証明書が実際に有効であることが確認されていれば、通信しようとしていたサーバーと通信していることを確認できます。
- (リモート パーティが実際にその証明書の秘密キーを保持していることを確認することは、SSL/TLS ハンドシェイク内で行われます。)
人のパスポート/ID チェックとの類似性が必要な場合:
- 証明書の検証は、パスポートや身分証明書が本物であることを検証するようなものです。個人から受け入れる ID の形式 (パスポート、運転免許証、スタッフ カードなど) と、その信頼性を検証できると信頼できる発行国を決定できます。
- 相手が秘密鍵を持っているかどうかを確認することは、パスポートや身分証明書の写真と目の前にいる人の顔が一致しているかどうかを確認することに似ています。
- ホスト名を確認することは、探している名前の人のパスポートを確認するようなものです。
ホスト名を確認しないと、有効なパスポートを持っている本物と思われる人があなたのところに来て、あなたが探しているのは自分だと主張する可能性があります (名前で)。
非常に限られた一連の状況では、特定の CA または自己署名証明書のみを信頼し、潜在的な証明書が信頼する証明書のセット全体で他の証明書になりすますことを許可する場合、この検証を無視しても問題ありませんが、これは非常にまれであり、良い習慣ではありません。
パスポートの名前が探している人の名前と一致することを確認することは、常識と見なされます。証明書にもそれを行います。そうしないと、本物として信頼できる証明書を持っている人が、信頼できる他の証明書になりすますことができ、MITM 攻撃を実行する可能性があります。
HTTPS ホスト名検証ルールは、RFC 2818 セクション 3.1で定義されています(最近では、「ベスト プラクティス」仕様のRFC 6125にも定義されていますが、まだあまり実装されていません)。
つまり、ホスト名は Subject Alternative Name DNS エントリにある必要があります (ただし、証明書に SAN がないサブジェクト DN の CN にフォールバックできます)。IP アドレスを使用している場合、その IP アドレスは SAN IP アドレス エントリに含まれている必要があります (ただし、一部のブラウザでは、サブジェクト DN の CN にある IP アドレスを使用できます)。