証明書
証明書は、 公開鍵 とその所有者・用途などの情報を、発行者のデジタル署名で結び付けたデータ。
OpenSSLで一般的に扱う証明書はX.509形式であり、X.509 v3では用途や制約を 拡張フィールド として記録できる。
証明書が証明するもの
Section titled “証明書が証明するもの”証明書には、主に次の関係が記録される。
Subjectの識別情報 + 公開鍵 + 用途と制約 ↓Issuerがデジタル署名検証側はIssuerの公開鍵で署名を確認する。署名が正しければ、発行後に証明書の内容が変更されていないことを確認できる。
主なフィールド
Section titled “主なフィールド”| フィールド | 意味 |
|---|---|
| Serial Number | Issuer内で証明書を識別する番号 |
| Issuer | 証明書へ署名した発行者 |
| Subject | 証明書の対象 |
| Validity | notBefore から notAfter までの有効期間 |
| Subject Public Key Info | Subjectの公開鍵とアルゴリズム |
| Extensions | 用途、CA制約、SANなどの追加情報 |
| Signature | Issuerが作成したデジタル署名 |
内容は次のコマンドで確認できる。
openssl x509 \ -in server.crt \ -text \ -nooutSubjectとIssuer
Section titled “SubjectとIssuer”SubjectとIssuerはDistinguished Name(DN)で表現される。
Subject: C=JP, ST=Tokyo, O=JEC, CN=www.example.comIssuer: C=JP, ST=Tokyo, O=JEC, CN=Intermediate CA代表的な属性:
| 属性 | 意味 |
|---|---|
C |
国コード |
ST |
都道府県・州 |
L |
市区町村 |
O |
組織名 |
OU |
部門名 |
CN |
Common Name |
Subjectは証明書の対象、Issuerは証明書へ署名した CA を表す。ただし、名前が一致するだけで同一の鍵や正しい発行者だとは判断できない。実際の検証では署名や鍵識別子なども確認される。
Common NameとSAN
Section titled “Common NameとSAN”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拡張 で制御される。
証明書と秘密鍵
Section titled “証明書と秘密鍵”証明書と秘密鍵は別ファイルである。
server.crt 公開してよい証明書server.key 公開してはいけない秘密鍵証明書には公開鍵が含まれるため、証明書から公開鍵を取り出せる。
openssl x509 \ -in server.crt \ -pubkey \ -noout- RFC 5280 X.509 v3証明書、CRL、証明書チェーン検証のInternet PKIプロファイル。
OpenSSL公式ドキュメント
Section titled “OpenSSL公式ドキュメント”- openssl-x509 証明書の表示、変換、作成。