コンテンツにスキップ

証明書

証明書は、 公開鍵 とその所有者・用途などの情報を、発行者のデジタル署名で結び付けたデータ。

OpenSSLで一般的に扱う証明書はX.509形式であり、X.509 v3では用途や制約を 拡張フィールド として記録できる。


証明書には、主に次の関係が記録される。

Subjectの識別情報
+
公開鍵
+
用途と制約
↓
Issuerがデジタル署名

検証側はIssuerの公開鍵で署名を確認する。署名が正しければ、発行後に証明書の内容が変更されていないことを確認できる。


フィールド 意味
Serial Number Issuer内で証明書を識別する番号
Issuer 証明書へ署名した発行者
Subject 証明書の対象
Validity notBefore から notAfter までの有効期間
Subject Public Key Info Subjectの公開鍵とアルゴリズム
Extensions 用途、CA制約、SANなどの追加情報
Signature Issuerが作成したデジタル署名

内容は次のコマンドで確認できる。

Terminal window
openssl x509 \
-in server.crt \
-text \
-noout

SubjectとIssuerはDistinguished Name(DN)で表現される。

Subject: C=JP, ST=Tokyo, O=JEC, CN=www.example.com
Issuer: C=JP, ST=Tokyo, O=JEC, CN=Intermediate CA

代表的な属性:

属性 意味
C 国コード
ST 都道府県・州
L 市区町村
O 組織名
OU 部門名
CN Common Name

Subjectは証明書の対象、Issuerは証明書へ署名した CA を表す。ただし、名前が一致するだけで同一の鍵や正しい発行者だとは判断できない。実際の検証では署名や鍵識別子なども確認される。


Common NameはSubject DNの一部である。TLSサーバー証明書では歴史的にサーバー名が記述されてきた。

現在のTLSサーバー証明書では、接続先のDNS名やIPアドレスを subjectAltName(SAN)へ指定する。

subjectAltName=DNS:www.example.com,IP:192.168.1.1
接続方法 SANの形式
https://www.example.com DNS:www.example.com
https://192.168.1.1 IP:192.168.1.1

CA証明書とエンドエンティティ証明書

Section titled “CA証明書とエンドエンティティ証明書”
種類 主な役割
CA証明書 他の証明書や CRL への署名
エンドエンティティ証明書 TLSサーバー、TLSクライアントなどでの利用

CAとして使用できるかは、Subject名ではなく basicConstraints や keyUsage などの X.509拡張 で制御される。


証明書と秘密鍵は別ファイルである。

server.crt 公開してよい証明書
server.key 公開してはいけない秘密鍵

証明書には公開鍵が含まれるため、証明書から公開鍵を取り出せる。

Terminal window
openssl x509 \
-in server.crt \
-pubkey \
-noout


  • RFC 5280 X.509 v3証明書、CRL、証明書チェーン検証のInternet PKIプロファイル。