X509 証明書の詳細

X509の証明書の形式

X509形式の証明書には以下の内容がバイナリ形式で収められています。

Data (データ部)
Version (X509のバージョン)
Serial Number (シリアルナンバー)
これにより同一CAで同一機関への証明書を2度作っても区別できる
Signature Algorithm
Signature Algorithm (CAが利用する暗号化アルゴリズム)
Issuer (証明書の発行者)
Validity (有効期限)
Not BeforeからNot Afterまで有効
Subject (証明される対象)
Subject Public Key Info (証明される対象の公開鍵に関する情報)
Public Key Algorithm (公開鍵のアルゴリズム)
RSA Public Key (公開鍵)
X509v3 extensions (X509 Version.3の拡張部)
X509v3 Subject Key Identifier (サブジェクトの公開鍵の識別番号)
X509v3 Authority Key Identifier (この証明書を発行したCAに関する情報)
keyid
DirName
X509v3 Basic Constraintsextensions
CA (SubjectのがCAかどうか)
Signature Algorithm (CAが利用する暗号化アルゴリズム)
Signature(デジタル署名)

発行機関と証明する内容などについては、 C=Country,ST=State,O=Organization,OU=Organization Unit,CN=Common Name/EMailの ように書かれていますが、これはディレクトリシステムの仕様X.500に基づいた表現で、 LDAPなどで公開鍵を取得するのに便利なように作られているものでしょう。

デジタル署名の部分にはData部をCAの秘密鍵を使って計算したもの が入ります。ただし時間の短縮のため、ダイジェスト方式が用いられます。 ダイジェストと言うのは、元の情報を小さくすることです。 チェックサムなどもダイジェストということができます。 このダイジェストを使うのに使われるハッシュ関数としては MD5(Message Digest),SHAが広く利用されています。 これにより、証明書のSignatureの部分には、上記のDataの部分を MD5などのハッシュ関数を用いてハッシュ値(メッセージダイジェスト)を得て, それを秘密鍵で暗号化したものがSignature(デジタル署名)のところに入ります。

それでユーザが証明書が正しいかを調べる際には、ユーザ側でもCAが 使ったのと同じ方法でハッシュ値を計算し,Signatureの部分をCAの公開鍵 で復号して得られたCAで計算したハッシュ値と比較して, 一致することを確認します。一致すれば,この証明書は信じてよいものと 確認できます。

以下にx509の内容を表示させた例を示します.

# openssl x509 -text < cert.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 0 (0x0)
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=JP, ST=Fukuoka, L=Kitakyushu, O=Kitakyushu Technology Center, OU=KIIC, CN=Webmaster/Email=webmaster@kitakyu-techno-ctr.co.jp
        Validity
            Not Before: Apr 20 01:12:39 2000 GMT
            Not After : Apr 20 01:12:39 2001 GMT
        Subject: C=JP, ST=Fukuoka, L=Kitakyushu, O=FCL, OU=Lab, CN=Webmaster/Email=webmaster@fc-lab.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:be:e3:38:d4:5d:18:39:94:46:a0:b9:da:ac:a1:
                    71:8d:5c:2a:0f:66:b3:d3:21:ee:ec:d0:f4:06:a7:
                    c7:21:27:cf:d8:58:66:ef:04:25:27:f9:24:41:64:
                    b1:6a:04:5e:54:10:38:99:1c:f8:2d:5a:8b:cd:99:
                    66:51:0a:0a:a1:a1:7b:ae:15:a1:61:79:7b:06:6a:
                    7d:37:50:d4:48:ec:40:74:4d:34:a3:f6:9c:9c:34:
                    ea:fe:ce:bb:26:50:5a:d0:24:15:78:60:e4:30:b5:
                    f4:a5:e0:7a:dd:21:14:0c:54:bf:11:7e:1f:8f:08:
                    10:81:27:3a:1d:af:e5:4b:97
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                E4:D5:C6:E1:7C:A5:A4:31:5C:29:9C:99:F3:79:FF:7C:83:4A:4F:30
            X509v3 Authority Key Identifier:
                keyid:E4:D5:C6:E1:7C:A5:A4:31:5C:29:9C:99:F3:79:FF:7C:83:4A:4F:30
                DirName:/C=JP/ST=Fukuoka/L=Kitakyushu/O=FCL/OU=Lab/CN=Webmaster/Email=webmaster@fc-lab.com
                serial:00

            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: md5WithRSAEncryption
        4b:46:3f:81:7a:a9:c2:09:2a:12:73:dc:85:53:00:53:44:3f:
        79:cb:b0:77:45:11:e6:35:5c:ec:43:31:98:e5:57:28:1d:7f:
        9d:6f:f0:5e:11:32:b1:d7:e8:e8:02:1f:f9:30:3f:51:da:c7:
        9a:02:7d:8a:72:d4:11:af:aa:15:25:f8:8e:cf:39:d5:11:97:
        b7:b4:6d:3d:95:64:16:a2:8c:02:3b:de:53:2a:4d:78:40:9d:
        43:ba:8d:7f:87:9e:a8:65:c8:c8:a0:5e:08:37:8a:bc:58:d0:
        24:76:03:a3:06:ce:0e:2d:ec:36:2d:86:85:f5:c3:97:df:e9:
        7e:9c

参考資料

 

Copyright (C)2001 Takeshi FUJIKI