0Pricing
Cloud & IT Cert Prep · レッスン

認証局と信頼チェーン

ルートCA、中間CA、エンドエンティティ証明書が階層を形成し、ブラウザーやオペレーティングシステムから信頼される仕組みを学びます。

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

公開鍵暗号における信頼の問題

非対称暗号は、公開鍵が本当に想定した相手のものであると信頼できる場合にのみ役立ちます。信頼の仕組みがなければ、攻撃者は誰かの公開鍵を要求する通信を傍受し、自分の公開鍵に置き換えられます。これは典型的な中間者攻撃です。公開鍵基盤(PKI)は、認証局(CA)という信頼された第三者を導入することで、この信頼の問題を解決します。認証局は、公開鍵と検証済みの身元情報を結び付けた証明書にデジタル署名します。CAを信頼していれば、CAが証明した相手を信頼できます。

認証局とは

認証局(CA)は、証明書の申請者の身元を確認したうえでデジタル証明書を発行する組織です。CAは各証明書に自身の秘密鍵で署名するため、CAを信頼する誰もがCAの公開鍵を使って証明書の真正性を検証できます。認証局には2種類あります。パブリックCA(DigiCert、GlobalSign、Let's Encryptなど)は、ルート証明書がOSやブラウザーにあらかじめインストールされています。プライベート(内部)CAは、組織が自ら運用し、内部向けの証明書(VPN、内部サービス、デバイス証明書など)を発行します。

# View a website's certificate and issuer
openssl s_client -connect google.com:443 -showcerts 2>/dev/null | 
  openssl x509 -noout -text | grep -A2 'Issuer'
# Issuer: C = US, O = Google Trust Services, CN = WR2
# Subject: CN = *.google.com

# Check CA certificate details
curl -v https://google.com 2>&1 | grep 'issuer'

ルートCA:究極の信頼の起点

ルートCAは、PKI階層における最上位の認証局です。ルートCA証明書は自己署名されます。検証してくれる、さらに上位の認証局が存在しないためです。ルート証明書が信頼されるのは、OSベンダー(Microsoft、Apple、Mozilla)が厳格な監査プロセスを通じてルートCAを審査し、信頼された証明書ストアに証明書をあらかじめインストールしているためです。一般的なブラウザーの信頼ストアには、約130~150の信頼されたルートCAがあります。ルートCAが侵害されると、そのCAがこれまでに発行したすべての証明書が疑わしいものになります。そのため、ルートCAの秘密鍵はオフラインのエアギャップ型ハードウェアセキュリティモジュール(HSM)に保管されます。

# List trusted root CAs on Linux (varies by distro)
ls /etc/ssl/certs/ | head -20
# Or view specific CA cert
openssl x509 -in /etc/ssl/certs/DigiCert_Global_Root_CA.pem -noout -text

# On Windows, view trust store via MMC
# certmgr.msc > Trusted Root Certification Authorities

中間CA:委任のレイヤー

ルートCAがエンドエンティティに直接証明書を発行することはほとんどありません。代わりに、中間CAの運用者に証明書を発行して中間CA(下位CAとも呼ばれます)を作成します。その後、中間CAがエンドエンティティ証明書(HTTPSサーバー証明書など)を発行します。この委任階層には、いくつかの目的があります。ルートCAをオフラインに保つことで秘密鍵を保護すること(中間CAが侵害されても、ルート全体ではなく、その中間CAの証明書チェーンだけを失効させれば済みます)、用途ごとに特化したCA(コード署名用とTLS用など)を用意できること、プライベートPKI内で組織階層を実現できることです。

信頼チェーン(証明書チェーン)

証明書チェーン(または信頼チェーン)とは、エンドエンティティ証明書から信頼されたルートCAまで続く証明書の連なりです。一般的なHTTPSサイトでは、チェーンは次のようになります。エンドエンティティ証明書(例:*.google.com)→ 中間CA証明書(例:Google Trust Services WR2)→ ルートCA証明書(例:Google Trust Services LLC)。ブラウザーがサイトにアクセスすると、このチェーン全体を検証します。各証明書の署名が1つ上の階層によって作成されていること、そしてルートが信頼ストアに登録されていることを確認するのです。チェーンのどこか1か所でも途切れると、証明書エラーが発生します。

# View the full certificate chain
openssl s_client -connect example.com:443 -showcerts 2>/dev/null
# Shows: 0 = end-entity cert, 1 = intermediate CA, 2 = root CA

# Verify a certificate chain manually
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt server_cert.pem
# server_cert.pem: OK

クロス認証とブリッジCA

別々のPKI階層が相互信頼を確立する必要がある場合、クロス認証を使用します。各CAが相手のルートに証明書を発行することで、双方向の信頼を確立します。ブリッジCAは、複数のドメインCAとクロス認証する中央ハブ型のCAであり、異なる組織や政府機関の間に信頼の網を構築します。US Federal Bridge CAは、複数の連邦政府PKIシステムを接続しています。クロス認証は管理が複雑ですが、組織の統合時や、単一の階層に統合せずに機関間の信頼を確立する場合に必要です。

登録局(RA)

登録局(RA)は、CAに代わって身元確認を行う組織ですが、自ら証明書を発行することはありません。RAは証明書要求を受け取り、申請者の身元を確認し(証明書の種類に応じて、書類確認、ドメイン検証、対面確認などを行います)、承認した要求をCAに転送して署名を依頼します。この委任により、CAはすべての確認を自ら行わずに発行業務を拡大できます。企業PKIでは、RAが従業員からの証明書要求を確認する人事部門やITヘルプデスクである場合があります。

証明書の検証レベル

CAは、申請者の身元をどの程度詳しく確認したかに応じて、異なる検証レベルの証明書を提供します。ドメイン認証(DV):申請者がドメインを管理していることだけをCAが確認します(自動化され、数分で完了し、Let's Encryptで使用されています)。組織認証(OV):CAが組織の法的な存在を確認します(1~3営業日)。拡張認証(EV):法的な身元、所在地、事業の実在性など、最も厳格な審査を行います(1~2週間。ブラウザーのアドレスバーに緑色の企業名を表示するために使用されていました)。基本的な暗号化にはDVで十分ですが、銀行サイトなど価値の高い対象にはEVが適しています。

証明書ピンニング

証明書ピンニングは、信頼されたルートCAが発行した任意の証明書ではなく、特定の証明書またはCAだけを信頼するようアプリケーションにあらかじめ設定する技術です。これにより、攻撃者が信頼されたCAから不正な証明書を取得した場合でも、中間者攻撃を防げます。モバイルアプリやセキュリティが重要なアプリケーションでは、自社サーバーの証明書だけを受け入れるためにピンニングを使用します。一方で、ピン留めした証明書の有効期限が切れたり更新されたりすると、アプリを更新するまでアプリケーションが動作しなくなるという欠点があります。HPKP(HTTP Public Key Pinning)は、ブラウザーで利用されていたピンニングの仕組みですが、誤った設定によるリスクのため非推奨となっています。

内部プライベートCAの構築

組織は、内部の証明書に関するニーズに対応するため、独自のプライベートCAを運用します。用途には、VPNクライアントの認証、内部HTTPSサービス向けの証明書発行、コード署名、デバイス認証などがあります。Microsoft Active Directory Certificate Services(AD CS)は、企業で最も一般的に使われているプライベートCAです。内部CAの証明書を信頼する必要があるすべてのデバイスとブラウザーには、通常はグループポリシーを通じて、内部発行証明書を信頼するためのCA証明書を配布する必要があります。プライベートCAは、パブリックインターネットで信頼される証明書を発行できません。利用範囲は、プライベートCAのルート証明書がインストールされた組織内のデバイスに限られます。

# Create a simple private CA with OpenSSL
# Generate root CA private key
openssl genrsa -aes256 -out ca.key 4096

# Create self-signed root CA certificate (valid 10 years)
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt \
  -subj '/C=US/O=MyCompany/CN=MyCompany Root CA'

# Now use ca.crt and ca.key to sign intermediate and end-entity certs

CAの侵害とDigiNotarから得られる教訓

DigiNotarの侵害(2011年)は、Security+の受験者が知っておくべき最も重要なCAインシデントです。オランダのCAであるDigiNotarが攻撃者に侵害され、Google、Mozilla、政府機関のドメイン向けに不正な証明書が発行されました。これらの証明書はイランで市民に対する中間者攻撃に利用されました。その結果、主要なすべてのブラウザーおよびOSベンダーが直ちにDigiNotarを信頼されたルートストアから削除し、DigiNotarが過去に発行したすべての証明書が無効になりました。DigiNotarは数週間以内に破産しました。このインシデントは、CAの侵害が壊滅的な結果を招くこと、そして現在ではCAA DNSレコード、Certificate Transparency、CAシステムへの多要素認証が必須となっている理由を示しました。

クイックチェック

このレッスンで扱ったCompTIA Security+(SY0-701)の概念について、理解度を確認します。

レッスンのまとめ

このレッスンでは、認証局が公開鍵を検証済みの身元情報に結び付けること、信頼のチェーンがエンドエンティティから中間CAを経て自己署名ルートへつながること、ルートCAがHSM内でオフライン保管され、OSからあらかじめ信頼されていること、そしてCAの侵害(DigiNotar)によって数百万件の証明書が無効になる可能性があることを学びました。次はX.509証明書の構造について学びます。

よくある質問

「認証局と信頼チェーン」レッスンは無料ですか?

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

「認証局と信頼チェーン」で何を学びますか?

ルートCA、中間CA、エンドエンティティ証明書が階層を形成し、ブラウザーやオペレーティングシステムから信頼される仕組みを学びます。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cloud & IT Cert Prepを始めるのに経験は必要ですか?

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

「認証局と信頼チェーン」レッスンにはどのくらい時間がかかりますか?

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

このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?

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

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

  1. 認証局と信頼チェーン
  2. X.509証明書の構造
  3. 証明書のライフサイクルと失効
  4. PKIのユースケース:HTTPS、S/MIME、コード署名
← Cloud & IT Cert Prepに戻る