[7] [DFN[[RUBYB[証明書ポリシー]@en[certificate policies]]]]拡張は、
[[証明書]]の発行方針について記述する[[証明書拡張]]です。

* 仕様書

[REFS[
- [1] '''[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]] 版) <https://tools.ietf.org/html/rfc5280#section-4.2.1.4>'''
- [26] [CITE@en[RFC 6818 - Updates to the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile]] ([TIME[2015-03-24 03:47:50 +09:00]] 版) <https://tools.ietf.org/html/rfc6818#section-3>
- [3] [CITE[[[BR]]]] ([TIME[2014-11-01 05:54:38 +09:00]] 版) <https://cabforum.org/wp-content/uploads/BRv1.2.3.pdf#page=19>
- [27] [CITE[[[BR]]]] ([TIME[2014-11-01 05:54:38 +09:00]] 版) <https://cabforum.org/wp-content/uploads/BRv1.2.3.pdf#page=43>
- [18] ([TIME[2014-11-01 05:09:16 +09:00]] 版) <https://cabforum.org/wp-content/uploads/EV-V1_5_2Libre.pdf#page=17>
]REFS]

* 意味

[8] [[末端実体証明書]]においては、当該[[証明書]]の[[発行]]時に従ったポリシーや、
当該[[証明書]]を利用できる目的を示します。 [SRC[>>1]]

[9] [[CA証明書]]においては、当該[[証明書]]を含む [[certification path]]
に対してポリシーの集合を制限するものです [SRC[>>1]]。

[10] 特定のポリシーに関する要件を持つ[[応用]]は、受け入れるポリシーの一覧を保持し、
[[証明書]]に示されたポリシーの [[OID]] と比較することが期待されています。
本拡張が[RUBYB[重要]@en[critical]]な [[certification path]] 検証ソフトウェアは本拡張を解釈できるか、または[[証明書]]を拒絶するかのいずれかとしなければ[['''なりません''']]。 [SRC[>>1]]

* 構文

[32] 
多くの[[CA証明書]]や[[EE証明書]]が、
1つ[[以上]]の[[証明書ポリシー]]を含んでいるようです。

[34] 
[[EV証明書]]では[[CA]]独自の[[証明書ポリシー]]と 
[[EV]]を表す[[証明書ポリシー]]がこの順序で指定されるのが一般的なようです。
この順序が守られていない[[証明書]]や、
守られないと挙動が変わる実装があったようです [SRC[>>31]]。

[33] 
[[証明書ポリシー]]が含まれる場合の多くは、
[[CPS]]
([CODE[1.3.6.1.5.5.7.2.1]])
の [CODE[https:]] [[URL]]
の [CODE[IA5String]] を添えて指定しているようです。

[35] 
複数の[[証明書ポリシー]]が指定される場合、
[[CPS]] はそのうちのいずれかに指定されるのが普通なようです。
第1の[[証明書ポリシー]]に指定されることが多いのですが、
それ以外の場合も少なくありません。

