/
771.txt
287 lines (213 loc) · 11.8 KB
/
771.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
[51] [DFN[[RUBYB[[[証明書]]]@en[certificate]]]]は、[[公開鍵]]と[[実体]]を関連付けたものです。
;; [46] [[PKI]] も参照。
* 仕様書
[REFS[
- [23] [CITE@en[RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile]] ([TIME[2015-02-22 15:44:10 +09:00]] 版) <http://tools.ietf.org/html/rfc5280>
-- [24] [CITE@en[RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile]] ([TIME[2015-02-22 15:44:10 +09:00]] 版) <http://tools.ietf.org/html/rfc5280#section-3.1>
-- [30] '''[CITE@en[RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile]] ([TIME[2015-02-22 15:44:10 +09:00]] 版) <http://tools.ietf.org/html/rfc5280#section-4>'''
- [43] [CITE[RFC Errata Report]] ([TIME[2015-03-23 15:33:42 +09:00]] 版) <http://www.rfc-editor.org/errata_search.php?rfc=5280>
]REFS]
[31] [[証明書]]一般については [[X.509]] で規定されていますが、
[[インターネット]]では [[X.509]] [[証明書]]の v3 形式の[[プロファイル]]として
[[RFC 5280]] で規定されるものが利用されています。
* 証明書の版
[25] [[CCITT X.509]] の1988年版に最初の[[証明書]]の形式が規定されており、
これは v1 と呼ばれています [SRC[>>24]]。
[28] [[PEM]] (1993) は v1 を採用しています。この運用経験が v3 の開発にフィードバックされています。
[SRC[>>24]]
[26] [[X.509]] は1993年に改訂され、この[[証明書]]の形式が v2 と呼ばれています [SRC[>>24]]。
[27] [[X.509]] は更に1996年に改訂され、この[[証明書]]の形式が v3 と呼ばれています [SRC[>>24]]。
[29] [[RFC 3280]] は v3 の[[インターネット]]向け[[プロファイル]]です。
[[RFC 5280]] はその改訂版です。
[34] [[RFC 5280]] においては、[[証明書]]の版は 3 ですが、場合によっては 2
とできることもあります。その場合でも 3 としても構いません。実装はどの版も受け入れるべきですが、
少なくても 3 に対応しなければなりません。 [SRC[>>30]]
[37] [[版]]は [CODE[[[TBSCertificate]]]] の [DFN[[CODE[[[version]]]]]]
[[欄]]に指定します。
* 構文
[32] [[証明書]]の形式は [[ASN.1]] により定義されています [SRC[>>30]]。
[33] [[署名]]の計算には [[ASN.1]] [[DER]] を使います [SRC[>>30]]。
[35] [[証明書]]は、次の[RUBYB[[[欄]]]@en[field]]で構成されます [SRC[>>30]]。
[FIG(list members)[
[FIGCAPTION[
[CODE[[[Certificate]]]]
]FIGCAPTION]
:[CODE[[[tbsCertificate]]]]:[[署名]]されるデータ。 [CODE[[[TBSCertificate]]]] 型の値。
:[CODE[[[signatureAlgorithm]]]]:
:[CODE[[[signatureValue]]]]:
]FIG]
[36] [DFN[[CODE[[[TBSCertificate]]]]]] 値は次の[[欄]]で構成されます [SRC[>>30]]。
[FIG(list members)[
[FIGCAPTION[
[CODE[[[TBSCertificate]]]]
]FIGCAPTION]
:[CODE[[[version]]]]:[[証明書]]の版。
:[CODE[[[serialNumber]]]]:
:[CODE[[[signature]]]]:
:[CODE[[[issuer]]]]:[[証明書]]の発行者。
:[CODE[[[validity]]]]:
:[CODE[[[subject]]]]:[[証明書]]の[[公開鍵]]に関連付けられた[[実体]]。
:[CODE[[[subjectPublicKeyInfo]]]]:
:[CODE[[[issuerUniqueID]]]]:
:[CODE[[[subjectUniqueID]]]]:
:[CODE[[[extensions]]]]:[[証明書拡張]]。
]FIG]
* 証明書拡張
[39] [DFN[[CODE[[[extension]]]]]] [[欄]]は、1つ[[以上]]の[[証明書拡張]]の[[列]]です。
これは v3 でのみ使えます。 [SRC[>>30]]
[40] 拡張には、 [[critical]] なものと [[non-critical]] なものがあります。
[[critical]] なものは、認識できないか処理できないデータが含まれているなら、
[[証明書]]を拒絶しなければ[['''なりません''']]。 [[non-critical]]
なものは、認識できなければ無視して構いませんが、認識できるなら処理しなければ[['''なりません''']]。 [SRC[>>30]]
[42] [[証明書]]に同じ種類の拡張を複数含めては[['''なりません''']] [SRC[>>30]]。
[41] 拡張のいくつかは、対応が[['''必須''']]となっています。
[FIG(short list)[
- [[SAN]]
- [[issuer alternative names]]
- [[name constraints]]
- [[authority information access]]
]FIG]
* 文脈
[38] [[証明書]]は、 [[TLS]] で使われます。
* 証明書に関する概念
[48] 次の[[証明書]]の分類があります。
[FIG(short list)[
- [[ルート証明書]]
- [[中間証明書]]
- [[交差証明書]]
- [[クロスルート証明書]]
- [[CA証明書]]
-- [[相互認証証明書]]
-- [[自己発行証明書]]
-- [[自己署名証明書]]
- [[末端実体証明書]]
- [[Publicly-Trusted Certificate]]
- [[妥当な証明書]]
]FIG]
[47] 次の構文やデータ構造があります。
[FIG(short list)[
- [[X.501 Name]]
-- [[RDN]]
--- [CODE[[[CN]]]]
- [[GeneralNames]]
-- [CODE[[[dNSName]]]]
-- [CODE[[[iPAddress]]]]
]FIG]
[49] 次の[[失効]]に関わる仕組みがあります。
[FIG(short list)[
- [[CRL]]
- [[OCSP]]
- [[CRLSets]]
- [[OneCRL]]
]FIG]
[50] その他次の概念があります。
[FIG(short list)[
- [[CA]]
- [[certification path]]
]FIG]
* 団体
[52] [[証明書]]は [[PKI]] を構成する技術の1つであり、 [[ITU-T]] (および [[ISO/IEC]])
で標準化されています。
[[インターネット]]での利用、特に [[TLS]] との組み合わせに関しては [[IETF]]
が [[PKIX]] として規定しています。
;; [[PKI]] や [[PKIX]] を参照。
[54] [[Web]] で利用可能な[[証明書]] (主として [[HTTPS]] で用いられるもの)
については [[CA/Browser Forum]] が発行基準を定めています。また各[[Webブラウザー事業者]]や
[[OS]] の提供元がそれぞれの利用する[[ルート証明書]]についての基準を設けています。
;; [[CA/Browser Forum]] や[[ルート認証局]]を参照。
[55] 実際の[[証明書]]の発行はこれらの仕様に基づき各種機関・企業が行っています。
;; [[CA]] 参照。
* TLS [CODE[Certificate]] メッセージ
[21] [[TLS Handshake Protocol]] の [DFN[[CODE[[[Certificate]]]]]]
[[メッセージ]]は[[証明書]]を表します。[[鯖]]から[[クライアント]]へは[[鯖証明書]]、
[[鯖]]から[[クライアント]]へは[[クライアント証明書]]となります。
* メモ
[1]
[CITE[無償で正統的なコードサイニング証明書を入手する方法]] <http://sqs.cmr.sfc.keio.ac.jp/tdiary/?date=20051003#p01>
([[名無しさん]] [WEAK[2005-10-04 00:42:50 +00:00]])
[2]
[CITE[高木浩光@自宅の日記 - PKIよくある勘違い(2)「安全に配布すればルート証明書を入れさせてよい」, PKIよくある勘違い(3)「プライベート認証局が妥当なら..]] <http://www.takagi-hiromitsu.jp/diary/20050205.html>
([[名無しさん]])
[3]
『無償で正統的なコードサイニング証明書を入手する方法:その2』 <http://sqs.cmr.sfc.keio.ac.jp/tdiary/?date=20051003#p02>
([[名無しさん]] [WEAK[2006-02-19 07:06:33 +00:00]])
[4]
[CITE@ja-JP[高木浩光@自宅の日記 - IE 7の普及でサーバ証明書失効によるトラブルが表面化する]] ([[高木浩光]] 著, [TIME[2007-04-16 13:20:15 +09:00]] 版) <http://takagi-hiromitsu.jp/diary/20070415.html#p01>
([[名無しさん]] [WEAK[2007-04-17 00:54:40 +00:00]])
[5] [CITE[Intent to Deprecate: SHA-1 certificates - Google グループ]]
( ([TIME[2014-08-30 03:05:20 +09:00]] 版))
<https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/2-R4XziFc7A%5B1-25-false%5D>
[6] [CITE@en[RFC 3709 - Internet X.509 Public Key Infrastructure: Logotypes in X.509 Certificates]]
( ([TIME[2014-09-21 15:55:02 +09:00]] 版))
<https://tools.ietf.org/html/rfc3709>
[7] [CITE@en[RFC 6170 - Internet X.509 Public Key Infrastructure -- Certificate Image]]
( ([TIME[2014-10-27 13:42:42 +09:00]] 版))
<https://tools.ietf.org/html/rfc6170>
[8] [CITE[Security Issue]]
([TIME[2015-03-03 23:44:00 +09:00]] 版)
<http://web.archive.org/web/19970521032145/http://form.netscape.com/newsref/std/ssl_2.0_certificate.html>
[9] [CITE[Netscape Certificate Specifications]]
([TIME[2015-03-03 23:44:23 +09:00]] 版)
<http://web.archive.org/web/19990218203921/http://home.netscape.com/eng/security/certs.html>
[10] [CITE[Netscape Certificate Download Specification]]
([TIME[2015-03-03 23:45:26 +09:00]] 版)
<http://web.archive.org/web/19990202032056/http://www.home.netscape.com/eng/security/downloadcert.html>
[11] [CITE[Netscape Certificate Download Specification]]
([TIME[2015-03-03 23:45:41 +09:00]] 版)
<http://web.archive.org/web/19990129050825/http://www.home.netscape.com/eng/security/comm4-cert-download.html>
[12] [CITE[Netscape Certificate Extensions Specification]]
([TIME[2015-03-03 23:46:09 +09:00]] 版)
<http://web.archive.org/web/19990129063212/http://www.home.netscape.com/eng/security/comm4-cert-exts.html>
[13] [CITE[Netscape Certificate Extensions Specification]]
([TIME[2015-03-03 23:46:31 +09:00]] 版)
<http://web.archive.org/web/19990218190724/http://home.netscape.com/eng/security/cert-exts.html>
[14] [CITE[Netscape Certificate Download Specification]]
([TIME[2015-03-03 23:46:44 +09:00]] 版)
<http://web.archive.org/web/19990202032056/http://www.home.netscape.com/eng/security/downloadcert.html>
[15] [CITE[Security Issue]]
([TIME[2015-03-03 23:47:02 +09:00]] 版)
<http://web.archive.org/web/19991008215709/http://home.netscape.com/eng/security/ssl_2.0_certificate.html>
[16] [CITE@en[RFC 6091 - Using OpenPGP Keys for Transport Layer Security (TLS) Authentication]]
([TIME[2014-12-30 23:21:42 +09:00]] 版)
<http://tools.ietf.org/html/rfc6091>
[17] [CITE[Transport Layer Security (TLS) Extensions]]
([TIME[2015-03-13 06:28:01 +09:00]] 版)
<http://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3>
[18] [CITE[Transport Layer Security (TLS) Extensions]]
([TIME[2015-03-13 06:28:01 +09:00]] 版)
<http://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#certificate-status>
[19] [CITE@en[ImperialViolet - Revocation checking and Chrome's CRL]]
([[Adam Langley]] 著, [TIME[2015-03-21 15:52:08 +09:00]] 版)
<https://www.imperialviolet.org/2012/02/05/crlsets.html>
[20] [CITE@en[CA:Certificate Download Specification - MozillaWiki]]
( ([TIME[2013-08-10 14:11:55 +09:00]] 版))
<https://wiki.mozilla.org/CA:Certificate_Download_Specification>
[FIG(quote)[
[FIGCAPTION[
[22] [CITE@en[Necko/Differences - MozillaWiki]]
([TIME[2015-03-21 17:34:27 +09:00]] 版)
<https://wiki.mozilla.org/Necko/Differences>
]FIGCAPTION]
>
> Other browsers have more robust certificate chain processing; ours gets confused in some common situations.
]FIG]
[44] [CITE@en-us[Google warns of unauthorized TLS certificates trusted by almost all OSes ''''''[''''''Updated'''''']'''''' | Ars Technica]]
([TIME[2015-04-02 02:26:29 +09:00]] 版)
<http://arstechnica.com/security/2015/03/google-warns-of-unauthorized-tls-certificates-trusted-by-almost-all-oses/>
[45] [CITE@en[CA:Problematic Practices - MozillaWiki]]
([TIME[2015-04-02 07:13:46 +09:00]] 版)
<https://wiki.mozilla.org/CA:Problematic_Practices>
[FIG(quote)[
[FIGCAPTION[
[53] ([TIME[2014-11-01 05:54:38 +09:00]] 版)
<https://cabforum.org/wp-content/uploads/BRv1.2.3.pdf#page=9>
]FIGCAPTION]
> Certificate: An electronic document that uses a digital signature to bind a public key and an identity
]FIG]
[FIG(quote)[
[FIGCAPTION[
[56] ([TIME[2014-11-01 05:54:38 +09:00]] 版)
<https://cabforum.org/wp-content/uploads/BRv1.2.3.pdf#page=12>
]FIGCAPTION]
> Valid Certificate: A Certificate that passes the validation procedure specified in RFC 5280.
]FIG]