目次
PKI(公開鍵基盤)とは
PKI(Public Key Infrastructure)とは、公開鍵暗号と電子証明書を用いて、通信相手の正当性を保証し、安全な通信を実現するための仕組み全体のことです。
単なる暗号技術ではなく、以下を含む運用・信頼の仕組みです。
公開鍵と主体(サーバ・ユーザ)を結び付ける
証明書の発行・配布・更新・失効
信頼の連鎖(ルートCA・中間CA)
検証ルール(ブラウザ・OSの信頼ストア)
PKIの目的
PKIは主に次の3つを実現します。
| ①通信の暗号化 | 盗聴を防ぐ |
| ②改ざんの検知 | 通信内容が途中で変更されていないことを保証 |
| ③なりすましの防止 | 通信相手が正しい相手であることを確認 |
PKIを使用する際の流れ
大きく分けて以下2つのフェーズに分かれます。
1.証明書を発行するための事前準備
2.実際に通信を行う際の接続時のプロセス(TLSハンドシェイク)
1. 事前準備:デジタル証明書の発行とインストール
サーバーが安全な通信を提供するために、まず信頼できる第三者機関から証明書を取得します。
| 1.鍵ペアの生成 | サーバ側で以下を生成します。 ・公開鍵と秘密鍵 |
| 2.CSR(証明書署名要求)の作成 | CSR(Certificate Signing Request)を作成します。 内容:公開鍵、ドメイン名、組織情報(必要に応じて) |
| 3.認証局(CA)への申請と審査 | CA(またはRA相当の仕組み)が以下を確認します。 ドメインの所有権(DV)、組織情報(OV/EV) |
| 4.証明書の発行 | CAは以下を行います: CSRの公開鍵と情報を元に証明書作成し自身の秘密鍵で電子署名 → サーバ証明書が発行される |
| 5.サーバーへのインストール | サーバー管理者は、発行された証明書をサーバー(Nginx、Apache、AWSのACMなど)に設定し、利用可能な状態にします。 |
証明書チェーン
実務では、証明書は単体ではなくチェーンで信頼されます。
| ルートCA(信頼済) ↓ 中間CA ↓ サーバ証明書 |
- ルートCAはOSやブラウザに事前登録済み
- 中間CAはセキュリティのために分離される
2.実際に通信を行う際の接続時のプロセス(TLSハンドシェイク)
準備が整ったサーバーにクライアント(ブラウザなど)がアクセスした際、以下の手順で安全な通信が確立されます。
| 1.挨拶と証明書の提示 | クライアントからの接続要求を行います。 サーバーはクライアントに以下を送信します。 サーバ証明書、中間証明書、鍵交換パラメータ |
| 2.証明書の検証(クライアント側) | クライアントは以下を確認します。 署名の検証 → CAの公開鍵で署名を検証 証明書チェーン → 信頼されたルートCAまでつながるか 有効期限 → 期限内か ホスト名一致 → アクセス先ドメインと一致するか 失効確認(必要に応じて) → OCSP:リアルタイム問い合わせ、CRL:リストのダウンロード |
| 3.共通鍵の生成と鍵交換 | 鍵交換のECDHEでは、双方がパラメータを交換して独立に共通鍵を導出します。 鍵交換の現在の主流:ECDHE(楕円曲線Diffie-Hellman) 特徴:共通鍵は通信ごとに生成、前方秘匿性(Forward Secrecy)あり ※補足 昔はRSAで共通鍵を暗号化して送る方式もあったが、現在はほぼ使われない 共通鍵の確立:クライアントとサーバで同じ共通鍵を生成 |
| 4.暗号化通信の開始 | 以降は共通鍵で高速に暗号化通信 |
PKIの主な構成要素と関連用語
構成要素
| 認証局(CA) | 証明書を発行する信頼の中心となる機関 ・公開鍵と主体の対応関係を証明する ・電子署名を付与する 例:Let’s Encrypt(無料・DV証明書・自動化向け)、商用CA(DigiCert など) |
| 登録局(RA) | 申請者の確認(本人確認・ドメイン確認)を行う役割 ・CAが直接担う場合もある ・ACME(Let’s Encrypt)などでは自動化されている |
| 証明書(X.509証明書) | 公開鍵と主体情報を結びつけた電子データ 主な内容: ・公開鍵 ・ドメイン名(CN / SAN) ・発行者(CA) ・有効期限 ・電子署名 |
| 公開鍵と秘密鍵 | ・公開鍵:誰でも取得可能(証明書に含まれる) ・秘密鍵:所有者のみ保持(外部に漏れてはいけない) |
| 電子署名 | 電子署名とは、データの改ざんがないこと、署名者が正しいことを保証する仕組みです。 証明書では、CAの秘密鍵で署名され、クライアントはCAの公開鍵で検証します。 |
関連の用語
| SSLとTLS | ・SSL:すでに廃止 ・TLS:現在の標準 |
| Let’s Encrypt | ・誰でも無料で、自動的にTLS証明書を発行できる認証局 ・自動化(ACME) ・DV証明書のみ |
| AWS Certificate Manager(ACM) | ・AWSの証明書管理サービス ・公開証明書 / プライベートCA / インポート証明書を扱える |
関連の記事
ルート証明書とは (Chromeで確認)
SSLサーバ証明書とは (Chromeで確認)
ローカル環境でhttps通信を行う(おれおれサーバ証明書)
