subjectPublicKeyInfo
证书链中所有证书的subjectPublicKeyInfo中的OID都是一样的
CRL Distribution Point
证书吊销列表分发点 (CRL Distribution Point ,简称 CDP) 是含在数字证书中的一个可以共各种应用软件自动下载的最新的 CRL 的位置信息。一个 CDP 通常出现在数字证书的 详细信息 选项卡的 CRL 分发点 域,一般会列出多个使用不同的访问方法,以确保如 Web 浏览器和 Web 服务器程序始终可以获取最新的 CRL 。 CDP 一般是一个可以访问 http 网址, 如下图所示:
讲到吊销列表,就不得不讲讲 OCSP , Online Certificate Status Protocol, 证书状态在线查询协议, 是 IETF 颁布的用于实时查询数字证书在某一时间是否有效的标准。
上面已经提到,一般 CA 都只是 每隔一定时间 ( 几天或几个月 ) 才发布新的吊销列表,可以看出: CRL 是 不能及时反映证书的实际状态的。而 OCSP 就能满足实时在线查询证书状态的要求。它为电子商务网站提供了一种实时检验数字证书有效性的途径,比下载和处理 CRL 的传统方式更快、更方便和更具独立性。请求者发送查询请求, OCSP 服务器会返回证书可能的三个状态:正常、吊销和未知。
OCSP 服务由独立的 OCSP 服务器来提供服务,目前WoSign[1]新证书颁发系统支持 OCSP 方式查询证书状态。 OCSP 也是一个可以访问的 http 网站,如下图所示:
上面已经提到是供有关软件查询证书是否被吊销,还是让我们来看看浏览器是如何查询吊销列表的。 浏览器在使用 https:// 访问已经部署了 SSL 证书的网站时,一定会先检查此 SSL证书是否已经被吊销,也就是说会查询吊销列表或 OCSP 服务, 如果此证书已经被证书颁发机构吊销,则会显示警告信息: “此组织的证书已被吊销。安全证书问题可能显示试图欺骗您或截获您向服务器发送的数据。建议关闭此网页,并且不要继续浏览该网站。 ”
值得注意的是:目前有些 CA 颁发的证书和大部分自签SSL证书都没有提供吊销列表 (CRL) 服务或证书 吊销列表分发点是不可访问的 ,当然更别提 OCSP 服务,这是非常危险的,因为如果证书丢失或被盗而无法吊销的话,就极有可能被用于非法用途而让用户蒙受损失。
规范中的描述
本规范定义了用于检索两种形式的 CRL 的单个 DistributionPoint:
RFC 5280 [17] 中定义的标准 CRL 形式
4.6.1 节中定义的分段 CRL 形式,以适应 eUICC 的有限功能。 当标准表格编码大小超过第 4.6.1 节中定义的大小时,此表格应可用。 在这种形式下,CRL 被分成几个段,每个段独立签名
DistributionPoint 应仅设置“distributionPoint”字段。 未使用可选的“原因”字段; 每个被撤销的证书都应有其自己的原因集。 并且“cRLIssuer”字段未用作 CRL 应由证书颁发者颁发
“distributionPoint”字段可以包含几个通用名称,每个名称都描述了获取相同 CRL 的不同机制(本规范中未使用字段“nameRelativeToCRLIssuer”)。 但“distributionPoint”应至少包含一个具有 HTTP 方案的 URI 类型的通用名称,表明 CRL 可以作为 HTTP 资源检索。
CRL 应在 HTTP 响应主体中作为 DER 编码的 CertificateList 数据对象返回,而 DER 编码又是 Base64 编码。
在 HTTP 方案中,可以在单个 HTTP 请求中检索分段 CRL 表单的各个部分,方法是在 URL 字段后附加字段值对“?segmentedForm=true”(或“&segmentedForm=true”,当字段值 已存在于 URL 中)
当存在分段形式时(即当标准形式的编码大小超过 4.6.1 节中定义的大小限制时),HTTP 响应主体应包含数据对象 SegmentedCrlList(作为 DER 编码的 Base64 编码),每个条目 序列的一部分是完整 CRL 的一部分。 序列应排序,从段 1 开始。
当分段形式不存在时,HTTP 响应应包含数据对象 SegmentedCrlList(作为 DER 编码的 Base64 编码),其中单个条目是标准 CRL。
规范中的描述
cessationOfOperation ()
CRL 分发点扩展标识了如何获取 CRL 信息。 扩展应该是非关键的,但是这个配置文件建议 CA 和应用程序支持这个扩展。 CRL 管理的进一步讨论包含在第 5 节中。
cRLDistributionPoints 扩展是 DistributionPoint 的序列。 DistributionPoint 由三个字段组成,每个字段都是可选的:distributionPoint、reasons 和 cRLIssuer。 虽然这些字段中的每一个都是可选的,但 DistributionPoint 绝不能仅包含原因字段; distributionPoint 或 cRLIssuer 必须存在。 如果证书颁发者不是 CRL 颁发者,则 cRLIssuer 字段必须存在并且包含 CRL 颁发者的名称。 如果证书颁发者也是 CRL 颁发者,那么符合要求的 CA 必须省略 cRLIssuer 字段并且必须包括 distributionPoint 字段。
当存在 distributionPoint 字段时,它包含通用名称的 SEQUENCE 或单个值 nameRelativeToCRLIssuer。 如果 DistributionPointName 包含多个值,则每个名称都描述了获取相同 CRL 的不同机制。 例如,同一个 CRL 可用于通过 LDAP 和 HTTP 进行检索。
如果 distributionPoint 字段包含目录名称,则该目录名称的条目包含出于相关原因的当前 CRL,并且 CRL 由相关的 cRLIssuer 发布。 CRL 可以存储在 certificateRevocationList 或 authorityRevocationList 属性中。 CRL 将由应用程序从本地配置的任何目录服务器获取。 应用程序用于访问目录的协议(例如 DAP 或 LDAP)是本地事务。
如果 DistributionPointName 包含 URI 类型的通用名称,则必须假定以下语义:URI 是一个指向当前 CRL 的指针,用于相关原因并将由相关 cRLIssuer 发布。 当使用 HTTP 或 FTP URI 方案时,URI 必须指向 [RFC2585] 中指定的单个 DER 编码的 CRL。 通过 URI 访问的 HTTP 服务器实现应该在响应的内容类型头字段中指定媒体类型 application/pkix-crl。 当使用 LDAP URI 方案 [RFC4516] 时,URI 必须包含一个 <dn> 字段,其中包含持有 CRL 的条目的可分辨名称,必须包含一个 <attrdesc> ,其中包含对持有 CRL 的属性的适当属性描述 CRL [RFC4523],并且应该包括一个<host>(例如,<ldap://ldap.example.com/cn=example%20CA,dc=example,dc=com?certificateRevocationList;binary>)。 省略 <host>(例如,<ldap:///cn=CA,dc=example,dc=com?authorityRevocationList;binary>)具有依赖客户端可能必须联系适当服务器的任何先验知识的效果 . 如果存在,DistributionPointName 应该至少包含一个 LDAP 或 HTTP URI。
如果 DistributionPointName 包含单个值 nameRelativeToCRLIssuer,则该值提供一个专有名称片段。 该片段附加到 CRL 颁发者的 X.500 可分辨名称以获得分发点名称。 如果 DistributionPoint 中的 cRLIssuer 字段存在,则名称片段将附加到它包含的可分辨名称; 否则,名称片段将附加到证书颁发者的专有名称。 符合规范的 CA 不应该使用 nameRelativeToCRLIssuer 来指定分发点名称。 当 cRLIssuer 包含多个专有名称时,DistributionPointName 绝不能使用 nameRelativeToCRLIssuer 选项。
如果 DistributionPoint 省略了原因字段,则 CRL 必须包含所有原因的撤销信息。 此配置文件建议不要按原因代码对 CRL 进行分段。 当符合要求的 CA 在证书中包含 cRLDistributionPoints 扩展时,它必须至少包含一个 DistributionPoint 指向覆盖证书的 CRL。
cRLIssuer 标识签署和发布 CRL 的实体。 如果存在,则 cRLIssuer 必须仅包含来自 DistributionPoint 指向的 CRL 的发布者字段的可分辨名称(DN)。 cRLIssuer 字段中名称的编码必须与 CRL 的 issuer 字段中的编码完全相同。 如果包含 cRLIssuer 字段并且该字段中的 DN 不对应于 CRL 所在的 X.500 或 LDAP 目录条目,则符合要求的 CA 必须包含 distributionPoint 字段。
Basic Constraints
基本约束
eum证书为例,作用是
表明此证书是一个子 CA,仅限于为 eUICC 颁发“叶”证书
Name Constraints
名称限制
以eum证书为例:
此限制包含允许拥有此证书的 EUM 在 eUICC 证书中设置的组织名称和 IIN(见注释)。 此限制适用于主题名称(包含“organization”和“serialNumber”属性)。 <iin> 值由 EID 的第 1 到第 8 位数字组成。 扩展可以包含几个可能的“组织”/“IIN”值对。 字段“最小值”在本规范中没有意义
标准中对该扩展的描述:
4.2.1.10. Name Constraints
必须仅在 CA 证书中使用的名称约束扩展表示一个名称空间,证书路径中后续证书中的所有主题名称必须位于其中。 限制适用于主题专有名称并适用于主题备用名称。 仅当存在指定的名称形式时才适用限制。 如果证书中没有该类型的名称,则该证书是可接受的。
名称限制不适用于自行颁发的证书(除非该证书是路径中的最终证书)。 (这可以防止使用名称约束的 CA 使用自行颁发的证书来实现密钥滚动更新。)
限制是根据允许或排除的名称子树来定义的。 无论出现在 permittedSubtrees 中的信息如何,任何与 excludedSubtrees 字段中的限制相匹配的名称都是无效的。 符合规范的 CA 必须将此扩展标记为关键,并且不应对 x400Address、ediPartyName 或 registeredID 名称形式施加名称限制。 合格的 CA 不得颁发名称约束为空序列的证书。 也就是说,必须存在 permittedSubtrees 字段或 excludedSubtrees。
符合本概要的应用程序必须能够处理强加于 directoryName 名称形式的名称约束,并且应该能够处理强加于 rfc822Name、uniformResourceIdentifier、dNSName 和 iPAddress 名称形式的名称约束。 如果标记为关键的名称约束扩展对特定名称形式施加约束,并且该名称形式的实例出现在主题字段或后续证书的 subjectAltName 扩展中,则应用程序必须处理约束或拒绝证书 .
在此配置文件中,最小值和最大值字段不与任何名称形式一起使用,因此,最小值必须为零,并且最大值必须不存在。 然而,如果一个应用程序遇到一个关键名称约束扩展,它为出现在后续证书中的名称形式指定其他最小值或最大值,应用程序必须处理这些字段或拒绝该证书。