0Pricing
Cyber Security Academy · レッスン

証明書の検証

サーバーの身元を確認します

「証明書の検証」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

なぜ証明書を検証するのですか

暗号化だけでは十分ではありません。攻撃者との接続を暗号化しても、保護している相手が間違っています。

証明書の検証により、実際に意図したサーバーと通信していることを確認できます。

クライアントが確認すること

ハンドシェイク中に、クライアントはいくつかの項目を検証します。

  • 証明書のチェーンが信頼されたルートに到達すること
  • 証明書が有効期間内であること
  • 証明書が失効していないこと
  • ホスト名が一致すること

ホスト名の照合

接続先のホスト名は、証明書のSubject Alternative Name (SAN)エントリと一致している必要があります。

以前使われていたCommon Name (CN)フィールドは、この用途では非推奨です。現在のクライアントはSANを必要とします。

openssl x509 -in cert.pem -noout -ext subjectAltName

有効期間の日付

すべての証明書には、Not BeforeとNot Afterのタイムスタンプがあります。この期間外では、証明書は拒否されます。

openssl x509 -in cert.pem -noout -dates

信頼チェーンの検証

クライアントはリーフ証明書から、信頼ストア内のルート証明書までチェーンをたどり、それぞれの署名を検証します。

信頼されたルートへの経路が存在しなければ、証明書が正しく見えても検証は失敗します。

失効の確認

クライアントは、証明書が有効期限前に失効していないかをOCSPまたはCRLで確認します。

多くのブラウザーは、確認を高速に保つためにOCSP staplingや整備された失効リストを利用します。

鍵用途の制約

証明書では、Key Usage拡張とExtended Key Usage拡張によって、許可される用途を宣言します。

サーバー証明書にはserverAuthを含める必要があり、CA証明書にはCAフラグを設定する必要があります。不適切に使用された証明書は拒否されます。

証明書のピン留め

ピン留めでは、クライアントに想定する証明書または公開鍵をハードコードします(モバイルアプリでよく使われます)。

CAが署名した有効な証明書でも、想定外のものであれば拒否されるため、不正なCAや侵害されたCAから防御できます。

検証に失敗した場合

よくある検証エラーには、次のものがあります。

  • NET::ERR_CERT_DATE_INVALID(期限切れ)
  • NET::ERR_CERT_COMMON_NAME_INVALID(ホスト名の不一致)
  • NET::ERR_CERT_AUTHORITY_INVALID(信頼されていない発行者)

検証を省略する危険性

証明書の検証を無効にすると(たとえばcurl -kやverify=False)、なりすましに対する保護がすべて失われます。

中間者攻撃を招くため、本番コードでは決して使用しないでください。

# DO NOT do this in production
curl -k https://example.com

コマンドラインから検証する

稼働中のサーバーに対して、完全な検証チェックを実行できます。

openssl s_client -connect example.com:443 \
  -verify_hostname example.com -verify_return_error

確認問題

開発者が本番環境で証明書エラーを無視するためにverify=Falseを設定しました。どのようなリスクが生じますか。

復習

クライアントが証明書を検証する方法を学びました。

  • 確認項目には、チェーンの信頼性、有効期間、失効、ホスト名(SAN)が含まれます。
  • ピン留めにより、不正なCAに対する防御が強化されます。
  • 本番環境では、決して検証を無効にしないでください。

次は、TLSに対する一般的な攻撃を見ていきます。

よくある質問

「証明書の検証」レッスンは無料ですか?

はい。「証明書の検証」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「証明書の検証」で何を学びますか?

サーバーの身元を確認します ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「証明書の検証」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. TLSハンドシェイク
  2. 暗号スイート
  3. 証明書の検証
  4. よくあるTLS攻撃
← Cyber Security Academyに戻る