WebサイトがSSL証明書を取得する仕組み
CSRの作成から検証、デプロイまで、証明書発行の流れを確認します。
「WebサイトがSSL証明書を取得する仕組み」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。
認証局の階層構造
証明書の信頼システムは階層構造になっています。ルートCAは自己署名され、オペレーティングシステムやブラウザーに組み込まれています。中間CAはルートCAによって署名され、実際の証明書発行を担います。
この2層構造により、ルートCAの秘密鍵をオフラインかつエアギャップ環境で保管できます。中間CAが侵害された場合でも、ルートCAの信頼アンカーを変更せずに、その中間CAが発行した証明書を失効させられます。
ドメイン検証のプロセス
DV証明書を取得するには、申請者がドメインを管理していることを証明する必要があります。ACMEには、DNSチャレンジ(ドメインのDNSにTXTレコードを追加する)、HTTPチャレンジ(指定されたURLに指定されたファイルを配置する)、TLS-ALPNチャレンジ(TLSネゴシエーション中に指定された証明書を提供する)という3つの標準チャレンジがあります。
3つの方法はいずれも、申請者がそのドメインのDNSまたはWebサーバーを管理していることを確認します。これにより、管理権限のないドメインの証明書を誰かが取得するのを防ぎます。
ACMEプロトコル
ACME(Automatic Certificate Management Environment、RFC 8555)は、Let's Encryptが使用し、現在のほとんどのCAがサポートしているプロトコルです。チャレンジ、検証、発行、更新という証明書のライフサイクル全体を自動化します。
ACMEを使うと、人の手を介さずにWebサーバーが証明書を自動的に取得・更新できます。Certbot、acme.sh、およびほとんどのWebサーバーにはACMEクライアントが組み込まれているため、証明書管理の保守作業をほぼ不要にできます。
CSRの作成
Certificate Signing Request(CSR)は、申請者の公開鍵と、エンティティに関する情報(ドメイン名、組織、国)を含むデータのまとまりです。対応する秘密鍵でCSRに署名し、秘密鍵を保有していることを証明します。
CAはCSRを検証し、ドメインを管理していることの証明を確認したうえで、CSR内の公開鍵を検証済みのドメイン名に紐付ける証明書を発行します。秘密鍵がサーバーの外に出ることはありません。
証明書のフィールド
X.509証明書には、Subject(証明対象の身元)、Subject Alternative Names(SAN、追加のドメイン名)、Issuer(署名したCA)、Validity期間(Not BeforeとNot After)、公開鍵とアルゴリズム、CAのデジタル署名が含まれます。
現在の証明書では、ドメイン名に以前のCommon NameフィールドではなくSANを使用します。SANフィールドには複数のドメインを列挙できるため、1枚の証明書で複数の関連ドメインをカバーできます。
Let's Encryptの無料証明書
Let's Encryptは、Internet Security Research Groupによって2016年に開始され、完全に自動化されたACMEチャレンジを使って無料のDV証明書を発行しています。これまでに30億枚を超える証明書を発行し、HTTPSの普及を大きく加速させました。
Let's Encryptの証明書の有効期間は90日で、商用CAの証明書より短く、定期的な更新が必要です。この短い有効期間は意図的なものです。証明書が侵害された場合の影響を抑え、自動化を促す効果があります。
商用CAの価値
DigiCert、Sectigo、GlobalSignなどの商用CAは証明書に料金がかかりますが、追加サービスを提供します。具体的には、OVおよびEV検証(組織の身元確認)、複数年の証明書、誤発行に対する保証、カスタマーサポートなどです。
OVまたはEV証明書が必要な組織、より長い有効期間を必要とする組織、商用保証やSLAを必要とする組織にとって、商用CAは無料のDV証明書プロバイダーにはない価値を提供します。
ワイルドカード証明書
ワイルドカード証明書は、1つのドメインと、その直下にあるすべてのサブドメインをカバーします。*.example.comの証明書はmail.example.com、www.example.com、api.example.comをカバーしますが、sub.mail.example.comはカバーしません。
ワイルドカード証明書は、多数のサブドメインを持つ組織にとって便利です。ただし、すべてのサブドメインを同じ秘密鍵で保護するため、1台のサーバーが侵害されると、対象となるすべてのサブドメインの証明書が危険にさらされます。
マルチドメインSAN証明書
Subject Alternative Names(SAN)証明書は、マルチドメイン証明書またはUCC証明書とも呼ばれ、複数のドメイン名を明示的に列挙します。ワイルドカードとは異なり、パターンではなく、指定したドメインをカバーします。
SAN証明書は、関連するサイトやサービスによく使用されます。たとえば、example.com、www.example.com、app.example.com、example.ioを1枚の証明書でカバーできます。各ドメインには個別の検証が必要ですが、1枚の証明書ですべてをカバーできます。
証明書ピンニングとHPKP
証明書ピンニングでは、特定のドメインに対して指定した証明書または公開鍵だけをクライアントが受け入れるようにし、認識していないCA署名証明書を無視します。これにより、不正なCAが発行した証明書を使う攻撃を防ぎます。
HTTP Public Key Pinning(HPKP)は、証明書ピンニングのためのブラウザー機能でした。設定を誤ると利用者をサイトから永久に締め出す可能性があったため、2019年までに非推奨となり、ブラウザーから削除されました。現在は、証明書の悪用を検出する仕組みとしてCertificate Transparencyが推奨されています。
証明書の失効:OCSPとCRL
証明書が侵害された場合、CAは有効期限前にその証明書を失効させられます。Certificate Revocation List(CRL)は、失効した証明書のシリアル番号の一覧であり、クライアントがダウンロードして確認できます。
OCSP(Online Certificate Status Protocol)を使うと、証明書ごとの失効状態をリアルタイムで確認できます。OCSPステープリングはプライバシーとパフォーマンスを向上させます。サーバーが署名済みのOCSP応答を事前に取得してTLSハンドシェイクに含めるため、ブラウザーがCAに接続する必要がありません。
証明書検証クイズ
証明書の検証方式について、知識を確認しましょう。
要点:SSL証明書の取得
証明書は、ルートCAが中間CAに署名し、中間CAがエンドエンティティ証明書を発行するCA階層を通じて発行されます。DV証明書が確認するのはドメインの管理権限だけですが、OVとEVは組織の身元も確認します。
ACMEは証明書の発行と更新を自動化します。Let's Encryptは有効期間90日の無料DV証明書を発行します。ワイルドカード証明書は、直下にあるすべてのサブドメインをカバーします。Certificate Transparencyのログには、発行されたすべての証明書の監査可能な記録が残ります。
AI チューターと学ぶ Cryptology Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 67
- レッスン
- 261
よくある質問
「WebサイトがSSL証明書を取得する仕組み」レッスンは無料ですか?
はい。「WebサイトがSSL証明書を取得する仕組み」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。
「WebサイトがSSL証明書を取得する仕組み」で何を学びますか?
CSRの作成から検証、デプロイまで、証明書発行の流れを確認します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cryptology Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「WebサイトがSSL証明書を取得する仕組み」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCryptology Academyレッスンでコードを書いて実行できますか?
はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 南京錠アイコンが本当に意味すること
- WebサイトがSSL証明書を取得する仕組み
- TLS証明書の警告と対処法
- HTTPへのダウングレードと混在コンテンツのリスク