Overview
電子証明書(Digital Certificate)とは、認証局(CA)が発行するデジタル文書で、公開鍵とその所有者の情報を結びつけ、その関連性を第三者が保証するものです。インターネット上で「この公開鍵は確かにこの組織/個人のものである」という信頼を提供する、デジタル社会の身分証明書に相当します。
電子証明書の標準規格はX.509で、ITU-Tが策定しました。証明書にはバージョン、シリアル番号、署名アルゴリズム、発行者(CA)、有効期間、主体者(所有者)、公開鍵情報、拡張情報などのフィールドが含まれます。
最も身近な利用例はWebサイトのSSL/TLS証明書です。ブラウザのアドレスバーに表示される鍵マークは、そのサイトの電子証明書が正当であることを示しています。そのほか、電子メール署名(S/MIME)、コードサイニング、VPN認証、IoTデバイス認証など、幅広い用途で利用されています。
Details
X.509証明書の構造
- バージョン:現在はv3が主流。拡張フィールドをサポート
- シリアル番号:CA内で一意に割り当てられる識別番号
- 署名アルゴリズム:CAが証明書に署名する際に使用するアルゴリズム(例:SHA256withRSA)
- 発行者(Issuer):証明書を発行したCAの識別名(DN)
- 有効期間:証明書の有効開始日と終了日
- 主体者(Subject):証明書の所有者の識別名
- 公開鍵情報:所有者の公開鍵とそのアルゴリズム
- 拡張フィールド:SAN(Subject Alternative Name)、鍵使用目的、CRL配布点など
証明書の種類と検証レベル
DV(Domain Validation)証明書は、ドメイン名の管理権限のみを確認して発行されます。Let's Encryptなどで無料取得可能で、個人サイトや小規模サイトに適しています。審査は自動化されており、数分で発行されます。
OV(Organization Validation)証明書は、ドメイン管理権限に加え、組織の実在性を確認します。登記情報や電話確認などの審査を経て発行され、企業の公式サイトなどで使用されます。
EV(Extended Validation)証明書は、最も厳格な審査を経て発行されます。組織の法的実在性、物理的実在性、業務実在性を確認し、以前は多くのブラウザでアドレスバーに組織名が緑色で表示されていました(現在は主要ブラウザでこの表示は廃止されています)。
証明書のライフサイクル
証明書には申請 → 審査 → 発行 → 利用 → 更新/失効のライフサイクルがあります。2020年以降、主要ブラウザは新規発行証明書の最大有効期間を398日(約13ヶ月)に制限しています。Let's Encryptは90日有効の証明書を発行し、自動更新を前提としています。2024年にはAppleが45日への短縮を提案し、業界で議論が進んでいます。
クライアント証明書
サーバー証明書がサーバーの身元を証明するのに対し、クライアント証明書はクライアント(ユーザーやデバイス)の身元を証明します。VPNアクセス、社内システムの認証、IoTデバイスの認証などで使用され、パスワードに比べて高いセキュリティを提供します。
Security Measures
- 01証明書の有効期限管理の自動化:証明書の期限切れはサービス停止の主要な原因です。certbotやACMEクライアントで自動更新を設定し、期限切れ30日前からのアラートも設定してください。
- 02強固な暗号アルゴリズムの使用:RSA 2048ビット以上またはECDSA P-256以上の鍵を使用し、署名ハッシュはSHA-256以上を指定してください。SHA-1署名の証明書は主要ブラウザで拒否されます。
- 03秘密鍵のCSR生成と保護:証明書署名要求(CSR)は証明書を使用するサーバー上で生成し、秘密鍵を外部に送信しないでください。秘密鍵ファイルのパーミッションは600に設定します。
- 04証明書ピニングの検討:モバイルアプリやAPIクライアントでは、信頼する証明書を限定する証明書ピニング(HPKP)を検討してください。ただし、運用ミスでアクセス不能になるリスクがあるため慎重に実装します。
- 05ワイルドカード証明書の適切な利用:ワイルドカード証明書は便利ですが、秘密鍵が複数サーバーに配置されるため漏洩リスクが高まります。重要度の高いサービスには個別証明書の使用を推奨します。
Incidents
📋 Comodo不正証明書発行事件(2011年)
2011年3月、大手認証局Comodoの登録局(RA)パートナーがハッキングされ、mail.google.com、login.yahoo.com、login.skype.comなど9つの主要ドメインに対する不正証明書が発行されました。攻撃者はイランのIPアドレスから侵入したとされ、発行された偽証明書を使って中間者攻撃を行うことが可能でした。Comodoは即座に該当証明書を失効させましたが、RA経由の発行プロセスの脆弱性が露呈しました。
📋 中国CNNIC認証局の信頼削除(2015年)
2015年3月、中国のルート認証局CNNIC(中国互联网络信息中心)の中間CA証明書が、Googleドメインを含む不正な証明書を発行していたことが発覚しました。CNNICはエジプトの企業MCS Holdingsに無制限の中間CA証明書を発行しており、MCSがSSLテスト目的で不正証明書を生成していました。GoogleとMozillaはCNNICのルート証明書を信頼リストから削除しました。
📋 Microsoftの証明書期限切れによるサービス障害(2020年)
2020年2月、Microsoft Teamsが約3時間にわたってダウンしました。原因はサーバー証明書の有効期限切れという初歩的なミスでした。大規模なクラウドサービスでも証明書管理の自動化が不十分だと、このような障害が発生し得ることを示しました。同様の証明書期限切れ障害はStripe(2017年)、LinkedIn(2019年)、Ericsson(2018年、3200万人のモバイル通信に影響)でも発生しています。