[37] 
user notice ([CODE[1.3.6.1.5.5.7.2.2]])
はそれほど見かけませんが、
[[Let's Encrypt]] の[[証明書]]は
[CODE[UTF8String]] の説明文が入っています。


[REFS[

[FIG(quote)[
[FIGCAPTION[
[31] [CITE@ja[グーグルChromeに証明書関連のバグ、シマンテックが指摘 | 日経 xTECH(クロステック)]]
([[日経 xTECH(クロステック)]]著, [TIME[2018-08-26 17:30:59 +09:00]])
<https://tech.nikkeibp.co.jp/it/atcl/news/17/032800954/>
]FIGCAPTION]

> 影響を受けるのはバージョン57(Chrome 57)のみ。グーグルもこのバグを報告している。
> [SNIP[]]
>  ところが、使用しているEV SSL証明書によっては、組織名が表示されず「保護された通信」という文言のみが表示されるという。つまり、EV SSL証明書以外の証明書を使っているWebサイトと同じになる。シマンテックが発行したEV SSL証明書でも、このような表示になる場合があるとしている。
> [SNIP[]]
>  シマンテックの情報によると、今回のバグは、証明書ポリシー(OID 2.5.29.32)が、「ポリシーID#1(2.23.140.1.1)、ポリシーID#2(2.16.840.1.113733.1.7.23.6)」の順序で記載されていると発生するという。
>  シマンテックはChrome 57のバグに対処するために、3月24日以降に発行するEV SSL証明書では、証明書ポリシーの記載順序を「ポリシーID#2(2.16.840.1.113733.1.7.23.6)、ポリシーID#1(2.23.140.1.1)」に変更した。

]FIG]

]REFS]


* 文脈

[16] [[BR]] に従う[[ルートCA証明書]]は本拡張を含む[['''べきではありません''']] [SRC[>>3, >>27]]。

[28] [[BR]] に従う[[下位CA証明書]]や [[Subscriber Certificate]] では本拡張を含めなければ[['''なりません''']] [SRC[>>27]]。

* OID

[2] [[CA]] が当該[[証明書]]を含む [[certification path]] について方針の集合を制限したくない場合には、
[CODE[anyPolicy]] = [CODE[{ 2 5 29 32 0 }]] を指定できます [SRC[>>1]]。

[4] [[BR]] に従う [[CA]] は、 [[BR]] により[RUBYB[検証]@en[verify]]した 
[[Subject Identity Information]] を含ま''ない''、 [[BR]] に従った[[証明書]]において、
[CODE[{joint-iso-itu-t(2) international-organizations(23) ca-browser-forum(140) certificate-policies(1) baselinerequirements(2) domain-validated(1)}]] = [CODE[2.23.140.1.2.1]]
を指定できます [SRC[>>3]]。
そのような[[証明書]]は、 [CODE[[[subject]]]] [[欄]]に
[CODE[[[organizationName]]]], [CODE[[[streetAddress]]]], [CODE[[[stateOrProvinceName]]]],
[CODE[[[portalCode]]]] を含んでは[['''なりません''']] [SRC[>>3]]。

;; すなわち、 [[DV]] [[証明書]]を表します。

[5] [[BR]] に従う [[CA]] は、[[BR]] により[RUBYB[検証]@en[verify]]した
[[Subject Identity Information]] を含む [[BR]] に従った[[証明書]]において、
[CODE[{joint-iso-itu-t(2) international-organizations(23) ca-browser-forum(140) certificate-policies(1) baselinerequirements(2) subject-identity-validated(2)}]] = [CODE[2.23.140.1.2.2]]
を指定できます [SRC[>>3]]。
そのような[[証明書]]は、 [CODE[[[subject]]]] [[欄]]に
[CODE[[[organizationName]]]], [CODE[[[localityName]]]], [CODE[[[stateOrProvinceName]]]] (あれば),
[CODE[[[countryName]]]] を含まなければ[['''なりません''']] [SRC[>>3]]。

;; すなわち、 [[OV]] [[証明書]]を表します。

;; [6] [[BR]] はこの2つの [[OID]] を規定していますが、どちらも必須とはなっていません。
[[BR]] に従った[[証明書]]であってもこのどちらも含まないことがあります。

[36] 
[[CA証明書]]では、 [[OV]] かつ [[DV]] のように、
[[EE証明書]]だとしたら矛盾しているような[[証明書ポリシー]]が同時に指定されることがあるようです。

[FIG(list)[ [30] [[証明書ポリシー]]の [[OID]]
- [CODE[2.5.29.32.0]] ([CODE[anyPolicy]])
- [CODE[2.23.140.1.1]] ([[EV]])
- [CODE[2.23.140.1.2.1]] ([[DV]])
- [CODE[2.23.140.1.2.2]] ([[OV]])
- [CODE[1.2.392.200081.1.1]]
- [CODE[1.3.6.1.4.1.6449.1.2.2.7]]
- [CODE[1.3.6.1.4.1.6449.1.2.2.26]]
- [CODE[1.3.6.1.4.1.11129.2.5.3]]
- [CODE[1.3.6.1.4.1.44947.1.1.1]]
- [CODE[2.16.840.1.114412.1.1]]
- [CODE[2.16.840.1.114412.1.2]]
- [CODE[2.16.840.1.114412.2.1]]
- [CODE[2.16.840.1.114414.1.7.23.1]]
]FIG]

* DV、OV、EV

[13] [[Web]] で用いられる[[証明書]]は、 [[CA]] による検証の度合いにより
[[OV]]、[[DV]]、[[EV]] の3段階に分類されます。

[14] [[BR]] に従い [[Subject Identity Information]] を含まない[[証明書]]を [[DV]]、
[[Subject Identity Information]] を含む[[証明書]]を [[OV]] と呼ぶと考えられます。
また [[EV Guidelines]] に従った[[証明書]]を [[EV]] と呼びます。

;; [15] [[DV]] や [[OV]] といった用語は基本用語として広く使われていますが、
[[BR]] その他の文書で明確に定義されたものではないようです。
歴史的に [[DV]] と [[OV]] の区分は曖昧なようです。

[REFS[
- [11] [CITE@en[Telling DV and OV Apart]]
([TIME[2015-04-04 21:11:42 +09:00]] 版)
<https://www.globalsign.com/en/ssl-information-center/telling-dv-and-ov-certificates-apart/>
- [12] [CITE@en-US[How to tell DV and OV certificates apart | UNMITIGATED RISK]]
([TIME[2015-04-04 21:11:53 +09:00]] 版)
<http://unmitigatedrisk.com/?p=203>
- [17] [CITE['''['''cabfpub''']''' OIDs for DV and OV]] ([TIME[2014-10-22 20:02:35 +09:00]] 版) <https://cabforum.org/pipermail/public/2014-October/004065.html>
]REFS]

[19] [[CA]] が [[Subscriber]] に[[発行]]する[[EV証明書]]は、
当該 [[CA]] が定義する次のようなポリシー識別子を[[証明書]]の[[証明書ポリシー]]拡張に含めなければ[['''なりません''']] [SRC[>>18]]。
[FIG(list)[
- [20] どの [[CA policy statement]] が当該[[証明書]]に関係するかを示す
- [21] 当該 [[CA]] が [[EV Guidelines]] を支持し適合することを表明する
- [22] [[Application Software Supplier]] との事前同意により当該[[証明書]]を [[EV証明書]]であると示す
]FIG]

;; [[EV OID]] 参照。

[24] [[issuing CA]] の管理下にない [[EV]] [[下位CA]]が[[発行]]する[[証明書]]は、
[[issuing CA]] によって定義される、当該[[下位CA]]が実装する [[EV Policies]] 
を明示的に識別する1つ以上のポリシー識別子を含めなければ[['''なりません''']] [SRC[>>18]]。

[25] [[ルートCA]]の管理下にある [[EV]] [[下位CA]]に[[発行]]する[[証明書]]は、
[CODE[[[anyPolicy]]]] を含めても構いません [SRC[>>18]]。

[23] [[Application Software Supplier]] は、[[ルートCA証明書]]に関連付けられた[[メタデータ]]に
[[EV]] ポリシー識別子を蓄積することにより、 [[EV証明書]]を発行することが承認された[[ルートCA]]
を識別します [SRC[>>18]]。

* 歴史

[29] [CITE@en[705285 - EV evaluation breaks if "2.23.140.1.1" is present and the root is not enabled for it - chromium - Monorail]]
([TIME[2017-03-28 10:57:44 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=705285>
