x 509証明書
10506 ワード
http://en.wikipedia.org/wiki/X.509
http://blog.csdn.net/wuzh1230/article/details/4240238
http://blog.csdn.net/wuzh1230/article/details/7211997
証明書ファイルのエンコーディング
バイナリコード-DER
x 509のASN 1で定義された構造コードの結果をそのままバイナリファイルに書き込みます。
DER証明書のバイナリ内容をbase 64で符号化した後、
前後に付ける
「-----BEGIN CERTIFFATE--」
base 64コードの証明書の内容
-------END CERTIFFATE-----
などのフィールドはテキストファイル(Privacy Enhanced Mail)として保存されます。
証明書ファイルの拡張子
.cer .crt,–usualy in binary DER form、but Base 64-encoded certificates are comon too(see) .pem above).pfx,prediestor of PKCS菗12(usualy contains data in PKCS胻12 format,e.g.with PFX files generated in IIS)もちろん、時には、derとpemもファイルのサフィックスとして直接に使用して、この証明書のコードを表しています。x 509証明書のフォーマット定義…典型的なウェブサイト証明書
http://blog.csdn.net/wuzh1230/article/details/4240238
http://blog.csdn.net/wuzh1230/article/details/7211997
証明書ファイルのエンコーディング
バイナリコード-DER
x 509のASN 1で定義された構造コードの結果をそのままバイナリファイルに書き込みます。
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version MUST be v3
}
Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER
Validity ::= SEQUENCE {
notBefore Time,
notAfter Time }
Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
-- contains the DER encoding of an ASN.1 value
-- corresponding to the extension type identified
-- by extnID
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
tbs証明書はどうやって抽出しますか?openssl asn1parse -in alicecert.pem -out tbsCert.der -noout -strparse 4
*注意入力はpem符号化の証明書で、出力はder符号化の証明書です。出力は以下の通りです。00000000 30 82 02 ba 02 09 00 f3 f9 32 df e4 8e ec 15 30 |0........2.....0|
00000010 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 2b |...*.H........0+|
00000020 31 29 30 27 06 09 2a 86 48 86 f7 0d 01 09 01 16 |1)0'..*.H.......|
00000030 1a 69 6d 61 6c 69 63 65 2e 66 72 65 65 6d 61 69 |.imalice.freemai|
00000040 6c 40 67 6d 61 69 6c 2e 63 6f 6d 30 1e 17 0d 31 |[email protected]|
00000050 35 30 33 32 35 30 38 32 32 35 33 5a 17 0d 31 36 |50325082253Z..16|
00000060 30 33 32 34 30 38 32 32 35 33 5a 30 2b 31 29 30 |0324082253Z0+1)0|
00000070 27 06 09 2a 86 48 86 f7 0d 01 09 01 16 1a 69 6d |'..*.H........im|
00000080 61 6c 69 63 65 2e 66 72 65 65 6d 61 69 6c 40 67 |alice.freemail@g|
00000090 6d 61 69 6c 2e 63 6f 6d 30 82 02 22 30 0d 06 09 |mail.com0.."0...|
000000a0 2a 86 48 86 f7 0d 01 01 01 05 00 03 82 02 0f 00 |*.H.............|
000000b0 30 82 02 0a 02 82 02 01 00 b0 7f 43 78 36 9c 0b |0..........Cx6..|
000000c0 fe db 64 d1 36 0b 6b 98 61 6b 73 52 cc 3f ff f0 |..d.6.k.aksR.?..|
000000d0 35 6a 45 80 ef 5a 9d f8 1d 19 9f a6 b7 29 09 10 |5jE..Z.......)..|
000000e0 63 bb 9e 47 13 79 7e 10 a3 9c 68 1c fe 24 d1 41 |c..G.y~...h..$.A|
000000f0 47 1e b5 2c 30 c9 4e ab cd 14 fc aa 9e 25 60 10 |G..,0.N......%`.|
00000100 dd b9 af 7d ca 71 23 b2 fc 16 f6 44 7b 01 d5 09 |...}.q#....D{...|
00000110 89 36 7a b3 61 3d c8 9a bb 4d b7 64 c1 3d 09 40 |.6z.a=...M.d.=.@|
00000120 1a af 95 bd d2 f0 fc 8c 0f 93 e7 2d de 23 4d 86 |...........-.#M.|
00000130 d3 a5 a4 1b a4 6c 71 32 b5 34 0d b0 90 a4 aa c3 |.....lq2.4......|
00000140 75 51 69 58 0c a5 bd b1 a7 a3 8e 7c 2d 15 5b c1 |uQiX.......|-.[.|
00000150 19 70 5f 76 e5 91 12 42 01 00 63 8d ec 70 e5 60 |.p_v...B..c..p.`|
00000160 c6 ef 8a bf 81 ff 7b 55 4c 39 b1 33 ca 60 06 91 |......{UL9.3.`..|
00000170 58 5a 7d 5c 1c a7 e1 98 13 42 7c c9 de c8 4d 26 |XZ}\.....B|...M&|
00000180 a0 18 31 73 0a 65 f1 8b 8d 2b ad 2b a8 81 82 1f |..1s.e...+.+....|
00000190 47 83 22 b4 9d 44 db 7f 84 5d 5b 02 c1 4e 7a 84 |G."..D...][..Nz.|
000001a0 a9 37 cd 5c 29 41 31 3c 15 19 40 0d d7 3a b9 4d |.7.\)A1<..@..:.M|
000001b0 f4 7d a8 e0 07 9e 18 ab 26 a3 e7 ec 4d 9f 44 3f |.}......&...M.D?|
000001c0 7f 0c 14 32 be 51 6d b1 36 7e bc 2d 5e 09 dc 22 |...2.Qm.6~.-^.."|
000001d0 f3 74 d2 0e 36 e8 f7 5e 0f b7 3c 44 39 41 f5 b8 |.t..6..^..<D9A..|
000001e0 28 74 c8 9e e9 5c a0 1f 31 26 91 bb e6 da 0f c0 |(t...\..1&......|
000001f0 a0 62 f6 ee f4 62 48 2d 4e 77 04 5c 4f 22 15 d3 |.b...bH-Nw.\O"..|
00000200 cc b6 bf 03 21 66 92 11 e0 ee f9 5a 34 e6 98 06 |....!f.....Z4...|
00000210 a8 53 5c e5 7c 2d 28 54 5b d9 59 f6 4d 60 54 32 |.S\.|-(T[.Y.M`T2|
00000220 78 29 37 82 3b 03 d2 59 39 81 66 74 30 ee 8f e1 |x)7.;..Y9.ft0...|
00000230 64 39 1a 7f c0 33 0f be 92 1a f6 75 87 24 ab 35 |d9...3.....u.$.5|
00000240 3c 24 00 16 2b c8 01 a1 56 24 8b 2b e8 f1 84 b6 |<$..+...V$.+....|
00000250 39 eb 27 4d ab 25 06 bd f6 14 1b 20 45 88 d5 d3 |9.'M.%..... E...|
00000260 28 41 5c e5 af 75 0c 5f bf 80 b6 8a d1 79 c7 cc |(A\..u._.....y..|
00000270 96 74 3e 31 c4 e7 cb dd cd 5f ec c7 2c e2 34 fd |.t>1....._..,.4.|
00000280 41 30 3a 06 5a ea 06 0e f3 23 0a c7 d8 bb ac 04 |A0:.Z....#......|
00000290 71 62 b3 d3 dc e0 d5 1c 69 6e 4c 3e 58 0b 18 d3 |qb......inL>X...|
000002a0 f3 55 8d ee 1d 47 89 8c 83 c6 1d 5c 12 9b ce 7a |.U...G.....\...z|
000002b0 3b 43 4b 98 e3 0a ac fc 1f 02 03 01 00 01 |;CK...........|
もう一つの方法があります。dd if=alicecert.der of=alicecert.tbs.der bs=1 count=702 skip=4
テキストコード-PEMDER証明書のバイナリ内容をbase 64で符号化した後、
前後に付ける
「-----BEGIN CERTIFFATE--」
base 64コードの証明書の内容
-------END CERTIFFATE-----
などのフィールドはテキストファイル(Privacy Enhanced Mail)として保存されます。
証明書ファイルの拡張子
.cer .crt,–usualy in binary DER form、but Base 64-encoded certificates are comon too(see) .pem above).pfx,prediestor of PKCS菗12(usualy contains data in PKCS胻12 format,e.g.with PFX files generated in IIS)もちろん、時には、derとpemもファイルのサフィックスとして直接に使用して、この証明書のコードを表しています。x 509証明書のフォーマット定義…典型的なウェブサイト証明書
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 7829 (0x1e95)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc,
OU=Certification Services Division,
CN=Thawte Server CA/[email protected]
Validity
Not Before: Jul 9 16:04:02 1998 GMT
Not After : Jul 9 16:04:02 1999 GMT
Subject: C=US, ST=Maryland, L=Pasadena, O=Brent Baccala,
OU=FreeSoft, CN=www.freesoft.org/[email protected]
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:b4:31:98:0a:c4:bc:62:c1:88:aa:dc:b0:c8:bb:
33:35:19:d5:0c:64:b9:3d:41:b2:96:fc:f3:31:e1:
66:36:d0:8e:56:12:44:ba:75:eb:e8:1c:9c:5b:66:
70:33:52:14:c9:ec:4f:91:51:70:39:de:53:85:17:
16:94:6e:ee:f4:d5:6f:d5:ca:b3:47:5e:1b:0c:7b:
c5:cc:2b:6b:c1:90:c3:16:31:0d:bf:7a:c7:47:77:
8f:a0:21:c7:4c:d0:16:65:00:c1:0f:d7:b8:80:e3:
d2:75:6b:c1:ea:9e:5c:5c:ea:7d:c1:a1:10:bc:b8:
e8:35:1c:9e:27:52:7e:41:8f
Exponent: 65537 (0x10001)
Signature Algorithm: md5WithRSAEncryption
93:5f:8f:5f:c5:af:bf:0a:ab:a5:6d:fb:24:5f:b6:59:5d:9d:
92:2e:4a:1b:8b:ac:7d:99:17:5d:cd:19:f6:ad:ef:63:2f:92:
ab:2f:4b:cf:0a:13:90:ee:2c:0e:43:03:be:f6:ea:8e:9c:67:
d0:a2:40:03:f7:ef:6a:15:09:79:a9:46:ed:b7:16:1b:41:72:
0d:19:aa:ad:dd:9a:df:ab:97:50:65:f5:5e:85:a6:ef:19:d1:
5a:de:9d:ea:63:cd:cb:cc:6d:5d:01:85:b5:6d:c8:f3:d9:f7:
8f:0e:fc:ba:1f:34:e9:96:6e:6c:cf:f2:ef:9b:bf:de:b5:22:
68:9f
証明書の検証は、署名証明書Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc,
OU=Certification Services Division,
CN=Thawte Server CA/[email protected]
Validity
Not Before: Aug 1 00:00:00 1996 GMT
Not After : Dec 31 23:59:59 2020 GMT
Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc,
OU=Certification Services Division,
CN=Thawte Server CA/[email protected]
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:d3:a4:50:6e:c8:ff:56:6b:e6:cf:5d:b6:ea:0c:
68:75:47:a2:aa:c2:da:84:25:fc:a8:f4:47:51:da:
85:b5:20:74:94:86:1e:0f:75:c9:e9:08:61:f5:06:
6d:30:6e:15:19:02:e9:52:c0:62:db:4d:99:9e:e2:
6a:0c:44:38:cd:fe:be:e3:64:09:70:c5:fe:b1:6b:
29:b6:2f:49:c8:3b:d4:27:04:25:10:97:2f:e7:90:
6d:c0:28:42:99:d7:4c:43:de:c3:f5:21:6d:54:9f:
5d:c3:58:e1:c0:e4:d9:5b:b0:b8:dc:b4:7b:df:36:
3a:c2:b5:66:22:12:d6:87:0d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:TRUE
Signature Algorithm: md5WithRSAEncryption
07:fa:4c:69:5c:fb:95:cc:46:ee:85:83:4d:21:30:8e:ca:d9:
a8:6f:49:1a:e6:da:51:e3:60:70:6c:84:61:11:a1:1a:c8:48:
3e:59:43:7d:4f:95:3d:a1:8b:b7:0b:62:98:7a:75:8a:dd:88:
4e:4e:9e:40:db:a8:cc:32:74:b9:6f:0d:c6:e3:b3:44:0b:d9:
8a:6f:9a:29:9b:99:18:28:3b:d1:e3:40:28:9a:5a:3c:d5:b5:
e7:20:1b:8b:ca:a4:ab:8d:e9:51:d9:e2:4c:2c:59:a9:da:b9:
b2:75:1b:f6:42:f2:ef:c7:f2:18:f9:89:bc:a3:ff:8a:23:2e:
70:47
md 5からの衝突攻撃です。