公開鍵証明書

暗号技術において、**公開鍵証明書**（こうかいかぎしょうめいしょ、英語：public key certificate）または**デジタル証明書**（でじたるしょうめいしょ、英語：digital certificate）とは、公開鍵と、その所有者の同定情報（その他に有効期間、発行者、署名アルゴリズムなどの情報も含む）および証明書の内容を検証したエンティティ (発行者と呼ばれる）を結びつける証明書である。電子証明書（electronic certificate）ともよばれる 。

公開鍵証明書、認証局（CA）と呼ばれる信頼された第三者機関によって発行され、その認証局のデジタル署名が付与されることで内容の正当性が保証される。 現代のデジタル社会において、通信の「盗聴」「なりすまし」「改竄」といった脅威を防ぎ、安全な通信や取引を実現するための基盤技術である公開鍵基盤（PKI）の中核をなす要素である。

## 概要
現代のデジタル社会は、物理的な境界を越えた情報の交換と取引によって成り立っている。しかし、この利便性の裏側には、匿名性と非対面性に起因する根源的なリスクが存在する。第三者による通信の「盗聴」、正規のウェブサイトや通信相手に対する「なりすまし」、そして送受信されるデータの「改竄」といった脅威は、デジタルインタラクションの信頼性を根本から揺るがす。 これの課題に対する技術的な解答が、公開鍵証明書と、その運用基盤である公開鍵基盤（Public Key Infrastructure、**PKI**）である。

公開鍵証明書は、パスポートや印鑑証明書に相当する電子的な身分証明書として機能する。その中核的な役割は、検証可能なアイデンティティと、公開鍵暗号方式とデジタル署名に用いられる「公開鍵」と呼ばれるデータを、信頼できる第三者機関（Trusted Third Party、**TTP**）の保証のもとに結びつけることにある。この仕組みにより、ネットワーク上のエンティティ（個人、サーバー、デバイスなど）が誰であるかを確実に証明し、データの完全性を保証することが可能となる。

典型的な公開鍵基盤（Public Key Infrastructure、**PKI**）では、認証局（Certificate Authority、**CA**）がこのTTPに相当する。また、信頼の輪(Web of Trust)という、互いに信頼する人々が各自の公開鍵に署名し合うことで、信頼関係のネットワークを築き、直接知らない相手の信用度も第三者を介して確認できる仕組みもある。

## 証明書の発行
公開鍵証明書の偽造を防ぐために、デジタル署名が使用される。典型的な公開鍵基盤(PKI)体系においては、認証局(CA)がこのデジタル署名を行う。信頼の輪(Web of Trust)体系においては、自分自身（自己署名証明書）もしくは他のユーザーがデジタル署名を行う。どちらの場合でも、証明書に署名をした者が公開鍵と所有者情報との結びつきを証明し、証明書の正当性を保証することになる。

大規模なシステムでは、利用者のコンピュータ（クライアント）が、通信相手（サーバーなど）の証明書を発行した認証局（CA）を直接知っているとは限らない。これは、利用者や通信相手がそれぞれ異なる認証局を利用している場合、信頼関係を直接結ぶことができないことを意味する。この問題を解決するため、証明書は階層構造（チェーン）になっている。具体的には、サーバーの証明書を保証する「中間認証局（Intermediate CA）」が存在し、さらにその中間認証局の正当性を、より上位の「**ルート認証局（Root CA）**」が保証する、という形がとられる。この上位のルート認証局が発行する「**[[ルート証明書]]**」は、OSやブラウザにあらかじめ組み込まれており、初期設定で信頼されている。利用者のコンピュータは、この信頼済みのルート証明書から順に下位の証明書への署名をたどっていくことで、最終的に通信相手のサーバー証明書が本物であると検証できる。この一連の信頼のつながりを「**信頼の連鎖（チェーン・オブ・トラスト）**」という。また、このような証明書の階層構造を定めた世界標準規格が「X.509」である。

かつて、ブラウザの互換性の問題で必要分の固定IPアドレスを使用しなければならず、認証局(CA)発行の証明書は1年間有効のもので3万円程度と導入コストは高価だったが、近年、レンタルサーバー業者がSNI SSLに対応したり、大手CA発行の証明書も1千円程度と大変安価で発行できるようになった。また、無料で証明書が取得ができるサービス（Let's Encrypt）もあり、導入コストは下がってきている。

## 正当性と失効
秘密鍵の信頼性がなくなったり、証明書に埋め込まれた公開鍵と所有者情報の関係が変更（改名や転職などで）されたり、誤っていることが発覚したりした場合は、有効期限が到来する前に無効化（失効）される必要がある。そのための主要なメカニズムが証明書失効リストとOCSPである。 

* **[[証明書失効リスト]]（CRL - Certificate Revocation List）**：CAが定期的に発行する、失効した証明書のシリアル番号を列挙したリスト。確実に最新で正確になるようにするためには、スタッフ、予算が共に必要になるため、時には適切に行われないこともある。

* **OCSP（[[Online Certificate Status Protocol]]）**：個々の証明書の失効状態をリアルタイムで認証局に問い合わせるためのプロトコル。

## ITU-T X.509規格
現在もっとも一般的な証明書規格は、ITU-T X.509 v3である。509 v3証明書のフィールドや拡張機能などの証明書の構造は、RFC5280で以下のように定義されている。

* 電子証明書情報（tbsCertificate）
** バージョン (Version) - X.509のバージョンを指定する。最新はv3。
** シリアル番号 (Serial Number) - 認証局（CA）により、各証明書に割り当てられた一意の番号。証明書ごとに一意である必要がある。
** 署名 (Signature) - 認証局が証明書に署名する際のアルゴリズム。
** 発行者 (Issuer) - 証明書の署名して発行した認証局。
** 有効期間 (Validity) - 証明書の有効期間。Not before (発行年月日と時刻)とNot after (有効期限年月日と時刻)で定義する
** 主体者名 (Subject) - 証明書の所有者（個人、サーバー、組織など）を識別するための項目。DN (Distinguished Name) という階層的な情報表記法が使われる。
** 主体者公開鍵情報（subjectPublicKeyInfo） - 公開鍵の所有者の情報。名前だけでなく住所などの情報も含む。
*** 発行者一意識別子 (issuerUniqueID) - 公開鍵。
*** 主体者一意識別子 (subjectUniqueID) - 発行者もしくは主体者を一意に表現する識別子。
*** 拡張 (Extensions) - 失効した証明書のリストであるCRL配布点 (CRL Distribution Point)、証明書の失効状態をリアルタイムで確認できるOCSPレスポンダ (OCSP Responder)のURL、証明書の公開鍵の使用目的であるキー使用法 (Key Usage)などが記載される。

*署名アルゴリズム（signatureAlgorithm） - 認証局（CA）がデジタル署名を作成する際に使用した暗号アルゴリズムの種類。
*署名値（signatureValue） - 認証局（CA）によって作成されたデジタル署名のデータそのものが格納されている。

## 公開鍵証明書の用途
公開鍵証明書は、その信頼性と汎用性から、デジタル社会の様々な場面で活用されている。

### SSL/TLSサーバー証明書
公開鍵証明書の最も一般的な用途は、ウェブサイトのセキュリティを確保するSSL/TLSプロトコルである。SSL/TLS証明書が導入されたウェブサイトは、URLが`https://`で始まり、ブラウザのアドレスバーに鍵マークが表示される。 SSL/TLSサーバー証明書は、主に二つの役割を果たす。

* **サーバーの認証**：利用者がアクセスしているウェブサイトが、偽のフィッシングサイトなどではなく、正当な運営者によって運営されている本物のサイトであることを証明する。

* **通信の暗号化**：利用者のブラウザとウェブサーバーとの間で送受信されるデータを暗号化し、第三者による盗聴や改ざんを防ぐ。 CAが証明書を発行する際の身元確認プロセスの厳格さによって、証明書は主に3つの認証レベルに分類される。

Web サイトの運営者は、証明書署名要求を証明機関に申請してサーバー証明書を取得する。証明書プロバイダーが、Web サイト名、会社情報、公開鍵を含む電子文書を審査し、電子証明することで公開証明書が作成される。証明書プロバイダーは、それぞれ異なる審査基準を必要とする3種類の証明書を発行する。審査基準は、厳しさ・コストの順に、ドメイン認証（DV：Domain Validation）、組織認証（OV：Organization Validation）、拡張認証（EV：Extended Validation）の3種類である。（認証レベルの違いは暗号化の強度には影響しない。）

* **ドメイン認証**(DV：Domain-validated certificate)：ドメイン検証のみの簡易認証方式。証明書の申請者が、 記載のドメインを管理する権限をもつことを証明できる。

* **組織認証**(OV：Organization Validation）：ドメインの管理に加え、証明書の申請者である法人の存在も確認する認証方式。EV証明書(後述)のようにアドレスバーが緑色になることはないが、証明書に法人名が記述されている。

* **実在認証**(EV：Extended Validation認証)：ドメインの管理、法人の存在だけでなく、組織の法的実在性、物理的な所在地、運営状況などもも確認する認証方式。第三者機関が詳細に確認する。金融機関などで採用されている。

### クライアント認証
クライアント証明書は、ユーザーやデバイスがサーバーに対して自身の正当性を証明するために使用される。主な用途としては、企業内のVPNやWi-Fiネットワーク、機密性の高い業務アプリケーションへのログイン認証が挙げられる。  

クライアント認証には、暗号化通信プロトコルTLS/SSLの仕組みを利用してクライアント認証を行う、**TLSクライアント認証**という方法がある。 

# あらかじめ、認証局（CA）からクライアント証明書を発行してもらい、クライアント証明書とペアになる秘密鍵を、安全に保管しておく。
# サーバー側は、クライアント証明書を発行した認証局（CA）を「信頼できる」と設定しておく。
# クライアントがサーバにアクセスしたとき、サーバーからサーバ証明書を受け取り、サーバ認証をする。
# 一方、サーバーはクライアントに対し、クライアント証明書を要求する。クライアントがサーバにクライアント証明書を送り、サーバはクライアント証明書が信頼する認証局（CA）で発行されたものかを確認する。
# 確認後、サーバーは、クライアントがその証明書の本当の持ち主かを確認するため、ランダムなデータをクライアントに送る。クライアントは、保管した秘密鍵でそのデータに署名し、サーバーに送り返す。
# サーバーは、クライアント証明書の公開鍵を使って証明を検証し、本人性を確認する。

TLSクライアント認証では、鍵の配布・管理がクリティカルになるため重要である。システム管理者が、SCEP (Simple Certificate Enrollment Protocol)を利用してデバイスに自動的に配布・インストールする方法がよく用いられる。鍵はデバイスのOSが提供するキーストア機能で保護したり、ハードウェア・セキュリティ・モジュール やスマートカードなっで物理的に保存するのが推奨されている。また、クライアント証明書には1～3年の有効期限を設け、定期的な更新が推奨されている。

さらに、クライアントとサーバーの双方が互いに証明書を提示し、相互に認証を行う「相互TLS認証（mTLS）」という方式もある。mTLSは、ネットワーク上のいかなる主体もデフォルトでは信頼しないという「ゼロトラスト・セキュリティモデル」の実現において重要な役割を果たす。 

### S/MIME
S/MIME（Secure/Multipurpose Internet Mail Extensions）は、公開鍵証明書を電子メールの保護に応用する技術規格である。S/MIME対応のクライアント証明書を利用することで、電子メールに対して以下の二つのセキュリティ機能を提供できる。 

* **電子署名**：送信者が自身の秘密鍵でメールに署名することで、受信者はそのメールが確かに本人から送信されたものであり、内容が改ざんされていないことを検証できる。 

* **暗号化**：送信者が「受信者の公開鍵」を使ってメール本文と添付ファイルを暗号化することで、意図した受信者以外は内容を読み取ることができなくなる。 

### コードサイニング証明書
コードサイニング証明書は、ソフトウェア開発者が配布するアプリケーションやドライバが、信頼できる開発元から提供され、マルウェアなどが混入していないことを保証するために使用される。 開発者は、完成したソフトウェアの実行ファイルに対して、コードサイニング証明書を用いてデジタル署名を行う。利用者がそのソフトウェアをダウンロードまたはインストールしようとすると、オペレーティングシステムが自動的に署名を検証し、配布元の証明と完全性の保証を行う。特に、最も厳格な組織認証プロセスを経て発行される「EVコードサイニング証明書」で署名されたソフトウェアは、Microsoft Defender SmartScreenのような評価ベースのセキュリティ機能において即座に高い信頼評価を得ることができる。セキュリティを強化するため、EVコードサイニング証明書の秘密鍵は、物理的なUSBトークンなどのハードウェア・セキュリティ・モジュール（HSM）に格納することが義務付けられている。

### PGP（Pretty Good Privacy）
PGP（Pretty Good Privacy）は、1991年にPhil Zimmermannによって開発された暗号化ソフトウェアで、主にメールやファイルの暗号化、そしてデジタル署名による送信者の認証とデータの改ざん防止を目的としている。公開鍵暗号方式と共通鍵暗号方式を組み合わせたハイブリッド暗号を利用し、セキュリティとプライバシーの保護を提供する。現在では、その仕様に基づいたOpenPGPという標準化された形式が広く使用されており、より具体的な実装としてGnuPG（GNU Privacy Guard）などの無料で利用できるソフトウェアも存在する。

### 公的個人認証サービス（JPKI）
公的個人認証サービス（JPKI）は、日本政府が運営する大規模なPKIであり、マイナンバーカードのICチップに格納された公開鍵証明書を利用して、オンラインでの本人確認や電子署名を実現する。 マイナンバーカードには、用途の異なる2種類の公開鍵証明書が搭載されている。 

* **署名用電子証明書**：e-Taxでの電子申告など、法的な効力を持つ電子文書の作成・送信時に利用される。「その文書が利用者本人によって作成され、かつ改ざんされていないこと」を法的に証明できる。

* **利用者証明用電子証明書**：マイナポータルへのログインや、コンビニエンスストアでの公的証明書の取得時に利用される。「ログインしようとしている人物が、利用者本人であること」を認証するために使われる。

## 脚注

### 注釈

### 出典


## 関連項目
*公開鍵基盤 (PKI) 
*認証局 (CA) 
*ルート証明書  
*デジタル署名
*公開鍵暗号
*Transport Layer Security (TLS/SSL)
*S/MIME
*コードサイニング
*公的個人認証サービス
*X.509
*PGP
*Secure Sockets Layer,Transport Layer Security
*Extended Validation 証明書 (EV SSL)
*Authorization certificater
*HTTP/2
## 外部リンク