SSLサーバ証明書まとめ簡易版

ファイル拡張子

  • .DER/.PEMはエンコーディングを表している
  • .DER : ASN.1で表されたものをバイナリにシリアライズ
  • .PEM : ASN.1で表されたものをバイナリにシリアライズしてBase64でテキスト化(-- BEGINで始まるファイル)
  • .CRT/.CER : 証明書≒「認証局の署名」付き公開鍵
  • .KEY : 鍵(公開鍵 or 秘密鍵
  • .CSR : 証明書署名要求≒「認証局のクライアント(サーバ)の署名」付き公開鍵
  • .p12 : 複数の鍵・証明書を1つのファイルにまとめて保存するためのフォーマット(PKCS #12)
  • 「署名」は、文書(証明書、証明書署名要求)のダイジェスト(ハッシュ値)にパディングを付加したものを秘密鍵で暗号化したもの

opensslコマンド

  • 秘密鍵の生成
    openssl genrsa -out 秘密鍵 1024
  • 公開鍵の生成
    openssl rsa -in 秘密鍵 -pubout -out 公開鍵

  • 秘密鍵の生成の際に、共通鍵暗号方式(DES or AES)で秘密鍵を暗号化
    openssl genrsa -aes256 -out 秘密鍵 1024

  • 証明書署名要求の作成
    openssl req -new -key 「鍵所有者の」秘密鍵 -out 証明書署名要求

  • ルート認証局による証明書の作成
    openssl x509 -req -in 証明書署名要求 -signkey 「認証局の」秘密鍵 -days 期限 -out 証明書

  • 秘密鍵と公開鍵をPKCSファイル(.p12)にまとめて保存
    openssl pkcs12 -export -in 公開鍵 -inkey 秘密鍵 -out PKCSファイル

  • 証明書から公開鍵を取り出す
    openssl x509 -in 証明書 -pubkey -noout -out 公開鍵

    • -nooutで証明書自身の出力を抑制し、取り出した公開鍵だけを出力

  • クライアントからのサーバの証明書の検証
    openssl s_client -connect サーバ:443 -CAfile 認証局の証明書
    • サーバには作成した証明書をインストールする
    • 認証局の証明書にある認証局の公開鍵を使って証明書の署名を検証する

ルート認証局と中間認証局

  • ルート認証局の証明書は、通常ブラウザにプリインストールされているため、ダウンロードしたものと同一かどうかで検証が可能
  • 中間認証局の証明書は、ルート認証局により署名されているため、ルート認証局の証明書(公開鍵)で検証される
  • このように、証明書の連鎖(チェイン)で、ルート認証局証明書 -> 中間認証局証明書 -> サーバ証明書と3階層になっていることが多い
  • 4階層(クロスルート方式)の場合もあるし、物理的には何階層でも可能

c.f.

暗号技術入門 第3版 秘密の国のアリス

暗号技術入門 第3版 秘密の国のアリス