今回はX.509(エックスポイントゴーマルキュー)形式についてのお話です
X.509フォーマットの証明書は一般的なSSLサーバ証明書やクライアント証明書に使われている形式です。
証明書というと、「pem形式」と言われる人も多いのですが、公開鍵証明書のフォーマットと言った場合は、X.509形式のことを指しますね。
では、このX.509形式とはどのようなものなのでしょうか。
X.509とは?証明書で使われている形式(フォーマット)
SSLサーバ証明書の仕様を見ているとX.509という言葉が出てくることがあります。
X.509という言葉は一般的にはIETFのPKI(X.509)と証明書失効リストプロファイル(CRL)のことを表しています。
現在、一般的なSSLサーバ証明書はこの規格を使って発行されているので、SSLサーバ証明書の仕様を表していると言われることもあります。
ちなみに証明書というとSSLサーバ証明書ばかりが話の的になりますが、クライアント証明書も同じフォーマットです。
X.509v3形式の証明書構成を見てみる
X.509の現在のバージョンは3です。
X.509 v3 SSLサーバ証明書の構造は以下のようになっています。
1、バージョン情報
2、シリアル番号
3、署名アルゴリズム
4、発行者情報
5、有効期間の開始と有効期間の終了
6、サブジェクト(発行先の情報)
7、公開鍵のアルゴリズム
8、公開鍵
9、署名アルゴリズム
10、拇印
1から8の情報を、9のアルゴリズムで算出した値が10の拇印になります。
良く誤解されるのが、1のバージョン情報ですね。
SSLのプロトコルにもバージョンがあって、X.509のバージョンを見て「SSLの3.0」と言う人もいますが、ここはSSLのプロトコルバージョンではなく、X.509のバージョン情報があらわされているものです。
ちなみに、、、SSLサーバ証明書には、SSLとかTLSのバージョン情報は含まれてません。
それはまた別の機会に。
X.509形式の証明書はpem形式ですか?cer形式ですか?
X.509形式の証明書の形式についてPEM形式なのか?という疑問が出てきます。
X.509形式はX.509形式でしかないのですが、ちょっと調べてみました。
認証局から届いた証明書を見ると
—–BEGIN CERTIFICATE—–
文字列
—–END CERTIFICATE—–
という状態で見えます。
これはX.509形式の証明書をBase64でエンコードしたテキスト形式なんですが、まるで暗号のようで、これを見たところで何の証明書だか全く分かりません。
この文字列(ヘッダー、フッターを含む)をテキストエディタに貼り付けて、以下の拡張子で保存すれば内容を確認することができます。
X.509形式の証明書は拡張子を
- .cer
- .crt
- .der
などで保存すると、Windows OS上で証明書のアイコンとして表示され、ダブルクリックで証明書の情報が確認できるようになります。
これは、Windows OSがこの拡張子を証明書として扱うよう関連付けされているからで、ダブルクリックするとWindows OSの証明書ユーティリティで、証明書の内容を解析してわかりやすく表示してくれます。
Apacheなどのサーバにインストールする際はこの形式をインストールすることになります。
Windows OSの拡張子だけで見ると、CER、CRT、DER形式ということになるのかと思ってしまいます。
X.509形式はPEM形式ではない?
このX.509の証明書はしばしばPEM形式と表現されますが、そもそもPEMとは
Privacy Enhanced Mail
のことで、暗号化されたメールのことを指しています。
UNIX/Linuxの世界では、PEMで証明書をファイルに保存して取り扱うことが比較的多いそうです。
そのため、証明書のことをPEM形式として表現されることがあるようです。
なので、PEM形式というふうにも言えるわけです。
(—–BEGIN CERTIFICATE—–で始まる形式の証明書は、たいていPEM形式です)
X.509形式の証明書を表現するときは
- PEM形式
- CER形式
- CRT形式
- DER形式(これはバイナリなのでちょっと違うか)
と、どれを言ったとしても間違いではありません。
通じればどの言い方をしても大丈夫です、ということになると思います。
PEM形式の証明書かの確認方法
ちなみにOpenSSLでは以下のコマンドでPEM形式かどうかを確認することができます。
openssl x509 -inform PEM -text -noout -in <証明書ファイル名>
このコマンドで解析できればPEM、解析できずに「unable to load certificate」などのエラーが出た場合はPEM形式ではない、ということになります。
まとめ
今回の内容をまとめると
- X.509形式は証明書、CRLのフォーマット
- X.509のバージョンは3
- SSLのプロトコルバージョンではない
- PEM形式である
- CER形式、CRT形式でもある
- PEM形式であるかはOpenSSLで確認できる
ということでした。
以上、「X.509形式を簡単に解説。証明書のフォーマットはPEM?CER?」でした。
コメント