TOC
はじめに
SSLサーバ証明書の動きがいまいち理解できていなかったため整理した。
認識誤りがあればコメント頂けると助かります。
証明書の用途
主にウェブサイト運営団体の電子的な身分証明書として使用する。SSL通信を実現する。
主要キーワードと役割
ルート証明書
ルート認証局(ルートCA)が発行する証明書。Webサーバが公開している公開鍵が本当に該当のWebサーバのものか証明する。
Webサーバ
クライアントとHTTPSで通信したい。秘密鍵と公開鍵を持つ
クライアント
Webサーバにアクセスする側。WebサーバとHTTPSで通信したい。ルート証明書を事前にインストールしている
SSL通信までの動き
事前手続き
- クライアントにルート証明書を設定
- mkcertを使い、ルート証明書の生成、インストール、ルート証明書を使ったWebサーバ証明書への署名をまとめて行う
- (通常はルート証明書が既にクライアントに設定されている)
- (通常はWebサーバ管理者が依頼し、ルート認証局がWebサーバのデジタル証明書に署名を行う)
Webサーバへの公開鍵・秘密鍵の登録
- mkcertで作成された秘密鍵、公開鍵をWebサーバに登録する
Webサーバのサーバ証明書を取得
- クライアント->Webサーバ HTTPSリクエストを発行
- クライアント<-Webサーバ Webサーバのサーバ証明書を送付
サーバ証明書の認証
- クライアント ルート証明書の公開鍵からWebサーバのサーバ証明書についた署名(ハッシュ値)を復号する
- クライアント 受信データをハッシュ関数を用いてハッシュ値を求める
- クライアント 上記2点のハッシュ値が一致すればWebサーバの公開鍵(デジタル証明書)が正しいと判断する
共通鍵の交換
- クライアント Webサーバの公開鍵を使ってプレマスターシークレットを暗号化
- Webサーバ Webサーバの秘密鍵を使ってプレマスタシークレットを復号化
クライアント・Webサーバ お互いにプレマスタシークレットから共通鍵を生成
補足
CRL
- 認証局から一定周期で発行され、クライアント側からLDAP、HTTP、FTPなどで取得する
CRLには次回CRL発行タイミング(クライアントからの次アクセス時間)が記載されている
(mkcertではこれがかなり先の日付?)
証明書に含まれる情報
- 公開鍵の情報
- コモンネーム
- 公開鍵の所有者情報
- 所有者を証明した認証局の情報
- 証明書の有効期限
- 証明書のシリアル番号
- 証明書の失効リスト参照先 詳細は
こちら参照