ICS 35.100.70 一一
L79 苟日
中华人民共和国国家标准
GB /T 19 77 1- 2 0 05
信 息技术安全技术公钥基础设施
PK I 组件 最 小 互操作规范
In for m ationt echnology-Securityt echnology-Publick eyi nfrastructure
一 M ini m um i nt eroperabilitys pecification forP KIc omponents
2005-05-25发布2005-12-01实施
丰督 锲 臀 策蟾臀袋臀臀暴发“
GB / T 19 77 1- 20 05
ml1 青
本 标 准 是在参考美国国家标准与技术研究院(NIST)提出的《公钥基础设施PKI组件最小互操作
规范》第二版内容的基础上修改而成,同时本标准还参照了包括证书管理策略(CMP )、证书请求消息格
式(CRMF),F IPS许可的密码算法和X9密码算法等相关的规范。
本 标 准 凡涉及密码算法相关内容,按国家有关法规实施。
本 标 准 中引用的SHA-1,RSA,SHA1-MAC,SHAI-HMAC ,DES-MAC,tDEA密码算法均为举例
性说明,具体使用时均须采用国家商用密码管理委员会批准的相应算法。
本 标 准 的附录A、附录B、附录C、附录D为规范性附录。
本 标 准 由中华人民共和国信息产业部提出。
本标 准 由 全国信息安全标准化技术委员会(TC260) 归口。
本 标 准 起草单位:信息安全国家重点实验室、中国电子技术标准化研究所。
本 标 准 主要起草人:冯登国、吴志刚、荆继武、高能、向继、张凯、周瑞辉、徐佳、林爆锵、曹政、
余蜻、廖洪蛮、李丹、罗锋盈、陈星。
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
引 言
数 字 签 名证书在政府服务商业和法律程序中代替手写签名,并且允许以前没有联系的双方可靠地
鉴别对方以进行商业事务。加密证书提供了加密传输和加密算法的应用,来建立或保护对称密钥以提
供机密性。这样的一个公钥基础设施(PKI )系统和它相应的证书,也许远远超出了一些应用的实际需
要,对那些特别的应用要求来说改进的证书和协议更合适。
GB / T 19 77 1- 20 05
信 息 技 术 安 全 技 术 公 钥 基 础设施
PK I组 件 最 小 互 操 作 规 范
1 范围
本 标 准 支持大规模公钥基础设施(PKI负责发布、撤销和管理用于数字签名及密钥管理的公钥证
书)的互操作性。本标准为不同的PKI开发者所开发的组件产品提供了基本的互操作性参考。
本 标 准 的内容涉及:
公 钥 证 书 的 产 生 、更新和撤销;
签 名 的 产 生 和 验 证 ;
证 书 和 证 书 认 证 路径验证。
本 标 准 主要包括了对证书、证书撤销列表(CRI.)扩展和一套事务的描述。这些事务包括证书申请、
证书更新、证书撤销以及从资料库检索证书和CRLa
本 标 准 主要以最终用户的角度来看待PKI的互操作性,即怎样申请和获得一个证书;怎样签署文
档;怎样检索他人的证书;怎样验证签名。就像下面所提及的,PKI的“内部”操作规范还没有达到足够
成熟,因此它们没有被详细规定。
在 本 标 准中PKI被分成五个组件:
颁 发和 撤 销 证 书 的 证书认证机构(CAs);
确保 公 钥 和 证 书 持 有者的身份以及别的属性之间绑定的注册机构(RAs);
获 得 证 书 和 签 署 文档的证书持有者;
验 证 签 名 并 且 执 行密钥管理协议以及验证证书认证路径的客户;
存 储 并 提 供 对 证 书和CRL查询的资料库。
许 多 实 体在功能上既是证书持有者又是客户。CAs和RAs也是如此。终端实体证书持有者通常
也是客户。当然,也有一些客户并不是证书持有者。
资 料 库 不必是证书持有者和客户。本标准仅仅涉及资料库协议的一部分,那就是客户要求从资料
库中获得证书和CRI.的信息。
本 标 准 将轻型目录访问协议(LDAP)版本2作为用户访问资料库的传输手段,因为它是被广泛接
受和采用的方法。例如,这种选择既不强调CA用来更新资料库的标准化协议,也不强调资料库之间互
相映射的协议,尽管它们都是需要的。前者可以具体情况具体分析以解决CA和资料库之间的协议,后
者也许并不必要。
在 通 常 的证书状态确认(本标准遵循的)中,资料库不是可信实体,CA对CRL的签名更可靠。在
线证书状态实时确认机制要求资料库是可信实体,而且它们也能让客户相信他们的身份。这样的证书
状态确认协议超出了本标准的范围,但是在一些应用中可能需要实时证书状态确认,所以在以后的修订
版中可能会解决这个问题。
本 标 准 中没有提供让资料库验证使用者的协议,该协议是资料库记费应用的前提。虽然这可能是
资料库重要的商用模式,但目前人们对该模式的看法还没有达到一致,也没有统一的支撑协议。在以后
的修订版中可能会解决这个问题。
在 一 些 情况下,带外事务也是本标准中事务的一部分。带外事务的形式和内容超出了本标准的
范围。
本 标 准 假定CA,RA和证书持有者是物理_L分离的。如果这些实体在物理上是在一起的话,那么
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
对特定接口的支持是不需要的。具体地说,如果一个PKI组件既包含RA又包含CA的功能,那么就不
必支持这两者之间的事务消息格式。然而,如果一个系统包括一个CA,该CA除了具有本地RA功能
以外还支持远程RA,那么它就必须支持和远程RA之间的事务。在以下的论述中,我们假设CA和
RA是单独的PKI组件。
本 标 准 把CA和RA当作PKI系统的功能实体。这些实体的内部设计超出了本标准的范围。
本 标 准 假设,从最小范围来讲,证书持有者有一个签名密钥和证书。可选的,证书持有者还可以获
得一个加密密钥和证书。一旦证书持有者希望请求或者撤销加密证书,它就需要用签名密钥来向CA
证明自己。
对 那 些 没有签名密钥对、不需要不可否认性服务的系统,本标准不予直接支持。当然,这些实体主
要是这样一些计算机系统(例如,路由器或是链路加密机),它们由管理员来维护。如果管理员有系统管
理的签名密钥对,本标准的事务集合也可用来支持这些实体的证书请求和撤销。
本 标 准 选定了一个成熟重要的数字签名算法,新的标准算法很容易加人进来。
本 标 准 支持层状和网状信任模型。在层次模型中,CA通过认证一个次级CA来提供可信性。信
任授权从根CA开始,该CA被所有节点信任。在网状模型中,信任是建立在两个同等关系的CA中的
(即交叉认证),因此两个CA之间可以有多个信任路径。最小互操作规范假设GB/T 16264. 8-2005
证书的扩展basicConstraints, nameConstraints, keyUsage和certificatePolicy都会包含在证书中,以
便对信任关系进行明确管理。
本标 准 假设无需确认就可以从资料库中检索证书和CRI,。客户可以从适当的资料库中获得证书
和CRL来进行路径验证。资料库可以是X. 500目录或者使用通用资源标识符(URI)可访问的目录。
希望资料库能够支持LDAP(即RFC 1777),因此相应的产品也要求支持这个协议。
资料 库 不必连接在一起,别的协议也可以用来获得证书和CRI,。本标准要求明确所使用的证书资
料库和检索证书以及CRI,的机制。
CR L 是 一个广泛使用的机制,它用于撤销证书和验证未到期证书的状态。CRL的使用可能还没有
统一。一些CA选择在线实时确认证书状态的机制,CRI,的产生对于别的CA的使用者来说应该具有
互操作性。除了当前检查证书的有效性,CRI,还提供了一个重要的机制,即将证书以前的撤销状态存
档。如果一个带日期签名的签名日期在证书的有效期内,那么该签名是合法的,当前的CRI,不会显示
证书被撤销的信息。
在本 标 准 中,假设CA可以产生CRI.,客户在验证证书时可以使用CRL.
2 规范性引用文件
下 列 文 件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有
的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究
是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。
GB /T 16264.8 -2005 信息技术开放系统互连目录第8部分:公钥和属性证书框架((IS()/
IEC 9594-8:2001,IDT)
ISO / IE C 8825-1:2002 信息技术ASN.1 编码规则第1部分:基本编码规则(BER) 、正则编码
规则(CER)和非典型编码规则(DER)规范
AN S IX 9.52 用于金融服务业的公钥密码算法:三重DES操作模式
AN S IX 9.55 用于金融服务业的公钥密码算法:公钥证书扩展和证书撤销列表扩展
RF C 8 2 2 Internet文本邮件的标准消息格式
RF C 17 66 语言标识用标签
RF C 17 77 轻量级目录访问协议
RF C 19 59 LDAPURI,格式
GB /T 1 97 71 - 20 05
RF C 21 04 用于消息认证的带密钥散列函数
RF C 22 02 HMAC-MD5和HMAC-SHA-1测试用例
RF C 23 13 PKCS# 1 RSA加密版本1.5
RF C 23 14 PKCS# 10 认证请求语法版本1.5
RF C 24 59 因特网X.50 9公开密钥基础设施证书和证书撤销列表框架
RF C 25 10 因特网X.5 09公开密钥基础设施证书管理协议
RF C 25 11 因特网X.5 09公开密钥基础设施证书消息格式
RF C 25 59 因特网X.5 09公开密钥基础设施操作协议一轻量目录访问协议版本2
RF C 29 85 PKCS# 9 可选的对象类和参数类型版本2.0
FIP S -11 3:1985 计算机数据加密鉴别
PK C S# n 密码令牌接口标准版本2.0
3 术语和定义
下 列 术 语和定义适用于本标准。
3.1
抽 象语 法 记法一(ASN.1 ) AbstractS yntaxN otation1 (ASN.1 )
用 来 组 织复杂数据对象的表示法。
3.2
许 可 accredit
认 可 一 个实体或个人去执行特定动作。
3.3
公钥 证 书 publick eyc ertificate
用 户 的 公钥连同其他信息,并由发布该证书的证书认证机构的私钥进行加密使其不可伪造。
3.4
证 书 持 有者certificateh older
有 效 证 书的主体对应的实体。
3.5
证书 策 略 certificatep olicy
命 名 的 一组规则,指出证书对具有公共安全要求的特定团体和/或应用的适用范围。例如,一个特
定的证书策略表明,用于确认电子数据交换贸易证书的适用范围是价格在某一预定范围内的交易。
3.6
证 书 用 户certificateu ser
需 要 确 切地知道另一实体的公开密钥的某一实体。
3.7
证书 使 用 系统certificate-usings ystem
证 书 用 户使用的、本标准定义的那些功能实现。
3.8
证书 认 证 机构(CA) CertificateA uthority(CA)
负 责 创 建和分配证书,受用户信任的权威机构。用户可以选择该机构为其创建密钥。
3.9
证书 认 证 路径certificationp ath
一 个 D IT中对象证书的有序序列,通过处理该有序序列及其起始对象的公钥可以获得该路径的末
端对象的公钥。
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
3.10
认 证 业 务说明(CPS) CertificationP racticeS tatement(CPS)
证 书 认 证机构发放证书时遵循的业务说明。
3.11
CR L 分 布点CRL distributionp oint
一 个 CR 工团目录项或其他CRI.分发源;由CRI,分布点分发的CRL可以包括仅对某CA所发证书
全集某个子集的撤销条目,或者可以包括有多个CA的撤销条目。
3. 12
证书 撤 销 列表(CRL) CertificateR evocationL ist(CRL)
一 个 已 标识的列表,它指定了一套证书发布者认为无效的证书。除了普通CRI,外,还定义了一些
特殊的CRL类型用于覆盖特殊领域的CRI.
3.13
发 证 certify
颁 发 一 个证书的行为。
3.14
客户 c lient
使 用 PK I来获得证书并且去验证证书和签名的功能。
3. 15
增 量 CR L delta-CRL
部 分 撤 销列表,在可参考的基础CRI,发布以后,这些证书更改了其撤销状态。
3.16
可辨 别 编 码规则(DER) DistinguishedE ncodingR ules(DER)
对 A SN .1 对象进行编码的规则。
注 :本 标 准中使用DER对ASN.1 对象进行编码
3.17
数字 签 名 digitalsi gnature
允 许 接 收者验证签名人的身份和数据完整性的数据单元。
3.18
目录 服 务 (DS) DirectoryS ervice(DS)
分 布 在 网络中的各种节点或服务器提供的分布式数据库服务。
3.19
终端 实 体 ende ntity
不 以 签 署证书为目的而使用其私钥的证书主体或者是依赖(证书)方。
3.20
散列 函 数 ,哈希函数hashf unction
将 值 从 一个大的(可能很大)定义域映射到一个较小值域的(数学)函数。“好的”散列函数是把该函
数应用到大的定义域中的若干值的(大)集合的结果可以均匀地(和随机地)被分布在该范围上。
3.21
散列 码 hashc ode
散 列 函 数的输出比特串。
3.22
消 息 认 证码(MAC) M essageA uthenticationC ode(MAC)
通 过 密 码技术由消息产生的认证数据。
GB / T 19 77 1- 20 05
3.23
消息 摘 要 messaged igest
散 列 一 个消息后得到的固定长度数据。
3.24
带外 事 务 outo fb and
不 是 通 过电子形式,而是通过通常的物理形式进行的一些PKI组件的事务。
3.25
策略 映 射 policym apping
当某 个 域中的一个CA认证另一个域中的一个CA时,在第二个域中的特定证书策略可能被第一
个域中的证书认证机构认为等价(但不必在各方面均相同)于第一个域中认可的特定证书策略。
3.26
注 册 机 构(RA) RegistrationA uthority(RA)
为 用 户 办理证书申请、身份审核、证书下载、证书更新、证书注销以及密钥恢复等实际业务的办事机
构或业务受理点。
3.27
资料 库 repository
存 储 证 书和CRL等信息,并提供无需验证的信息检索服务的数据库。
3.28
自颁 发 证 书self-issuedc ertificate
证 书 的 主体和颁发者相同的CA证书。
3.29
统 一 资 源标识符(URI) Uniform ResourceI dentifier(URI)
包 含 了 名字或地址的短数据串,指向web上的某个对象。
3.30
统一 资 源 定位符(URL) Uniform ResourceL ocator(URL)
包 含 地 址的短数据串,指向web上的某个对象,URI是URI的子集。
4 缩略语
下 列 缩 略语适用于本标准。
CA 证 书认证机构
CR I, 证书撤销列表
PK CS 公钥密码系统
PK I 公 钥基础设施
PO P 拥有证明
RA 注 册机构
5 PK I组件规范
5.1 概述
本 章 规 定了PKI各组件进行互操作时所需的功能和事务的最小集合。它们分别是CA,R A、证书
持有者和PKI客户的规范。
5.2 证书认证机构(CA)
5.2.1 概述
CA 负 责 生成、撤销、公布和存档证书。资料库使得所有证书使用者都可以获得证书和CRI_s的
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
信息。
CA 生 成 自己的公私钥对并公布自己的证书。因此,CA应当生成、估定相应的参数以便生成/验证
它们的签名。为了使新的CA能加人到已有的层次结构中,它们应当可以从父CA那里申请证书。CA
也应可以生成交叉证书,在其他CA的策略允许下支持与其他CA进行交叉认证。CA对所有的事务进
行存档,这些事务包括PKI各组件之间的服务请求与响应。
CA 授 权 RA去确认那些申请证书的使用者的身份或其他的特征属性。这种授权通过离线接受来
自某个RA的证书请求完成。CA利用X. 500的可辨别名(DN)来唯一标识证书持有者。
CA 本 身 也具备证书持有者的功能:请求、撤销、更新由其他CA颁发的证书(5.4);检索证书和
CRLs,验证证书认证路径的客户功能(5.5)0
5.2.2 与互操作性有关的CA功能要求
CA 执 行 下列功能:
颁 发 并 传 送 证 书 给终端实体和其他的CA;
接 收 来 自 R A 的 证书撤销请求;
将 证 书 和 C RL 存 人资料库;
请 求 C A 证 书 。
a) 颁 发数字签名证书
CA 支 持 三 种 有 关 数字签名证书的证书请求:RA发起的注册请求、更新和自我注册请求。根
据 每 种 请 求 的 不 同,CA以不同的方式来鉴别这些申请证书主体的身份。潜在的证书持有者
在 自 我 注 册 请 求 中提供一个证据证明自己的身份已经得到了RA的核实,该证据是由从RA
那 里 获 得 的 秘 密 信息导出的。当用户与RA物理上在一起时,RA产生并签署基于RA的登
记 请 求 来 保 证 该 用户的身份。在证书更新请求中,当前有效证书的主体可以用它们的私钥签
名来 保 证 它 们 身 份 的真实性。
RA 发 起 的 证 书 请 求:RA保证该用户的身份并将其和公钥绑定在一起。当CA接收到来自授
权 RA 的 证 书 请 求 时,CA就处理该请求,如果接受,就生成新证书,并将其放到资料库中,然
后 将 证 书 发 给 相 应的RA,C A也可以直接把新证书发给该证书的持有者。如果基于RA的
证 书 请 求 不 是 来 自一个授权的RA,即签名无效,或者包含不匹配信息,CA将会拒绝该证书请
求 。 如 果 C A 拒 绝了该证书请求,它将会向RA报告失败并说明原因。
在 自 我 注 册 证 书 请求中,RA为潜在证书持有者提供了一个秘密信息。请求实体产生自己的
公 私 钥 对 ,组 成 一 个证书请求消息,并用相应的私钥签名,被签名部分包括基于RA提供的秘
密 导 出 的 认 证 信 息。CA接收来自实体的证书请求,通过认证信息验证请求者的身份并且验
证 实 体 拥 有 相 应 的私钥。如果接受,CA就产生新证书,并将其放到资料库中,然后将证书发
给 证 书 持 有 者 。 如果认证信息验证不通过,签名无效,或者包含不匹配信息,CA将会拒绝该
证 书 请 求 。 如 果 CA拒绝了自我注册证书请求,它将会向申请者报告失败并说明原因。
证 书 更 新 请 求 :申 请者已确定的身份通过该更新请求消息来验证。证书持有者产生更新请求
并直 接 发 给 C A , C A处理证书更新请求,如果正确的话,就把新证书发给证书持有者,并将其
放 入 资 料 库 。 如 果签名是无效的,或者请求实体当前是非法的,或者CA认证业务说明或证书
策 略 不 允 许 更 新 请求,CA将会拒绝该证书更新请求。如果CA拒绝了更新请求,它将会向请
求 实 体 报 告 失 败 并说明原因。
b) 颁 发加密证书
CA 可 以 支 持 某 个 请求者发出的加密证书的证书请求,该请求者拥有该CA颁发的有效签名
证 书 。 请 求 者 的 身份由对请求的数字签名来验证。本标准中规定请求者的密钥对由第三方
集 中 产 生 并 通 过 带外方式提供给CA}
在 集 中 密 钥 管 理 证书请求中,证书持有者生成一个证书请求,说明自己想要的加密算法,并用
GB / T 19 77 1- 20 05
当前 得 到 该 C A 认可的签名密钥来对该请求签名。CA响应该请求,发还一个证书和加密
私 钥 。
c) 交 叉认证
在 一 定 的 约 束 条 件下CA可向别的CA颁发证书。交叉认证的决定是在带外做出的,并且要
通 过 认 证 业 务 说 明和证书策略检查。每个CA都会对它们的使用者的路径验证做出适当的约
束 。在 获 得 别 的 C A的公钥后,该CA生成证书并将其存放到资料库中。
可 选 的 ,交 叉 认 证 的CA之间可以交换证书,构造证书对并把它们放人资料库。
d) 撤 销证书
CA 产 生 和 发 布 证 书撤销列表(CRLs)o C RL中包括所有被撤销但没有到期的证书。可选的,
CA 也 可 以 颁 发 间 接的和增量CRL。被颁发CRL的形式由CA的认证业务说明决定。
在 C A 为 所 有 的 撤销证书仅颁布唯一的CRI,的情况下:
1) 新 的 C R I, 产 生时,老CRI,中的全部信息将放到它的里面,那些新被撤销的证书将被加人
到 新 的 C RI ,。 老 C R L 中 带certificateHold原因代码的证书也将被放人新的CRL,继续保
持 同 样 的 原 因 代 码 ,变 成 一 个不同的原因代码,或是被新CRL忽略。如果被忽略就表明
CA 将 保 证 证 书 主 体 和 公 钥 之间的绑定。那种决定撤销但还没有被撤销的证书将放人新
的 CR I, ,既 使 在 新 CR I, 发 布之前它已经到期了。
2) 在 这 种情 况下 , CA只撤销它们自己颁发的证书。(撤销可能来自一个签名请求,或是CA
自己 决 定 撤 销 。 本 标 准 中 不考虑CA自己撤销证书的情况)撤销请求的签署者或者是证书
持 有 者 ,或 者 是 代 表 证 书 持 有者或证书持有者组织的权威实体(比如被授权的RA),在把
证 书 放 人 C RI ,之 前 , CA 要确认验证撤销请求。撤销请求的合法性包括请求签名的合法
性 。 对 R A 签 名 的 撤 销 请 求进行带外验证,根据证书策略是可选的。
CA 发 布 X. 5 0 9 版本2的CRI,(版本2的CRL对应版本3的证书)。字段和扩展,以及赋给它
们 的 值 ,要 与 6 .3 .2 一致。产生和签署了CRI,之后,CA要把它放到资料库中去。
e) 颁 发证书、交叉证书和CRI
CA 应 当 能 够 颁 发 证书,交叉证书对和CRI,以供PKIc lient检索。CA也应能颁发CA证书、
交 叉 证 书 对 、C R I,和终端实体的加密证书。终端实体数字签名证书的颁发是可选的。用于更
新 目 录 的 机 制 超 出本标准范围。
f) 请 求CA证书
CA 应 能 向 层 次 更 高的CA申请证书,以支持PKI的层次信任模型。这个请求可以参考6.6 .2
中的 描 述 。 这 个 证 书请求将通过6.2.3.4中描述的basicConstraints扩展来把该请求CA确
定 为 一 个 实 体 。
5.2.3 电子事务集合
提 供 证 书管理服务所需的电子事务如下:
处 理 终 端 实 体 的 证书请求和证书撤销请求;
将 证 书 和 C RI .放 人资料库;
为 了 验 证 签 名 的 有效性从资料库中检索证书和CRI.
CA 处 理 在CertReq消息中的RA发起的注册请求。CertReq消息由RA在PKIProtection结构里
签名。通过签署请求消息,RA保证证书持有者的身份并且确认它拥有相应私钥。CA以CertRep消息
回复RA或者证书持有者。如果接受请求,CertRep中包含新的证书。如果拒绝请求,报文中包含错误
代码。(见6. 6. 2 )
CA 支 持 自我注册证书请求,此时请求实体还不是证书持有者。CA要求请求实体利用带外方式从
RA获得的秘密产生认证信息。这一认证信息代替RA的签名保证请求者的身份是经过RA核实的。
以带外方式从RA获得的秘密可以用来产生mac或者带密钥的散列函数的对称密钥。请求实体产生
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
CertReq消息并且用相应的私钥签名。这一消息利用从RA获得的秘密加以保护。之后,CA产生CertRep
消息,如果请求消息正确,则CertRep中包含新的证书。如果拒绝请求,报文中包含错误代码。
(见6. 6. 3和6.6.4)
CA 处 理 以CertReq消息形式出现的证书更新请求。这种消息被请求实体发到CA。这个消息包
括证书持有者的标识名,当前证书的序列号,新的公钥以及拥有相应私钥的证明。消息可以包括预定的
有效期和建议的密钥id。这个消息可用证书持有者的有效证书(未过期,未被撤销)私钥签署。CA用
CertRep消息回复申请者。这个消息包含一个新证书或者错误代码。如果颁发新证书的话,证书中将
包含证书持有者的标识名和新的公钥。CA可以自由修改请求中的合法期限。如果申请消息中没有密
钥标识符,CA将产生一个(见6.6.5)0
CA 应 该 接收从RA发来的RevReq消息。RevReq消息应该包括证书序列号或证书持有者的标识
名。CA用RevRep消息回应。这个消息应该包括状态和失败信息,也可以包括撤销证书的附加细节。
CA 支 持 由第三方集中产生密钥对(并通过带外方式提供给CA)的加密证书请求。支持对第兰方
集中产生的密钥对颁发加密证书的CA要处理CertReq消息形式的请求。这些消息由请求证书的终端
实体发送给CA。这些消息应当包括证书持有者的可辨别名,当前证书的序列号。可选的,该消息可包
括一个有效期。该消息用证书持有者的未过期,未被撤销的签名证书的相应私钥签名。之后CA以
CertRep消息的形式响应请求者。该消息包括新证书和加密私钥,或是错误代码。如果颁发证书的话,
该证书就包括证书持有者的可辨别名和新的公钥。CA可以随意修改请求中希望的有效期。
CA 应 该 把CA证书、交叉证书对、CRL以及它颁发的终端实体的加密证书放入资料库。
5.3 注册机构(RA)
5.3.1 概述
RA 保 证 请求证书的实体的身份。RA可以通过要求实体用物理令牌来和RA进行物理上的接触
或通过带外机制来验证身份。当实体物理上接触RA时,RA也要通过验证一个被签名的消息来验证
它们拥有与公钥相应的私钥材料(见6.6.2)0
RA 应 该 验证实体拥有一个完整的密钥对。在密钥对和实体身份被验证之后,RA签署并发送一个
电子证书请求给相应的CA a
没 有 与 RA进行过物理接触的证书请求者,在进行证书请求时,必须具有RA提供给他的认证信
息。这一信息用于实体在自我注册请求中向CA证明自己的身份。本标准不对实现自我注册请求的带
外事务的格式和内容进行规定。
RA 可 以 对CA授权它们管理的实体证书请求证书撤销。RevReq的格式在6.6 .7 中定义。RA功
能可以与CA在一起也可以在一个不同的设施中执行。
RA 本 身 既包括证书持有者的功能— 请求、撤销和更新由CA颁发的证书(它得是该证书的主
体)(见5.4),又包括客户的功能— 检索证书和CRI.以及验证证书认证路径(见5.5)0
5.3.2 与互操作性有关的RA功能要求
RA 应 该 执行下列功能:
接 受 和 验 证 证 书 请求;
向 CA 发 送 证 书 请 求;
从 资 料 库 检 索 证 书和CRL;
产 生 证 书 撤 销 请 求。
RA 应 该 能够连同CA的证书一起把新签署的证书发给证书持有者。
RA 应 该 可以代表不再拥有它们的私钥并且怀疑该私钥己泄露的证书持有者产生并签署证书撤销
请求(丢失而并不认为已泄露的签名密钥不是必须被撤销;这由策略决定。注意丢失的保密性的密钥无
论如何都必须被撤销,否则发送方就会加密和传输接受方无法解秘的消息)。如果CA的认证业务说明
允许,RA也应该可以代表证书持有者的组织产生并签署证书撤销请求。撤销请求由后来把它们发送
GB / T 19 77 1 - 20 05
给颁发证书的CA的RA所签署。
5.3.3 事务集合
RA 所 用 电子事务能够实现终端实体证书的请求、发送和撤销,以及为了验证签名而从资料库中检
索证书和CRI.。下面将给出这些事务的一个概括;它们将在6. 6中具体地描述。
RA 接 收 来自潜在证书持有者的CertReq格式的证书请求。CertReq消息被潜在证书持有者在
PKIProtection结构中所签署。在审查了请求者的凭证并确认该潜在证书持有者拥有相应的私钥之后,
RA抽取公钥信息并且用RA的名字和签名建立一个新的CertReq消息。RA把该消息发送给CA.
RA应该可以向证书持有者提供该CA的证书。
RA 可 以 从CA接收CertRep消息。如果证书请求被拒绝,RA将审查从CA发来的错误代码并可
能会发送一个新的请求。如果一个证书请求被接受了,RA可以向证书持有者提供新的证书。
RA 应 该 在不再拥有它们自己私钥的证书持有者或证书持有者所在组织的要求下,产生撤销请求。
通过签署这个请求,RA保证请求者的身份。RA应该可以产生RevReq消息,包括证书序列号或证书
持有者的可辨别名。这个RevReq消息应该被一个RA所签署。CA应该用RevRep消息回应RAo
这 个 消 息应该包括状态和失败信息,并且可以包括关于被撤销证书的附加细节。如果证书被撤销
了,RA应该提供这个信息给请求者。如果请求被拒绝了,RA将审查错误代码并且可能再产生该请求。
5.4 证书持有者规范
5.4.1 概述
PK I 为 证书持有者提供证书管理功能。证书持有者包括CAs,RAs和其他的终端实体。终端实体
可能是个人用户和计算机系统(例如路由器和防火墙),也可能是应用程序(CAs和RAs除外)。
PK I 证 书持有者生成签名并且支持PKI事务来获取、更新和撤销他们的证书。
5.4.2 与互操作性相关的PKI证书持有者功能要求
证 书 持 有者的功能:
生 成 签 名 ;
生 成 证 书 请 求 ;
请 求 证 书 撤 销 ;
请 求 证 书 更 新 (可 选项)。
证 书 持 有者同时也是客户,因此它也具备5.5 中定义的客户功能。
5.4.3 证书持有者事务集合
证 书 持 有者的事务能使证书持有者请求新的证书,以及撤销当前持有的证书。所有的证书持有者
事务都由发放证书的CA及其CA授权的RA执行。
证 书 持 有者应该能够请求撤销他们自己的证书。这个事务由CA执行,允许证书持有者签署他们
的证书撤销请求。证书持有者为每个他们希望撤销的证书产生一个RevReq消息并发送给CAo
RevReq消息要包括撤销原因。CA产生RevRep消息并返还给证书持有者。这个事务过程在6.6.7中
有详细描述。
可 选 的 ,证书持有者能够实现证书更新请求。这个事务由CA执行,允许证书持有者签署自己的证
书请求(不需要RA验证其身份)。CA可以支持该项事务,但是它的具体使用由认证业务说明决定。
在不与RA交互的情况下请求一个新的证书,证书持有者产生一个CertReq消息,并且使用新的和当前
的私钥进行签名。CA产生CertRep消息,如果请求成功,就包含一个新的证书。如果请求被拒绝,就
包含错误代码。
证 书 持 有者能够实现自我注册的证书请求。
证 书 持 有者也可以实现加密证书请求。在此事务中,证书持有者产生一个证书请求,说明希望的密
钥管理算法,并用一个有效的签名密钥对该请求签名。CA响应一个证书和加了密的私钥或是错误
代码。
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
5.5 客户规范
5.5.1 客户概述
PK I 客 户使用PKI来为证书持有者和证书使用者,包括CA和其他的终端实体提供证书处理功
能。终端实体也可以包括RA,个人用户和计算机系统(如路由器和防火墙)。
在 最 小 意义上,PKI客户验证签名,获得证书和CRLs,并验证证书认证路径。同时具有证书持有
者身份的客户也能产生签名,也可以支持撤销或更新证书的PKI事务。
5.5.2 与互操作性相关的PKI客户功能要求
客 户 的 最小功能集合:
验 证 签 名 ;
从 查 询 服 务 器 中 检索证书和CRLs;
验 证 证 书 认 证 路 径。
5.5 .3 PKI客户事务集合
客 户 事 务使客户能从资料库中获得证书和CRI,s。所有的事务都与证书资料库有关。所有的客户
必须支持以下事务:
检 索 证 书 — 这 个事务允许一个用户利用LDAP绑定目录服务或指定资料库,并根据主体名
或 证 书 序 列 号 和 颁发者的名字检索证书;
检索 CR I.— 这 个 事务允许一个用户利用LDAP绑定目录服务或指定资料库,来检索一个特
定 CA 的 当 前 C RL或是某个特定的CRL。所有的客户都必须支持轻型目录访问协议
M DA P ), 以 检 索 证书和CRLs。事务的详细规定参见RFC17770
6 数据格式
6.1 数据格式概述
必 须 为 PKI组件之间的互操作定义基本的数据格式。数据格式包括证书、CRL和事务格式。本标
准包括了PKI组件之间、PKI client和PKI组件之间所有事务的数据格式。
6.2 证书格式
本标 准 使 用GB/T 16264.8- 2005的证书格式。虽然ITU-T建议的X.50 9的修订版没有公布,但
版本3的格式已经被广泛采用,并且ANSI的X9. 55和IETF的RFC 2459都对其作了详细说明。
GB/T 16264.8- 2005的证书包括以下内容:
Ve rs ion 版 本 ;
Se ria lN u mb er 证书序列号;
Iss ue rS ign at ur eA lgorithm 颁发者签名算法;
Iss uer D ist ing uis he dN ame 颁发者可辨别名;
Va lid ity P eri od 证 书有效时间;
Sub je ctD is tin gu ish edN ame 主体可辨别名;
Sub je ctP ub lic K ey I nformation 主体公钥信息;
Iss ue rU ni qu eI de ntifier 颁发者唯一标识符(可选,本标准不使用);
Su bje ct U n iq ue I d entifie: 主体唯一标识符(可选,本标准不使用);
Ex te ns ion s 证 书 扩展(可选);
Iss ue rs S ig na tu re o na llth ea bovef ields 颁发者对以上所有域的签名。
6.2. 1 证书字段
X. 50 9 证书语法的ASN.1 定义见附录A。出于签名考虑,证书用ASN.1 D ER编码表示。ASN.1
DER是一个为每个元素赋予标签、长度和值的编码系统。详见ISO/IEC 8825.1-2002.
以 下 介 绍GB/T 16264.8 ---2005的证书。除了可选的subjectUniqueID和issuerUniquelD字段,
GB / T 19 77 1 - 20 05
CA应该产生下面这些字段,而且客户根据GB/T 16264. 8-2005可以处理它们。CA可以不颁发包括
issuerUniqueID和subjectUniquelD的证书。客户也可以不处理subjectUniqueID和issuerUniqueID o
他们可以拒绝那些含有这两部分字段的证书。
a) V ersion
ver si on 字 段 表 示 证书的版本号。该字段的值应为2,以表示版本3证书。
b) S er ia lN umber
ser ia lN um b er 是 CA给每个证书分配的一个整数。对一个给定的CA,它提供的证书序列号
应 该 是 唯 一 的 (即 ,颁发者和证书序列号唯一标识一个证书)。
c) Si gnature
sig na tur e字 段 包 含 了一个算法标识符,用于表示签署证书的算法。此字段包括一个algorithmI
de nt ifi er ,用 于 传递参数。在6.2 .2 .2 中列出了algorithmIdentifier的内容。证书不应该使
用 sig na tu re 字 段 去传递参数(看下面的SubjectP ublicK eyI nformation),因为该字段没有被
颁 发 者 的 签 名 保 护。
d) Iss uerN ame
iss ue rN a me 字 段 提供了签署证书机构的全球唯一标识符。颁发者的名字是一个X.5 00标识
名 。 该 标 识 名 由 属性类型和属性值组成。通常属性类型由X.5 00系列建议定义,属性值为
Dir ec tor yS tr ing 类 型。
Di rec to ry St rin g 可选择PrintableString, Teletex5tring, BMPString, UniversalString和
Ut f8S tr ing 中 的 一 种。PrintableString是一个基本拉丁字符集,可使用大小写字母,数字和少
量特 殊 字 符 。 T el etexString是PrintableString的扩展集,在拉丁字符中加人了重音符和日本
字符 。B M PS tr ing 是双字节字符集,它满足绝大多数的欧洲字符集。UniversalString是多字
节 字符 集 , 包 括 了所 有的主要字符集。Utf8String是UniversalString的替代编码。
当创 建 新 名 字 时 ,CA要从PrintableString,B MPString,和Utf8String里选择最严格的类型
来创 建 Dir ec tor yS tring。也就是说,仅需基本拉丁字符的AttributeValue一般就使用Printab
leS tr ing 。 包 含 重音符拉丁字符的AttributeValue就使用BMPString。当BMPString字符
集不 够 用 时 才 使 用 Utf8String,
仍然 保 留 Te let ex String,和UniversalString是为了向后兼容性的需要,不应该在新主体的证
书 中使 用 它 们 。 但 是,此种类型可能会在已经颁发的证书中使用。Clients可能会收到使用这
些 类 型 的 证 书 。
可 选 的 名 字 可 放 在issuerAltName扩展字段,一些GB/T 16264.8 -2005证书的使用者希望
iss ue r字 段 为 空 。然而,遵从本标准的证书中的这个字段都含有X.5 00的可辨别名。
e) Va lidity
val idi ty 字 段 说 明 了证书开始生效的日期(notBefore)和变成无效的日期(notAfter)o v alidity
字 段 的 时 间 表 示 形式用UTCTime或GeneralizedTimeo
对 于 19 50 年 到 2049年(含)的日期,validity字段一般使用UTCTTimeo UTCTTime使用
格 林 威 治 时 间 ,而 且要精确到秒。秒要清楚表示,即使为零。UCTCTime的格式为YYMMDD
H H M M S SZ ,
年 字 段 做 如 下 规 定:
1) 如 果 Y Y 等 于或大于50,年代为19YY;
2) 如 果 Y Y 小 于50,年代为20YYo
对 于 20 50 年 以 后 的日期,validity字段一般用GeneralizedTimeo GeneralizedTime使用格林
威 治 时 间 ,而 且 要 精确到秒。秒要清楚表示,即使为零。GeneralizedTime的格式为YYMMDDH
H M MS SZ . G eneralizedTime不能包括分秒。(1950年前的日期对本标准来说无效,所以
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
不 予 考 虑 。)
f) S u bjectN ame
su bje ct N am e 字 段的目的是给证书主体提供唯一的标识符。主体名使用X.5 00可辨别名。像
在 is sue r n a m e中 描述的一样,在构建DirectoryString时CA使用最严格的选择。可替代的名
字可 放 在 s ub je ctA ltName扩展中,GB/T 16264.8- 2005证书的使用者希望本字段为空。然
而 ,遵 从 本 标 准 的 证书都在这个字段里带有主体的X.5 00可辨别名。
g) S ub jectP ublicK eyI nformation
Su bje ctP u bli cK ey Info字段是用来携带公钥和公钥使用的算法的。它包括subjectPublicKey
字段 和 a lg ori thm 1d entifie:字段,algorithmIdentifier字段有algorithm andp arameters次级
字 段 。
h) Un iqueI dentifiers
证书 里 的 s ub ie ctU niqueIdentifie:和issuerUniqueIdentifier字段是用来处理主体名和颁发者
名 被 过 时 重 用 的 可能性。CA不会颁发含有这些唯一标识符的证书。PKI客户也不会被要求
去 处 理 含 有 这 些 标识符的证书。当然,如果它们不处理这些字段,他们会拒绝包含这些字段
的 证 书 。
i) E x tesion
ex ten si on 字 段 的 增加是GB/T 16264.8 -2005证书最主要的改变。扩展有三部分:extnId,标
识 该 扩 展 ,c rit ica l,说明该扩展是critical或noncritical的,extnValue,扩展值。一个证书可以
包 括 任 意 多 个 扩 展字段,其中也包括局部定义的扩展。如果设置了critical标志,就要求客户
或 者 能 够 处 理 该 扩展字段,或者不能验证该证书。
在 GB /T 1 62 64 .8 - 2005中有完整的扩展标准。6.2 .3 详述了这些标准扩展在本标准中的
使 用 。
j) I ssu er'sS ignature
实 际 的 证 书 签 名 使用SIGNED参数类型,扩展为被签名的数据的SEQUENCE(例如,证书),
算法 标 识 符 , 以 及 一个BIT STRING形式的实际签名。algorithmIdentifier标识了用来对证书
签名 的 算 法 。 尽 管 这个algorithmIdentifier字段包括了一个parameters字段,在理论上可以用
来传 递 签 名 算 法 的 参数(见6.2. 2. 3 ) ,但它本身并不是一个被签名的对象。parameters字段不
能 用 来 传 递 参 数 。当需要获得验证签名的参数时,应当从颁发证书的CA的证书的subject-
Pu blic Ke yI nfo 字 段 中获得相应参数。
6.2.2 加密算法
6.2.2. 1 加密算法概述
本 标 准 使用四类算法:散列函数、数字签名算法、消息认证算法和对称加密算法。当描述数字签名
算法时,通常与散列函数一起介绍。当描述证书中的公钥时,散列函数被忽略。这就允许当散列函数被
另一个更强的算法替换时,证书也能使用。
要 求 一 个PKI组件至少应该实现其中一个数字签名算法。对于简单的PKI客户组件来说,能验证
由其中一个算法生成的签名已经足够了;要求其他的组件能够产生和验证由其中一个算法生成的签名。
遵守本标准的PKI组件应该支持一个加密算法。
允 许 相 应的组件使用额外的算法,甚至当它们不能使用所有的这些算法时。比如,支持这里的一个
密钥协定算法的客户可以使用别的密钥传递算法,即使它不支持这里的密钥传递算法。
6.2.2.2 散列函数
散 列 函 数用于为证书和CR工J产生数字签名,它也用于将共享秘密散列为报文确认码。
本 标 准 中建议使用一种散列函数。以SHA-1为例,它是通过对象标识符以及数字签名算法表示
的。SHA-1的ASN. 1对象标识符是:
GB /T 1 97 7 1- 20 05
sh al O B JE CT IDENTIFIER ::二{
iso (1 ) identified-organization(3)o iw(14)s ecsig(3)a lgorithm(2)2 6}
只 要 该 对象标识符在算法类型中出现,相应的参数域应该被忽略,如果出现,必须为NULL.
6.2.2.3 数字签名算法
GB /T 1 6264.8- 2005中指定了发放证书的签名算法和其他主体的加密算法。这两种算法可以是
不同的。本标准以RFC 2313中的RSA算法为例。
RS A 的 签名算法在RFC 2313中定义。RSA也可使用几种散列算法。本标准中引用的RSA定
义为:
pk cs- 1 O B J ECT IDENTIFIER::= {iso(1)member-body(2)US (840)
rsa ds i( 11 35 49 ) p k cs (1 )1 }
sha -l W ith R SAEncryptionO BJECT IDENTIFIER::= {pkcs-1(1)5}
在 R SA 签署的证书和证书撤销列表中,它应出现在SIGNED类型中和signature字段中。只要实
体的标识符作为算法标识符出现,那么参数的值必须是NULI_o
当证 书 和证书撤销列表签署时,签名将按下列规则生成和加密:证书和证书撤销列表按ASN.1
DER加密,并作为SHA-1的散列函数的输入。SHA-1散列函数的输出为OCTET STRING并按照
RSA的加密算法加密。签署证书时,RSA生成一个整数yo y的值按照ASN. 1的BIT STRING输出。
在y的signature字段包含了证书或证书撤销列表。(通常分为两步,整数y先转化为octet string。然
后再转化为bits tring.)
当 CA 发 放了一个证书,并且它的subjectPublicKeylnfo字段包含了RSA的公钥,那么对象标识符
rsaEncryption将作为algorithmIdentifier出现在subjectPublickeyInfo字段中,来标识RSA的公钥。
rsa E nc ryp ti onO BJECT IDENTIFIER::= {pkcs-11 }
只 要 rs aEncryption对象标识符在算法类型中出现,那么参数字段必为NULL,
RS A 的 公钥必须为ASN.1 的RSAPublicKey:的类型。
RS A Pu bl icK ey::= SEQUENCE{
mo d ul us I N T EG E R , 一 n
pu bli cE xp on ent IN T EGER一e)
系数 为 n,pu blicExponent为公共指数e,R SAPublicKey编码后为BIT STRING subjectPublicKey
的值。
RS AP ub licKey既出现在RSA的签名密钥中,也在RSA的加密密钥中出现。虽然不禁止只使用
一个密钥来进行加密和签名,但不提倡这样做。
6.2.2.4 消息认证算法
本 标准 建 议支持两种消息认证算法。以DES-MAC和SHA1-MAC为例,推荐使用SHAT-MAC,
DES-MAC是为了保证向后的兼容性。
SH A 1- M AC
本 算 法 通过为数据计算一个SHA-iH MAC值(在RFC2104中详细定义)而提供完整性保护。它
的算法标识符如下:
SH A 1 一HMAC OBJECT IDENTIFIER ::= {136155812}
本 标 准 中使用的mac长度为96bito
D ES - M A C
本 算 法 通过为数据计算一个DES MAC值(在FIPS-113中详细定义)而提供完整性保护。它的算
法标识符如下:
DE S -M AC OBJECT IDENTIFIER ::= {
iso (1 ) ide nt ifi ed -organization(3)o iw(14)s ecsig(3)a lgorithm(2)1 0
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
一 M AC 的 长 度 是 一个整数型的参数,在本标准中限制为32}
参 数 域 包含一个整数,表明了MAC的长度,在本标准中规定该值取为320
6.2.2.5 对称加密算法
本标 准 使 用了对称密钥算法来实现挑战一响应协议和保护私钥传输。在本标准中,以使用tDEA
(Triple Data Encryption Algorithm)算法的ECB模式为例说明对称密钥算法的使用。
tD EA 算 法在ANSIX 9.5 2中定义。tDEA算法基于DES算法,使用3个56b it的密钥:Kl,K2和
K3。在本标准中,使用双密钥模式,K1=K3e tDEA算法的密钥绝对不能出现在GB/T 16264. 8-
2005证书中。有的情况下,会在PKIMessage中传输tDEA的密钥,这时候,tDEA的密钥必须是经过
加密的。
下 文 说 明了tDEA的双密钥、ECB模式的加密方法和密钥的编码格式。
tDE A 算 法有AlgorithmIdentifier,而且要有tECB的OID。双密钥选项在ECBParams结构中
指明。
AS N .1 表示如下:
TD E AI dentifier::= AlgorithmIdentifier({TDEAModes}}
TD E AM odesA LGORITHM-ID::二{
{O ID tECBP ARMS ECBParms}}一mode1 一
{O ID tCBC PARMST DEAParms}}一mode2 一
{O ID tCBC-IP ARMS TDEAParms}}一mode3 一
{O ID tCFB PARMSC FBParms}}一mode4 一
{O ID tCFB-P PARMSC FBParms)}一mode5 一
{O ID tOFB PARMST DEAParms}}一mode6 一
{O I D tOFB-IP ARMS TDEAParms},一mode 7一
}
EC BP a rms::= TDEAParms( WITH COMPONENTS{
·一 ivG enerationA BSENT})
TD E AP arms::= SEQUENCE{
ke yin g0 ptionsK eying0ptionsO PTIONAL,
ivG en er ation[ 0]I VGenerationO PTIONAL
}
一 本 标 准中只支持双密钥
Ke yi ng 0ptions::= BIT STRING{
op tio n- 1( 0),一(3-key)K 1,K2a ndK 3a rei ndependentk eys
op tio n- 2( 1),一(2-key)K 1a ndK 2a rei ndependenta ndK 3= K1
op tio n- 3( 2)一(1-key)K l= K2= K3
)
id- an si- x952O BJECT IDENTIFIER::= {
iso (1 ) member-body(2)u s(840)a nsi-x952(10047)}
Se co nd CRADA Draft,Version 2
mo de O BJECT IDENTIFIER::= {id-ansi-x9521 }
tE CB OBJECT IDENTIFIER ::= {mode 1}
有 的 情 况下,需要对tDEA的密钥进行编码,就是两个密钥的直接串接。TwoKeys二[K1}K2],
TwoKeys的最高位比特是Kl的最高位比特。
GB / T 19 77 1- 20 05
6.2.3 证书扩展
6.2.3. 1 证书扩展概述
在 G B/ T 16264.8 -2005中定义了一套标准扩展集合。扩展由三部分组成:扩展名称、关键性标识
位和扩展取值。在GB/T 16264. 8-2005中做了如下规定:客户如果不能处理设置了关键性标识位的
扩展,就不能验证证书是否有效。
标 准 化 的扩展可以分为四类:密钥和策略信息;主体和颁发者的特征;验证路径限制;CRL标识
扩展。
6.2.3.2 密钥和策略信息
此 类 扩 展用于区分特定的公钥和证书,它们可以用于区别具有多个证书的证书认证机构(CA)中
某一特定的公钥/证书,有助于客户查找某个特定的CA证书,以便建立验证路径。这些扩展可以限制
密钥用途,提供CA证书中关于策略映射的信息。
a) 权 威密钥标识符
扩展 a ut ho rity Ke yI dentifier提供了一种区别签名证书的特定私钥的手段,标识性信息既可以
基 于 密 钥 标 识 符 ,也可以基于颁布者名字和序列号。在本标准中,使用密钥标识符的方法。本
扩 展 用 于 具 有 多 个签名密钥的颁发者(既可能是多个密钥对,也可能是正在进行密钥更换),证
书 认 证 机 构 (C A )应当能够产生本扩展,而且客户应能查找和验证具有多个数字签名密钥的证
书 颁 发 者 C A 的 验证路径。建议客户既能够处理密钥标识符,又能够处理由证书颁发者和证
书 序 列 号 组 成 的 密钥标识符,便于找到验证路径。
b) 主 体密钥标识符
本 字 段 用 于 区 别 一个主体所拥有的多个密钥,在每个已颁发的证书中都应当包含本字段,本
扩 展 应 当 是 非 关 键的。
c) 密 钥 用途
扩展 ke yU sa ge 定 义了证书中密钥在使用上的限制,这种限制是基于策略和/或用途的(如签
名 ,加 密 )。 C A 应 当能产生该扩展,而客户应当能处理该扩展。如果keyUasge定义为BIT
ST R IN G ,所 有 遵 从本标准的CA都应当在终端实体证书中设置一个值,例如,一个终端实体
证 书 中 的 K ey Us age不应当既是digitalSign ature又是dataEncipherment,本扩展应当设置为
关 键 性 的 扩 展 。
d) 私 钥使用期限
扩展 p riv at eK eyU sa gePeriod仅适用于数字签名密钥。在私钥使用期限之外的签名是无效
的 ,C A 可 以 产 生 此扩展,但客户不要求处理此扩展。
e) 扩 展的密钥使用范围
扩展 ex ten de dK ey Usage用于定义在应用中对证书密钥的使用限制,如果使用此扩展,就不考
虑 互 操 作 的 因 素 。符合本标准的PKI组件不要求支持该扩展。
f) 证 书 策略
扩 展 ce rti fic at eP olicies包括一个或多个对象标识符(OIDs),每个OID代表颁发本证书的一个
策 略 。 CA 应 当 能 够产生带有一个或多个证书策略OID的证书,CA应当支持一个特殊策略
OI D, 即 任 意策 略 a nyPolicy,a nyPolicy的()ID可以认为是一个通用符,能够匹配任何策略。
客 户 应 当 能 够 处 理policyldentifier字段,并与可接受的策略列表(策略列表取决于相应的应用
程 序 )中 的 标 识 进 行比较。如果提供了一个可接受策略列表,并且至少要有一个列表中的策略
或 其 映 射 策 略 存 在于certificatePolicy中时,客户才能验证证书认证路径。如果在证书策略中
存在 特 定 策 略 标 识 符anyPolicy,并且没有禁止任何策略(见6.2. 3 .4) ,就可以认为列表中的所
有 策 略 都 可 以 接 受。
要求 符 合 本 标 准 的 组件能处理certificatePolicy的子域policyQualifiers,并且支持id-pkix-cps
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
和 id- pk ix- un ot ice (见RFC2459) 。符合本标准的CA不要求能产生该子域。
9) 策 略 映射
此非 关 键 性 扩 展 用 于CA证书。它罗列了对象标识符对;每对标识符包括issuerDomainPolicy
和 su bje ctD o ma inP olicy。它意味着颁发CA认为其issuerDomainPolicy等价于主体CA的
sub je ctD om a inP ol icy.C A应当能产生扩展policyMappings,客户也应能够处理该扩展。
6.2.3.3 证书主体和颁发者特征
扩展 su bjectAltName,is suerAltName,s ubjectDirectoryAttributes和authority]nf ormationAccess
都是非关键性的。它们提供了关于主体和颁发者的其他名称和特征的附加信息。
a) 别 名
sub je tA ltN am e 和 issuerAltName扩展提供了证书主体和证书颁发者的附加信息,这些附加
信 息 包 括 R FC 82 2名称(电子邮件地址),DNS名称和统一资源标识符(URI)。扩展中可以包
括 多个 名 称 。 如 果 需要在证书中提供这些信息,就应当使用扩展subjectAltName和issuer-
Al tN a me o
根 据 本 标 准 ,扩 展 subjectAltName和issuerAltName应当是非关键的。识别这些扩展的应用
没 有 必 要 能 支 持 所有可能的选择。如果应用不能识别证书中的别名,就可以忽略该扩展。
在 本 标 准 中 ,扩 展 issuerAltName中包括URI信息,URI明确了颁发者证书的位置,这可以用
来 验 证 数 字 证 书 中的签名。在本标准中没有规定subjectAltName中包含的信息的意义。
如 果 证 书 认 证 机 构(CA)的证书不能从X.50 0目录服务中得到,CA就应当在证书中的别名扩
展 中 包 含 相 应 的 URI信息,以指出签名者证书的位置。要求客户能处理URI别名格式,必须
能够 识 别 LD AP U RL[RFC1959]。不要求客户能识别其他URI格式。
b) 主 体目录属性
扩展 s ub jec tD ire cto ryAttributes可以包含任何关于主体的X.50 0目录属性信息。本扩展是
非 关 键 性 的 。 本 扩展的实现和使用是可选的。
c) 权 威机构信息存取
扩展 au tho rit yI nfo rmationAccess中保存如何获得颁发CA和服务的信息。信息和服务可以
包括 在 线 验 证 服 务 和CA策略数据。(CRI,的位置信息不在本扩展域显示,该信息由cRLDistrib
ut io nP oin ts 扩 展提供。)
6.2.3.4 验证路径限制
扩展 b as icConstraints,n ameConstraints和policyConstraints用于限制有效的验证路径。
a) 基 本约束
扩 展 ba si cC on st raints通过CA部分的信息指定证书的实体是否是CA,通过pathl.enConstr
ain t 部 分 的 信 息指定验证路径的长度。CA应当在证书中能产生扩展basicConstraints,客
户也 应 能 够 处 理 本 扩展。只有在CA为True的时候,pathL enConstraint才有意义。
在 所 有 C A 证 书 中都应当包括basicConstraints扩展,而且CA应当设置为True。在终端实体
的证 书 中 也 可 以 包括扩展basicConstraints。如果在终端实体的证书中出现扩展basicConstr
ain ts ,它 应 当是 一个空的序列值。在所有CA证书中的扩展basicConstraints应当设置成关
键 性 的 。
b) 名 字约束
扩 展 na m eC on st raints只能用在CA证书中,它指定证书的验证路径中所有后续证书的名字范
围 。C A 应 当 在 证 书中能产生扩展nameConstraints,客户也应能够处理该扩展。该扩展应设
置 为 关 键 性 的 。
c) 策 略约束
扩展 po lic yC on str aints只用于CA证书。它可以以两种方式对策略解释进行限制:既可以限
GB / T 19 77 1- 20 05
制 策 略 映 射 ,又 可 以要求在验证路径中的每个证书包括一个可接受的策略标识符。
本 扩展 包 括 两 个 字 段:inhibitPolicyMapping和requireExplicitpolicy。如果inhibitPolicyMappin
g 存在 , 它 的 值 代表验证路径中的策略映射不再有效之前的其他证书的个数。如果
req ui reE xp lic itP o licy存在,在后续的证书中应当明确包含可接受的策略标识符。RequireExpli
cit pol icy 的 值 代 表在验证路径中要求明确的策略前的其他证书的个数。
CA 应 当 在 颁 发 证 书中包括本扩展,客户应能够处理本扩展。该扩展应设置为关键性的。
d) 禁 止anyPolicy
本 扩 展 禁 止 在 今 后的证书中使用anyPolicy。此关键性的扩展可以出现在颁发给CA的证书
中。 禁 止 策 略 意 味 着特殊策略标识符anyPolicyO ID(值为{{25 2 932。)}不能和其他证书策
略 匹 配 。 该 扩 展 的值是INTEGER,代表在验证路径中不再允许anyPolicy之前的其他证书的
个 数 。例 如 , 1意 味 着any-policy只能在本证书的主体所颁发的证书中处理,在验证路径中的
其 他 证 书 中 不 能 使用。CA应当能够产生此扩展,客户应能够处理本扩展。
6.2 .3 .5 CRL标识扩展
本 类 扩 展包含如何获得证书撤销列表(CRL)的信息。通过标识CRI,和颁发CRL者的名称(颁发
者可能不是产生证书的CA)的方式,可以将大的CRI,列表划分为多个小CRL列表。
CR L 分 发点:
CR I, Di stributionPoints扩展标识CRI、分发点,或指导客户如何验证一个已撤销的证书。本扩展
由三部分字段组成:distributionPoint,re asons和cRl.Issuera
a) D is tributionPoint存放如何获得CRI,的位置信息。如果本字段缺省,CRL分发点的名字就是
颁 发 者 名 字 。 在 CA颁发的CRI,很大的情况下,此字段提供了一种将CR工、划分为多个可管
理 片 断 的 机 制 。
b) Re asons存放相应的distributionPoint分发的CRI一撤销的原因。如果reasons不出现,在distri
bu teP oi nts 分 发 的CRI,中可以包括由于任何原因而撤销的证书。不要求客户能处理reaso
n s .
c) CR LIssuer确定分发并签名CRL的权威机构。如果该字段不出现,CRL颁发者与证书颁发者
相 同 。 使 用 本 字 段可以建立统一的CRL,包括由多个CA颁发的证书。
CA s 应 当能够产生带有distributePoint部分的cRLDistributionPoints扩展。如果不能从公共的
X. 500目录服务中获得CRI一列表,CA应当在distributionPoint中用URI别名格式来标注相应CRL
列表的位置。要求客户能够处理cRI.DistributionPoint扩展。必须能够识别URI格式,至少能够处理
LDAP URI格式。如果使用了cRI,Issuer,要求客户能够使用分发点并验证CRL。在6. 3.3中对分发
点做进一步的讨论。
6.3 证书撤销列表
6.3.1 证书撤销列表概述
证 书 撤 销列表(CRL)用来列出那些已被撤销或冻结的但并未过期的证书。证书撤销的原因多种多
样,例如日常的管理撤销(当证书的主体离开了发放组织,或责任和证书属性发生了变化),或私钥被泄
密。“冻结”是指CA不再确保证书主体和公钥之间的绑定。
X. 5 0 9 v 2证书撤销列表格式增加了一些可选扩展,在概念上与证书扩展相似。CAs应能产生如下
的X. 509 v2 CRLs,当验证证书认证路径时客户也应能处理它们。颁发CRLs的CA不一定必须是颁
发该撤销证书的CA。一些CAs只负责发放CRLs o X. 509 v2 CRI、包含以下信息:
Ve rs ion 版 本 ;
Iss ue rS ign at ur eA lgorithm 颁发者签名算法;
Iss ue rD is tin gu ish edN ame 颁发者可辨别名;
Th is U p da te 本 次 更新;
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
Ne xt U pda te 下 次更新;
Re vo ke d C e rti fic ates 撤销的证书,零个或多个以下序列的序列:
令 C e rt i fi c at e S e rialN umber 证书序列号,
今 R e vo ca tio n D ate 撤销日期,
令 C R LE n try E xtensions CRT.E ntry扩展(可选);
CR L E xt en sio ns CRT,扩展(可选);
颁 发 者 对 以 上 字 段的签名。
6.3 .2 CRL字段
X. 5 0 9 v 2C RT.的ASN.1 句法见附录A。对于签名计算,签名的输人数据是ASN.I D ER形式的
编码。ASN.1 D ER编码对每一个元素来说都是标签、长度、值的编码系统。以下各项描述了X.50 9v 2
CRL的使用:
a) V ersion
这 个 字 段 描 述 了 编码后的CRT,的版本。该字段的值应是I,表明是v2C RL。
b) Si gnature
该 字 段 包 含 签 署 CRL的算法的算法标识符。它的内容与证书的signature字段一样。关于这
个 字段 的 信 息 见 6 .2.1中关于signature字段的定义。CRT,可以被6.2. 2 .2 中标识的任何算
法 签 名 ;通 常 , CA 使用同一算法来对证书和CRT、签名。
c) Is su er N ame
iss ue r字 段 提 供 了 签署CRT,的CA的全球唯一标识名。颁发者的名字是X.5 00可辨别名。
本 标 准 不 支 持 C RT.颁发者名字为空的CRLo
d) Th isU pdate
thi sU pd a te 字 段 指定了该CRL的日期。此字段可以是UTCTime或GeneralizedTime。对于
本标 准 , th isU pd at e字段遵从证书的validity字段的规则。(见6.2.1)
e) Ne xtU pdate
nex tU p dat e字 段 指 定了下一个CRL颁发的日期。下一个CRL颁发的日期可以在指定日期
之 前 ,但 不 可 在 指 定日期之后。此字段可以是UTCTime或GeneralizedTime。对于本标准,
ne xtU p da te 字 段 遵从证书的validity字段的规则。(见6.2.1 )
f) R e vokedC ertificates
rev ok ed Ce rti fic ate s字段是一个已经被撤销的证书的列表。每个被撤销证书包含:
1) 证 书 序 列 号 (在userCertificate字段中指出)。它包含被撤销证书的serialNumber字段的
值 。 它 必 须 与 颁 发 C A 的 名 字 一起使用以识别一个已经被撤销但还未到期的证书。
2) 包 含 撤 销 日 期的revocationDate字段。本字段取值遵从证书的validity字段的规则。(见
6. 2 .1 )
3) C R L E n try 扩 展(可选)(见6.3. 4 ) 。它可以给出证书撤销的原因,说明证书无效日期,也
可 以 说 明 发 放 该 被 撤 销 证 书的CA的名字(或许与颁发CRL的CA不是同一个)。注意:
我们 假 定 颁 发 C R I_ 的 CA 和 颁发被撤销证书的CA是同一个,除非CRI.E ntry扩展包含
cer ti fic ate ls su er 字 段 。
6.3 .3 CRL扩展
1 S O / I T U所定义的X.5 09v 2C RLs扩展提供了对全部CRLs附加其他信息的方法。每个CRL扩
展被设计为critical或noncritical.(关键的或非关键的)如果客户碰到一个不能处理的关键性扩展,将
无法对该CRL进行验证。
本 条 描 述了应被支持的CRI.扩展。当CA能够产生一个CRL的扩展且客户能够处理该扩展时,
此CRI_扩展才有效。
GB / T 19 77 1- 20 05
a) 机构密钥标识符
au tho ri tyKeyIdentifier,非关键性CRI,扩展,标识了CA用来签署CRI,的密钥。当CA使用
多 个 密 钥时该扩展是有用的;它使得不同的密钥得以区分(例如,密钥更新时)。身份的鉴定可
基 于 密 钥标识符或发放者名字和序列号。所有的CRI.s都应有密钥标识名。当发放者拥有多
个 签 名 密钥时(或多个密钥对,或是在密钥更新期间),该扩展是很有用的。当发放CA有多个
签 名 密 钥对时,在所有的CRI,扩展里都应包括该扩展,并且客户也应能够找到并验证CRI,验
证路 径 。 客户如果要查找证书认证路径,必须能够处理authorityKeyldentifie:的密钥标识符
或 证 书 发放者名加上序列号。
b) 颁发者别名
iss ue rA ltName,非关键性CRI,扩展字段,包含一个或多个CA别名。别名一旦出现就放置
在 is sue srAltName里。并非所有的别名格式都要被识别处理,识别不出的别名格式可以被忽
略 。 CA 可在CRLs中产生该扩展,然而客户可以不予处理。
c) CRL编号
cR LN u mber,非关键性扩展字段,是一个单调增加的序列号,该CRI,由CA通过特定的CA目
录人 口 或CRL分布点发放。该扩展可以用来通知证书使用者整个CRL的非固定时间发布,
或 是 便 于确定何时某一CRL替代了另一CRI,。在CRL中应该包括该扩展。
d) 颁发分布点
iss uin gD istributionPoint字段是非关键性的扩展,决定了一个特定CRI,的CRL分布点。一
个 分 布 点就是一个用来检索CRI,的目录入口,它可以与CA的目录人口不同。CA要用密钥
对 CR I, 加密。CR工J分布点没有自己的密钥对。
另外 , iss uingDistributionPoint字段指定的CRLs可能只针对终端实体的证书,或者只针对
CA 证 书 ,或者只针对由于某种特定原因撤销的证书。最后,该扩展也可以确定一个间接
CR L ,间 接CRI一是由与发放被撤销证书CA不同的CA发放的。间接CRI,包含以下组件:
dis tri bu tio nP oi nt, 给出了分布点的名字,遵循X.50 0标识名规则;
onl yC on tai nsU se rC erts,布尔变量,表明该CRI,只包含终端实体证书;
on lyC on ta ins CA C erts,布尔变量,表明该CRI、只包含CA证书;
onl yS om eR eas on s,一 个ReasonFlag位串,标明CRL中所列证书的撤销原因;如下:
. k ey Co mp ro m ise,表明密钥泄漏或怀疑密钥泄漏,
. c A Co m pr om ise,表明该证书撤销的原因是CA密钥泄漏,它只用于撤销CA证书,
. a ffi lia tio nC ha nged,表明该证书撤销的原因是证书主体的从属关系改变了,
令 s up er se de d, 表明该证书已被代替,
令 c ert ifi cat eH ol d,表明证书处于冻结状态,可能会被撤销,
. ce ssa tio nO fO pe ration,表明该证书的目的已经不再被需要,但并不是密钥被泄漏;
Ind lr ec tC RI ., 布 尔变量,表明这是一个间接CRL.
客 户 应 能处理这个字段。
e) 增量CRI,指示符
del ta CR LIndicato:是一个关键CRI扩展,它确定一个增量CRI,。对于那些采用非CRL结构
存 储 撤 销信息的用户程序来说,增量CRI可以有效地节省处理时间。它允许把变化的信息增
加 到 本 地数据库里,忽略掉那些本地数据库中已经存在的未改变的信息部分。
Ba se CR LNumber的值表明基础CRI的CRI,序列号,基础CRI、是生成增量CRI,的开始点。
增 量 C RI,包含基础CRI,和当前CRI,之间的变化部分。是否提供增量CRL要由CA来
决 定 。
客 户 可 以利用本地CRI,和增量CRI合成一个CRI.,要注意的是如果本地CRI,的CRI、序列
标准分享网 www.bzfxw.com 免费下载
GBJT 19771-2005
号 小 于 增 量 C RI .中的BaseCRLNumber,合成的CRI.就不正确。如果增量CRL含有一个
CR L 序 号 扩 展 ,那 么合成的CRL的CRI.序号就是该扩展的值。客户和CA是否支持增量
CR L 是 可 选 的 。
f) C R L扩展使用总结
表 1 总 结了标准CRL扩展,表2总结了这些标准CRI.扩展的使用。
表 1 C R L 扩 展 概 要
希爪月 表 2 C RL 扩 展 在 本 标 准 中 的 使 用
ACDIKcseResurlrutuyLtitSIaehitINndCeorsAeg:rsuRDiniuam-XltLet}IiyfNirNbrsIKf;tinCehaeruedrimrARmbylIceLub.ad#.t.e.1et.i*.`or.n.M .nrtiAPifMioe,.i".rnC}tR1L,1.亡 川 6.3 .4 CR LE ntry扩展
X. 5 0 9 v 2C RLs所定义的Entry扩展提供了获取CRI.每条附加信息的方法。每个CRL Entry扩
展被设计为关键性或非关键性。如果不能处理关键性扩展,该CRL的验证将是无效的。如果是不可识
别的非关键性CRL Entry扩展,则可以忽略。
a) 原 因代码
rea so nC o de 是 非 关键性CRLE ntry扩展,标明了证书撤销原因。CA应当能够生成该扩展,但
客 户 是 否 要 处 理 reasonCode扩展则是可选的。下面列举的是reasonCode的取值:
uns pe cif ied ,未 使 用 ;
key C om pr om ise ,表 明 密 钥 泄 漏或怀疑泄漏;
cA Co m pr om is e, 表 明 该 证 书撤销的原因是CA密钥泄漏,它只用于撤销CA证书;
GB /T 1 97 71 - 20 05
aff ilia tio nC h ang ed ,表 明 该 证 书撤销的原因是证书主体的从属关系改变了;
sup er se ded ,表 明 该 证 书 已 被 新的证书代替;
ces sa tio n Of Op er at ion , 表 明 该 证书的功能已经不需要,并不是密钥泄漏;
cer ti fic ate H ol d ,表 明 证 书 当 前 不能使用,如果证书的CRL的reasonCode字段是certificat
eH ol d, 那 么客 户 就 无 法 验 证证书认证路径;
rem o veF ro m CR L ,只 与 增 量 CRI.一块使用,表明应该删除一个存在的CRLEntryo
b) 过 期 日 期
exp ir ati on Da te ,非 关键性CRI.E ntry扩展,表明Entry的过期时间。该扩展不在CRLs中使
用 ,也 不 被 客 户 使 用 。
c) 指 令 码
ins tru ct ion Co de 是 非关键性CRLE ntry扩展,提供了一个注册过的指令标识符,指令标识符
来指 出 当 遇 到 一 个 被冻结的证书时要采取何种操作。本扩展不在CRL中使用。
d) 无 效日期
inv al idi ty Da te 是 非关键性CRL Entry扩展,指出知道密钥泄漏或怀疑泄漏的日期,即证书无
效 的 日 期 。 该 日 期 必 须比CRI,E ntry中的撤销日期要早。而CRL Entry中的撤销日期表明
的 是 CA 撤 销 证 书 的 日期。无论是否可以获得此信息,都应该鼓励CAs将此信息与CRL用
户 共 享 。 CA s 在 CRLs中生成该扩展,取值的形式是GeneralizedTimeo
e) 证 书发放者
cer tif ica tel ss uer 和 间接CRL一起使用,(间接CRI,,是issuingDistributionPoint扩展中有indir
ect CR L 标 识 符 的CRL)。如果该扩展没有在间接CRI,的第一个Entry中标出,那么该证
书的 发 放 者 默 认 为 CRL发放者。在间接CRL随后的Entry里,如果没有给出certificatelssuer,
则 认 为 证书 发 放 者与前一个CRI.E ntry的发放者相同。
f) C R L Entry扩展使用总结
表 3总 结 了CRLE ntry扩展,表4总结了本标准中CRLE ntry扩展的使用。
表 3 C R L En tr y扩 展
阵耸万日月 表 4 本 标 准 中 CR L E nt ry 扩 展 的 使 用
一公亡n7CZARi pL-.- "'"J}Un}JW.M!TFX1*'}'34APIATEA1}4,O3"LjCL}k1ILRL#74JIC.C"V%UtiXO2F7*J,/9IpfrP9h r9} 6.4 证书认证路径
RF C 2 4 59中的第6章有具体定义,认证路径功能应由客户来实现。
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
6.5 事务消息格式
6.5.1 事务消息格式概述
本 条 给 出了一套最小的支持PKI事务的消息格式。系统如果想实现这些事务就必须支持这些消
息格式,并能够正确的产生、识别它们。这些消息格式以ASN. 1的形式定义;消息利用DER编码
传输。
6.5.2 全体PKI消息组件
a) PK I消息
每 个 消 息 有 四 个 组件:
PK IM e ss ag e: := SEQUENCE{
he ad er PKIHeader,
bo dy P K IB od y,
pro te ct ion [0 ] PK IProtection OPTIONAL,
ex tra Ce rt s [1 ] S E Q U ENCE OFC ertificate OPTIONAL}
ex tra Ce rt s字 段 在 本标准中用来放签名的证书序列,后面消息的描述中对这个字段不再具体
描 述 。
b) P K I消息头
所 有的 PK I消 息 都 需要头信息来识别地址和处理。一些头信息会在传输特定包里给出。然
而 ,如 果 P KI 消 息 被签名,这个头信息也是被保护的。
下 面 是 消 息 头 的 数据结构:
PK IH e ad er :: = S EQ UENCE{
pv no IN T E GE R {ietf-version2(1)},
sen de r G e ne ral N am e, 一标识发送者
rec ipie nt G e ner alN am e, 一标识接收者
me ss age T im e [0 ] G e neralizedTime OP T IO NAL,
一 该 消 息 的 产 生 时间(发送者使用)
一 该 时 间 对 接 收 者来说仍然有意义。
pro te cti on Al g [1 ]A lgorithmldentifier O PTIONAL,
一 计 算 保 护 比 特 的算法
sen de rK ID [ 2] K ey Identifier O PT IO N AL.,
rec ip KI D [ 3] K ey Identifier OP T IO NAL,
一 确 定 用 来 保 护 的特定密钥
tra ns ac tio nI D [ 4]O CTET STRING OP T IO N AL ,
一 确定 事 务 , 也 就 是说,相应的请求、响应和确认消息的transactionlD相同。
sen de rN o nc e [5 ] O CTET STRING OP T IO N AL ,
rec ip No n ce [ 6] O CTET STRING OP T IO N AL ,
一 no nc es 用 来 提 供重发保护,消息的产生者插人senderNonce;该消息的接收者在相
一应 消 息 中 插 入 rec ipNonceo
fre eT ex t [7] P K IFreeText OP T IO N AL ,
一 这 可 以 用 来 进 行一些上下文说明(本字段的设计便于人工阅读)
gen er alI nf o 仁8]S EQUENCE SIZE(1二MAX)O FI nfoTypeAndValueO PTIONAL
一 用 来 传 递 上 下 文相关信息
一 (本 字 段 不 是 主 要为人工考虑的)}
PK IF re eT e xt :: = U TF8String
GB /T 1 97 7 1- 20 05
头 消息 中 的transactionID字段允许响应消息的接收者将它与请求相关联。一个RA或许在
同一 个 时刻有很多请求未被处理。为了做到有效,从发送者的角度看,本字段的取值应当是
独 一 无 二的。
Me ss ag eTime字段表明消息产生的时间。它的值必须是格林威治时间,必须精确到秒(即年
月 日 时 分秒YYYYMMDDHHMMSSZ),即使秒是零。MessageTime字段不包括分秒。
sen d er 和recipient字段定义为GeneralName。系统必须支持X.5 00标识名和RFC 822( Inter
ne te -mail)标识名。
fre ete xt 字段定义为PKIFree Text,P KIFree Text是ASN.1 中的UTF8String型。
UT F 8S tring是统一字符集,它包括了ASCII,本标准中,PKIFreeT ext仅包括ASCII中的
字 符 。
Pro te cti onAlg所有的签名消息,以及用消息认证码保护的消息都要有该字段。当一个消息不
受 保护 时 (即,在含有PKIHeader的PKIMessage中不出现protection字段时),Protection-
Alg 必 须 被忽略。
sen de rN once和recipNonce在。lient和RA中是不需要的;CA如果收到了带有senderNonce
的 PK IM essage,就必须在随后的消息里返回recipNonce。本标准中,senderKID,r ecipKID,
gen er alI nfo是不需要的。
c) PKI消息正文
PK IB od y::= CHOICE{
一 me ss age-specificb odye lements
cr [2 ] Ce rtRegMessages, 一证书请求
cp [3 ] C ertRepMessage, 一证书响应
p1 0c r [4 ] P KCS10CertRegMessages, 一引自[PKCS10]
rr [1 1] R evRegContent, 一撤销请求
rp [ 12 ] RevRepContent, 一撤销响应
con f [1 9] P KIConfirmContent, 一确认}
其他 的 message-specific正文元素在RFC2510,R FC2511中定义。本标准并不需要这些元素,
所 以 这 里把它们省略了。附录C中描述了message-specific正文元素的完整列表。
其 他部 分 所说的CertReq,C ertRep,R evReq,R evRep在PKIMessage里就是指ir,ip,cr,cp,
rr, rp 。一 个PKCS# 1 0请求是指带有plOcr正文元素的消息。一个确认消息带有正文消息
co nf o
d) PKI消息保护
使 用 以 下结构,所有PKI消息的完整性将得到保护:
PK I Pr otection::=BIT STRING
用 来 计 算PKIProtection的输入是如下数据结构的DER编码:
Pr ot ec te dP ar t: :=SEQUENCEt
H ea de r P K IH eader,
bo dy PK I Bo dy }
在大 多 数 情况下,PKIProtection字段将包含一个数字签名,PKIHeader里的protectionAlg字
段将 包 含 一个AlgorithmIdentifier,用来说明为保护消息所使用的数字签名算法。
在 有 些 情况下,例如密钥更新,附加多重签名是必要的。这时,签名消息是嵌套的结构一每个
已签 名 的消息成为一个PKIBody的元素;下一个签名应用于这个消息。这个处理将会不断重
复 直 到 所有的签名都已应用完毕。
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
6.5.3 通用数据结构
下 面 的 数据类型对几个消息格式都是通用的。
a) 证 书模板
在 各 种 各 样 的 P KI管理消息中,始发者可能会提供一些值来识别一个已存在的证书,或申请
一个 证 书 时 在 请 求 中含有一些值。CertTemplate结构允许实体标明这些值。CertTemplate
包 含 作 为 一 个 证 书所需的所有信息。
Ce rtT e mp la te : := SEQUENCE{
ve rsi on [ 0 ] V ersion O PT I ON A L,
一 用 来 请 求 特 殊 语法版本
ser ia l [ 1 ] I NTEGER O PT IO N A L,
一 用 来 请 求 一 个 特殊的序列号或声明请求代表一个以前的证书持有者
sig nin gA lg [2] A lgorithmIdentifier OPTIONAL,
su bje ct [ 3] N ame O PT IO N A L ,
val idi ty 仁4] O ptionalValidity OPTIONAL,
iss ue r 仁 5] N ame O PT IO N A L ,
pu bli cK ey [ 6] S ubjectPublicKeyInfoO PTIONAL,
iss uer U ID [7] U niqueIdentifier OPTIONAL,一nots upported
sub je ctU ID [8] U niqueIdentifier O PTIONAL,一nots upported
ex ten si on s [ 9] E xtensions OP T IO NAL,
一 包 含 请 求 者 希 望在证书里具有的扩展
}
Op tio na lV ali dit y ::=SEQUENCE{
no tB efo re [ 0] T imeO PTIONAL,
no tA fte r [ 1] T imeO PTIONAL
}
Ce rtT e mp la te s: := SEQUENCE OFC ertTemplate
如 果 Ce rt Te m pl ate出现,validity字段将包含请求证书的请求发放日期(notbefore字段)和期
满 日期 ( no tA fte r) 。对CertTemplate中的validity字段和证书中的validity字段的解释相同。
(见 5 .2 .1 )
b) 签 名私钥的拥有证明
若 由 主 体 产 生 密 钥对,CA需要验证证书请求中主体拥有对应于相应公钥的私钥。这是通过
Pro of 0fP os ses sio n 字段来实现的。
当用 户 申 请 一 个 签 名证书,则用ProofO fPossession中的signature字段实现的,该signature
是一 个 PO PO S ign ingKey结构。该结构包含输入数据、一个算法标识符和一个签名。
输入 数 据 作 为 D E R编码的popInput,它是由证书请求中的数据生成的。通常,它包含Cert-
Te m pla te 里 的 主 体名和公钥。当一个新的主体请求通过公钥mac验证后,或是RA修改了主
体名 后 , po pI np ut 必须由POPOSigningKey结构中的可选数据和CertTemplate里的公钥构
成。 这 就 允 许 RA 把 拥有证明传递给CA而不用改变CertTemplateo
Pr oo fO fP os ses si on::=CHOICE{
raV e rif ied [ 0] NU L L,
一 当 RA 已 经 验 证 了请求者拥有相应私钥时使用
sig na tul e [ 1]P OPOSigningKey,
一 用 户 产 生 证 书 密钥对,并申请签名证书时使用
GB /T 1 97 71 - 20 05
key En ci ph erm ent 仁2]P OPOPrivKey,
一 本 标 准不使用该域
ke yA gr ee m ent [ 3] P OPOPrivKey
一 本 标 准不使用该域}
PO P OS ig ni ngKey::= SEQUENCE{
po po sk In pu t [0 ] P O P OSKInputO PTIONAL,
alg or ith m Id entifier A lg or ith m Id entifier,
sig na tu re BI T ST R IN G}
一 对 po pInput的DER编码值签名(用”algorithmIdentifier")
一注 意 : 如果在POP字段里出现poposkInput,p opInput就由otherinput构成。
一 如 果 poposkInput没有出现,主体就是CertTemplate中的名字。
一注 意 PopInput的编码值是有意含糊的。
Po po sk In pu t::= CHOICE{
Su bj ect n am e,
Se nd er [ 0 ] g eneralName,
pu bli cK ey M AC仁1]P KMACValue}
一 po p 的计算是基于popInput的结构的。PopInput的结构定义如下:
Po pI np ut : := SEQUENCE{
CH O IC E {
oth er in pu t popskInput,
su bje ct n ame},
pu bli cK ey su bjectpublicKey)
一 如果 poposkInput在POP字段出现的话,popInput就用otherinpu构成。如果poposkInput
不 出 现 ,主 体 就是CertTemplate中的名字。
一 注意 PopInput的编码值是有意含糊的。
c) 证书请求消息
Ce rtR e gMsg是证书请求的基本结构。CertRegMsg由三个字段构成的SEQUENCE,certR
eq; p op;r egInfo(可选)oc ertReq是类型CertRequest,p op包括了证明拥有私钥的信息,
reg In fo 包含了特定的注册过程信息。regInfo字段是可选的。CertRegMsg定义见附录D}
Ce rtR e gMsg::= SEQUENCE{
cer tR eq C er tRequest,
PO P P r oo f0 fPossession OPTIONAL,
一 本 标 准规定加密密钥对必须集中产生,此时该字段不出现
一 若 集 中产生签名密钥对,则该字段不出现
一 若 是 由终端实体产生签名密钥对,则该字段必须出现
reg ln fo S EQUENCE SIZED二MAX)o fA ttributeTypeAndValueO PTIONAL}
Ce rtR e quest
Ce rtR eq uest的组成包括:请求标识符,证书模板,可选的控制信息。
Ce rtR e quest::= SEQUENCE{
cer tRe gI d I NT E GER, 一用来匹配请求和相应的ID
cer tTe m plate C ertTemplate, 一选定的证书中的某些字段
con tr ol s Co nt rolsO PTIONAL}一控制颁发的一些属性
cer tR eg Id是一个INTEGER,c ertTemplate是CertTemplate, controls的定义如下。
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
Ce rtR e gM e ssa ge s
Ce rtR eg M ess ag es 是一个或多个CertRegMessage序3il的结构。
Ce rtR e gM e ssa ge s::一SEQUENCE SIZE(1..MAX)O F CertRegMessage
本标 准 中 , Ce rtR e gMessages可以假设为仅由一个CertRegMessage构成的SEQUENCE。即
M AX 可 以 定 义 为 la
Co n tr ol s
Ce rtR eq ue st 的 产 生者可以包括一个或多个适合请求处理的control值。
Co nt ro ls :: = S EQUENCE SIZE(1二MAX)O F AttributeTypeAndValue
下 列 。o ntr ol 在 证 书管理协议(CMP)里有定义:regToken;a uthenticator;p kiPublicationlnfo;
p k iA rch iv eO pti ons;o ldCertId;p rotocolEncrKey。在具体实现规范中的事务时,这些contro
l是 可 选 的 。 这 些control的OIDs如下。本标准不需要的control( oldCertId,r egToken,
au the nt ica tor , p k iPublicationlnfo,a ndp kiArchiveOptions)在这里没有描述。
id- pk ix O B JE C T IDENTIFIER::= {iso(I)identified-organization(3)
do d( 6) i n te rn et( I)security(5)mechanisms(5)p kix(7)}
一 arc f or I n te rn etX .5 09P KIp rotocolsa ndt heirc omponents
id- pk ip O BJ EC T IDENTIFIER::{id-pkixp kip(5)}
一 Re gi str at ion C ontrolsi nC RMF
id- reg C trl O BJ E CT IDENTIFIER::= {id-pkipr egCtrl(1)}
id- re gC tr l-o ld Ce rtId O BJ E CT I DE N T IF IE R::= {id-regCtrl5 }
id- reg C trl -p ro toc olEncrKey O BJ EC T ID E N TIFIER::“ {id-regCtrl6 }
d) 协 议加密密钥控制
如 果 存 在 的 话 ,协 议加密密钥控制明确了CA用来对CertRegMessages的响应进行加密的
密 钥 。
当 CA 发 送 给 申 请者的信息需要加密的时候就可以使用这一控制。这些信息包括CA把产生
的 私 钥 发 给 申 请 者供其使用。
pro to co lEn cr Ke y 控制由属性类型里的id-reg-protocolEncrKey的OID来确定。它的值的语
法 是 Su bj ect Pu bli cKeylnfo.
e) PK I消息状态码
所有 的 响 应 消 息 都 包含一些状态信息。定义如下的取值:
PK IS t atu s : := IN TEGER{
gra nt ed ( 0) ,
一请 求 得 到 许 可 ,没有变更
gra nt ed W ith M od s (1),
一请 求 得 到 许 可 , 有变更;请求者负责确定变更。
rej ec tio n (2 ),
一请 求 被 拒 绝
wa iti ng ( 3) ,
一已 收 到 请 求 但 还 未处理,处理后将会附加一个响应
re vo ca tio n W ar ni ng (4 ),
一给 予 警 告 : 撤 销 已被请求,正在处理。
re vo ca tio n No ti fic at ion (5),
一通 知 : 已 经 撤 销
ke yU pd at eW a rn ing (6 ) }
GB /T 1 97 71 - 20 05
本标 准 并 未用到KeyUpdateWarning状态码。
f) 失败信息
响 应 者 使用以下句法提供更多失败信息。
PK IF ai lureInfo :: = BIT STRING{一因为会以多种方式失败!
bad A lg ( 0) , 一 不 被 识别或不被支持算法名
ba dM es sageCheck ( 1) , 一完整性检查失败(例如,签名核对错误)
bad Re qu est (2 ), 一事 务不被允许或支持
bad T im e (3 ), 一 me ssageTime与系统时间相差太多
bad C ert ld ( 4) , 一 证书标识名错
bad Da taF ormat (5 ), 一数据格式不对
wr on gA uthority (6 ), 一请求中指出的authority和响应者不同
inc or rec tData (7 ), 一请求者的数据不对(在公证服务里用)
mis sin gT imeStamp (8) , 一没有时戳,但是策略需要
ba dP oP ( 9) 一 拥有证明字段核实失败,
一 需 要 更多的失败信息}
PK IS ta tusInfo::= SEQUENCE{
sta tu s P K IS ta tus,
sta tu sS tring P KIFreeText OP T IONAL,
fai lIn fo P K IF ailureInfo O PT IONAL)
9) 确认协议
确 认 消 息会在PKIHeader中带着所需的所有信息。因此,该数据结构内容为空。
PK IC o nfirmCotent::=NULL
h) 证书识别
为 了识 别 特定的证书,采用了CerId结构
Ce rId : :=SEQUENCE{
iss ue r GeneralName,
ser ial Nu mber INTEGER}
i) CentrallyG eneratedK eys
本 标 准 规定由第三方集中产生加密密钥对并通过带外方式提供给CA,此时CA用Certified-
Ke yP air 结构发还证书。
Ce rti fie dKeyPair::二SEQUENCE{
cer ti fic ate [ 0] C ertificate O P TI ON A L,
en cry pt edCert [ 1] E ncryptedValue OP T IO N AL,
pr iva te Key [2 ] E n cryptedValue OP T IO N AL,
pu bli cat ionInfo 巨3]P KIPublicationInfo O PT IO NAL}
En cr yp tedValue::= SEQUENCE{
int en ded Alg 仁0]A lgorithmIdentifier O PT IONAL,
一 th ei ntendeda lgorithm forw hicht hev aluew illb eu sed
sy mm A lg [ 1] A lg or ith mIdentifier O PTIONAL,
一 加 密 这一value的对称算法
en cS ym mKey 仁2]B IT STRING OP T IONAL,
一 用来 加 密这一value的对称密钥(已加密)
key A lg [3] A lg or ith mIdentifier OPTIONAL,
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
一 用 来 加 密 对 称 密钥的算法
va lue I-l in t 仁4]O CTET STRING O PTIONAL,
一e nc V alu e 内容 的 简要描述或标识符
一 (可 能 只 对 发 送 实体有意义,仅当将来发送实体对EncryptedValue重新检查时使用)
en cV a lu e BIT STRING
一加 密 的 v alu e}
j) 带 外 信息
为 了在 带 外 传 输 一 个CA的公钥,采用了OOBCert结构。OOBCert只是一个CA的证书。
OO B Ce rt :: = Ce rtificate
6.5.4 特殊操作的数据结构
a) 注 册/证书请求
注册 和 证 书 请 求 消 息(cr)包含一个CertRegMessages的数据结构,该结构规范了请求证书的
特 定 取 值 。
Cer tR eg Me ssa ge s是 CertRegMsg结构的一个或多个序341.
Ce rtR e gM e ssa ge s::=SEQUENCE SIZE(I二MAX)O FC ertRegMsg
例外 的 , 本 标 准 里 定义的事务假设CertRegMessages仅是一个CertRegMsg的SEQUENCEo
同时 请 签 名 证 书 和 加密证书的可选事务请求要求CertRegMessages是大小为2的SEQU
E N CE 。 本 标 准不鼓励同时申请两个证书,但不禁止。
b) 注 册/证书响应
注册 响 应 消 息 ( cp )包含一个CerRepMessage结构(一个可选的公钥和一个response)。特别
的 ,本 标 准 里 定 义的 事务都假设响应仅是一个CertResponse的序列。一个例外就是含有签名
证 书和 加 密 证 书 请 求的事务;该事务的响应可以是响应消息的结合,即含有两个CertResp
on se 的 字 段 的 序列。
Ce rtR es po ns e包 含 一个请求id、状态信息和一个CertifiedKeyPair(可选)。CertifiedKeyPair
是 一 个 包 含 四 个 可选字段的序列,四个可选字段分别是:一个证书,一个已加密证书、一个已
加 密私 钥 , 以 及 公 开信息。本标准中,证书字段总出现在CertifiedKeyPair里。仅当集中产生
密 钥管 理 密 钥 时 才 用到PrivateKey,其余字段均不出现。
Ce rtR e pM e ssa ge ::= SEQUENCE{
caP u b [ 1 ]C ertificate OP TIONAL,
res po n se S E Q UENCE OF CertResponse}
Ce rt R es po ns e :: = SEQUENCE{
cer tR egI d I N T EGER,一与相应的请求相匹配
ce rtR ep S tat us PK IStatusInfo,
ce rti fie dK ey P air Ce rtifiedKeyPair OP TIONAL;
一只 有 当 状 态 为 g ranted或grantedWithMods才存在
rsp In fo O C T E T STRING O PT IONAL
一 an alo go u st o t he i d-regInfo-asciiPairsO CTET STRING defined
一 for r e gI nfo i n C ertRegMsg巨CRMF]}
如果 cer tR ep Sta tu s包含failInfo字段,CertResponse将不包含certifiedKeyPair并且certRep-
Sta tu s字 段 的 s ta tus的值将是rejection.s tatus的值是waiting时,可选字段就都不出现。
sta tu s的 值 r ev oca tionWarning和revocatonNotification不会在消息中出现。
caP u b 和 rs pI nf。 字段是不需要的,如果它们出现的话可以被忽略。本标准并不使用Certifie
dK ey P air 中 的 encryptedCert和publicationInfo字段。
GB /T 1 97 7 1- 20 05
c) 撤销请求的内容
当请 求 撤 销一个证书时采用以下数据结构。请求者的名字在PKII-leader中显示。
Re vR e gContent::= SEQUENCE OF RevDetails
Re vD eta ils::=SEQUENCEO F{
cer tD et ails C er tT emplate,
一允 许 请 求者尽可能多的指定所请求撤销的证书的参数(例如,不知道序列号时)
rev oc at ionReason ReasonFlags,
一 来 自 DAM,这样CA就知道该用哪个Dist.p oint
ba dS inc eDate G en era lizedTime O P TIONAL,
一 ind ic atesb estk nowledgeo fs ender
crl En tr yDetails E xtensions
一 要求 的 crIEntryExtensions)
Re as on Flags定义见附录B。为清楚起见这里再说明一遍。
Re aso nF lags::=BITS TRING{
un us ed (0 ) ,
ke yC om promise (1),
caC o mp romise (2 ),
aff ili ati onChanged (3),
sup er se ded (4) ,
ces sa tio n0fOperation (5),
cer tif ic ateHold (6 ),
rem ov eF romCRL (8 )}
bad Si nc eDate和revocationReason表示的信息可以在crIEntryDetails中也同样表示出来,使
用 标 准 的X.5 09C RI,扩展invalidityDate和reasonCode。推荐的位置是crlEntryDetails,不
过 本 标 准建议CA处理其他位置的信息。当有冲突存在的时候,使用较早的日期。当撤销原
因 不 匹 配时,CA应包括所有的原因。
d) 撤销响应内容
当 对 撤 销请求做响应时,使用以下数据结构。把它发送给请求者。
Re vR ep Content::=SEQUENCE{
sta tu s PK I St at uslnfo,
rev C ert s [ 0] S E QUENCE OF CertldO PTIONAL,
一 确 定 要请求撤销的证书
crl s [ 1] S EQ U ENCE OF CertificateListO PTIONAL,
一 作 为 结果的相应的RL}
在 本 标 准中,revCerts是一个或多个CertID字段的SEQUENCE,cr ls字段并不出现。
e) PKCS# 1 0证书请求
这个 证 书请求句法在RFC 2314中有定义,为清楚起见在此重复一遍。
PK C SI O CertRegContent::= SEQUENCE{
cer ti fic ationRequestInfo CertificationRequestlnfo
sig na tu reAlgorithm Si gnatureA lgorithmIdentifter,
sig na tu re S ig na tu re )
Sig na tu reAlgorithmldentifier::二Algorithmldentifier
Sig na tu re::= BIT STRING
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
Ce rti fic at ion R eq uestInfo::= SEQUENCE{
ve rs io n V e rsion,
su bje ct N am e,
su bje ct Pu bl icK e ylnfo Su bjectPublicKeylnfo,
att rib u tes [0 」 IMPLICIT Attributes)
Ve rs io n :: = I N TE GER
At tr ib ut es : := SE T OF Attribute
At tri bu te s在 RF C 2985中有定义。为了互操作而对Attributes的支持是可选的。即使出现
了 ,也 可 以 被 忽 略 。
6. 6 PKI事务
6. 6. 1 PKI事务概述
本 条 详 细介绍了PKI的具体功能:注册请求、更新和撤销证书。也简要描述了访问目录服务的
事务。
CA ,R A 和证书持有者应能实现本条描述的所有事务。
对 于 CA 和RA物理上在一起、不支持远端RA的PKI产品,CA和RA之间的消息就可以忽略掉。
6.6 .2 RA发起的注册请求
RA 可 以 请求CA为一个终端实体颁发签名证书。这个事务分五步执行。第一步,终端实体通过
带外事务(例如通过实际呈交一个磁盘)在一个签名消息中向RA提供一个公钥。第二步,RA通过一
个签名消息向CA请求证书。第三步,CA通过一个含有证书或错误代码的签名消息回应RA。第四步
RA通过带外方式向终端实体提供CA的公钥和所颁发的证书(若是集中产生密钥对则还包括相应私
钥),终端实体也可以直接从CA获得。第五步RA向CA发出确认消息。在这个过程中包括三条
消息。
a) 从 R A到CA的证书请求
RA 建 立 一 个 P KI Body为cr的PKIMessage。其PKIHeader包括下列信息:
pv no 是 1 ;
tra ns act ion ID 是 该 R A 赋 予 这个事务的唯一整数;
me ss ag eT im e 是 当 前 精 确 到秒的时间;
sen d er 是 R A 的 可 辨 别 名 ;
rec ipi en t是 C A 的 可 辨 别 名 ;
pro tec tio nA lg 是 用来 保 护 该 消 息的签名算法的算法标识符。
这 个 消 息 的 消 息 体是CertRegMessages,它是一个或多个CertRegMessage字段的序列。对于
这个 事 务 , Ce rtR eg Messages是一个CertRegMessage的序列。这个CertRegMessage将包括
如 下 信 息 :
cer tR eq 含 有 请 求 者 希望 包 含 在证书中的信息;
PO P证 明 了对 新 证 书 私 钥 的拥有。
本 标 准 中 只 支 持 终端实体产生签名密钥对,不支持终端实体产生加密密钥对。在进行签名私
钥 的拥 有 性 证 明 时 ,如果由RA来实现,那么RA修改了主体名,popoSKInput域出现,并且包
含 了原 来 的 主 体 名 。否则,RA不修改主体名,那么pop域与请求者提交的主体名一致。详细
原 理 见 6 .5 .3 0
cer tR eq 是 C e rtR equest,它是一个certRegID、一个CertTemplate和controls的序列。对于这
个 事务 , ce rtR eg ID 可以是任何整数。
Ce rtT em pl ate 将 含 有如下信息:
ve rs ion 是 v3 (2 ) ;
GB / T 19 77 1- 20 05
su bje ct 是 用 户 的 名字;
pu bli cK ey 提 供 了新 证书的公钥,若用集中方式产生密钥对则不包括该字段;
ex ten si on s至 少 指 定了与证书有关的证书策略的OID.
如下 的 信 息可以被包含在CertTemplate中:
sig nin gA lg 指 定 了 首选签名算法;
su bje ct 指 定 了 潜 在证书持有者的可辨别名。
请 求 不 应该包括如下信息:
iss ue rU I D ;
su bje ct UI D ,
PK IP ro tection字段含有根据消息头和消息体的DER编码序列计算的RA的签名。
b) 从CA到RA的证书回应
CA 将 返 回以元素cp为PKIBody的PKIMessage给RAa
PK IH e ader包括如下信息:
pv no 是 1 ;
tra ns act ion ID 与 c r消息中的transactionlD相同;
me ss age T im e是 当 前精确到秒的时间;
sen d er 是 C A 的 可辨别名;
rec ip ien t 是 R A 的可辨别名;
pro te cti on Al g是 用 来保护该消息的签名算法的算法标识符。
如 果 se nderNonce在证书请求中被提供了,那么这个回应的消息头应该将其作为recipNonceo
PK IB od y元素cp是CertRepMessage类型。对于这个事务,CertRepMessage将含有唯一的
res pon se 字段。该response字段是一个certReqld,st atus和certifiedKeyPai:的序列。如果
CA 颁 发 了一个证书,消息体将含有如下消息:
cer tR eg Id 将 与 请 求中的certRegId匹配;
sta tu s将 是 gr an ted或者是grantedWithMods;
cer tif ie dK ey Pa ir 序列将至少含有一个字段— certificate,其将含有GB/T 16264.8 -
20 05 的 证 书 。
证 书 必 须满足如下性质:
ver sio n 号 应 该 是 v3(2);
pu bli cK ey 字 段 应该 与证书请求中相同或者是由CA所产生的公钥;
主 体 可 辨 别 名 应 该与证书请求中相同;
颁 发 者 名 字 应 该 是CA的可辨别名;
如 果 no tB ef or e出 现在证书请求中,证书应该从颁发日和notBefore所指之日的较晚者之
后 生 效 ;
如 果 no tA ft er 出 现在证书请求中,证书应该在该日或之前期满。
证 书 应 该包括如下扩展(extensions):
su bje ct Ke yI de nt ifier域;
在 ce rti fic at eP ol icies字段中至少包括一个证书策略的OID;
包括 K e yId en tifi er 字段的权威密钥标识符。
如果 在 证 书请求消息中指定一个特定的密钥标识符,那么证书的subjectKeyIdentifie:字段应
该 就 是 该密钥标识符。如果没有具体指明密钥标识符,CA将用主体公钥的低96位SHA-1
散列 函 数 作为subjectKeyIdentifier字段中的KeyIdentifier。散列函数是通过对证书中主体公
钥 字 段 的值(不包括标签和长度)进行计算得到的。
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
如 果 颁 发 者 的 证 书或是CRLs不提供X.5 00目录服务,证书就应含有issuerAltName扩展中
的 U RL s 以 及 C RLDistributionPoints扩展中的distributionPoint字段。
如果 sta tu s是 g ra nted和grantedWi thMods,那么failInfo字段可以不存在。
若 CA 拒 绝 了 请 求,则正文中包含以下信息:
sta tu s将 是 re jec te d;
fai lIn fo 字 段 包 含相 应 的 错 误 码:
. b ad Al g说 明 CA 不 能 验 证签名,因为算法标识符无法识别或者不支持,
令 b ad M ess ag eC he ck 说 明 PKIProtection字段中的mac被检验,但是不匹配,
. b ad Po P 说 明 po po Sig ni ngKey字段中的签名已经被检验,但是不匹配,
. b ad Re qu es t说 明 响 应 者 不允许或不支持该事务请求,
. ba dT im e 说 明 消 息 头 中的messageTime字段中的时间与响应者的系统时间差别
太 大 ;
如果 s ta tus 是 re jec ted,那么certifiedKeyPai:字段可以不出现。
PK IP ro te cti on 字 段含有根据消息头和消息体的DER编码序列计算的CA的签名。
c) 确 认消息
一 旦 接 收 到 cp ,R A应该产生PKIConfirm消息。确认消息的PKIHeader中的数据除了messag
eT im e 之 外 ,应 该与证书请求消息的PKIHeader中的数据相同。
PK IP ro te cti on 字 段含有根据消息头和消息体的DER编码序列计算的RA的签名。
6.6.3 新实体的自我注册请求
一个 新 的 实体如果从来没有从一个特定CA获得证书,他可以直接向那个CA申请一个新的证书。
请求实体生成一个PKI it消息来请求新证书,并在消息中包含和证书请求中公钥相对应的私钥的拥有
证明。实体利用RA提供的一个秘密密钥和SHA-1 HMAC算法保护PKI消息。
如果 CA 接受自我注册请求,它将返回一个ip消息给证书持有者。该消息包含证书或者事务出错
的原因代码。
a) RA 与实体的带外事务
自我 注 册 申请 证 书的过程以RA和实体之间交换一个共享的秘密密钥开始。通过从共享的秘
密 中 产 生 一 个 消 息认证码,CA能够对实体进行认证。
这 里 不 指 定 这 个 带外事务的明确的内容和格式。但是秘密的密钥和可信CA的公钥信息应该
以一 种 可 信 的 方 式传递给实体。
b) 从 证书持有者到CA的自我注册请求
请求 者 建 立 一 个 P KIBody为i:的PKIMessageoP KIHeader包括如下信息:
pv no 是 1 ;
me ssa ge Ti me 是 当 前 精 确 到 秒的时间;
sen d er 是 请 求 者 的 可 辨 别 名或一个电子邮件地址;
rec ipi en t是 C A 的 可 辨 别 名 ;
pro tec tio nA lg 是 用来 保 护 消 息 的签名算法的算法标识符。
这个 消 息 的 消 息 体 是CertRegMessages,它是一个或多个CertRegMessage字段的序列。对于
这个 事 务 , Ce rtR e gMessages是一个CertRegMessage的序V}1l。这个CertRegMessage将包括
如下 信 息 :
cer tR eq 含 有 请 求 者希 望 包 含 在证书中的信息;
po po SK In pu t 包 含 公 钥 的 mac值;
po p证 明 了对 证 书 私 钥 的 拥有。
其 中 po p域 通 过 与 CertTemplate中的公钥相对应的私钥来产生,产生pop的输入数据包括
GB / T 19 77 1- 20 05
pop oS K Input中的公钥mac值和CertTemplate中的公钥。
cer tR eq 是一个CertRequest,它是一个certReglD,一个CertTemplate和controls的序列。对
于 这 个 事务:
cer tR eg ID 是 任 何 整数;
cer tT em pl ate 是 一 个CertTemplate,其至少包括为新证书提供公钥的publicKey字段;
con tro ls 被省 略 。
Ce rtT e mplate将含有如下信息:
ver si on 是 v 3( 2) ;
pub lic Ke y提 供 了 新 证书的公钥。
如下 的 信 息可以被包含在CertTemplate中:
sig nin gA lg 指 定了 首 选签名算法;
su bje ct 指 定 了 潜 在证书持有者的可辨别名;
ex ten si on s至 少 指 定了与证书有关的证书策略的OID.
请 求 不 应该包括如下信息:
iss ue rU I D ;
su bje ct UI D ,
PK IP rot ection域包含一个请求者利用从RA获得的秘密产生的值。实体利用RA提供的秘
密密 钥 产 生一个96bit的SHA1-HMAC,p rotectionAlg域应该设成SHAT-HMAC,P KIProtec
tio n 的值应该是96位的消息认证码。计算PKIProtection的输入是如下数据结构的DER
编 码 :
Pro te cte dPart::=SEQUENCE{
PK I H ea de r,
PK IB od y}
c) 从CA到证书请求者的自我注册请求的回应
CA 将 返 回给证书持有者一个PKIBody为ip的PKIMessage消息。PKIHeader包含如下
信 息 :
pv no 是 1 ;
me ssa ge Ti me 是 当 前精确到秒的时间;
sen d er 是 C A 的 可辨别名;
rec ipi en t是 证 书 请 求消息头中sender域的值;
pro te cti on Al g是 用 来保护消息的签名算法的算法标识符。
如 果 it 消息中提供了transactionID,这个回应的消息头中将包括同样的transactionID。如果
it 消 息 中提供了senderNo nce,这个回应的消息头中将包含recipNonceo
PK IB od y元素ip是CertRepMessage类型。如果CA颁发了一个证书,消息体将含有如下
信 息 :
sta tu s将 是 gr an ted或者是grantedWithMods;
cer tif ica te 包 含新 的GB/T 16264.8- 2005的证书。
如果 sta tus是granted或者是grantedWithMods,failInfo域可以不存在。
如 果 C A拒绝了请求,消息体将含有如下信息:
sta tu s将 是 r eje cte d;
fai lIn fo 包 含 适 当 的错误代码:
. b ad Al g说 明 CA不能验证签名,因为算法标识符无法识别或者不支持,
今 b ad Me ss ag eC heck说明PKIProtection字段中的mac被检验,但是不匹配,
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
今 b ad Po P 说 明 po po Sig ni ngKey字段中的签名已经被检验,但是不匹配,
令 b ad R e q u e st 说 明 响 应 者 不 允 许或不支持该事务请求,
. b ad T im e 说 明 消 息 头 中的messageTime字段中的时间与响应者的系统时间差别
太 大 ,
. b ad Ce rtI D 表 明 Ce rtD e tails中的信息无法确定一个未过期、未撤销的证书;
如 果 st atu s 是 r句 ected,ce rtificate域可能不存在,如果存在证书应该遵从于6.2 .1中定义的证
书 轮 廓 。
证 书 应 该 包 括 如 下扩展(extensions);
su bje ct Ke yI de nt ifi er 域 ;
在 ce rtif ica te Po lic ies 字 段 中 至少包括一个证书策略的OID;
包括 Ke yl den ti fie :字 段 的 权 威密钥标识符。
如 果 在 it 消 息 中 指定一个特定的密钥标识符,那么证书的subjectKeyIdentifier字段应该就是
该密 钥 标 识 符 。 如 果没有具体指明密钥标识符,CA将用主体公钥的低96位SHA-1散列函数
作为 su bje ctK e yId entifier字段中的Keyldentifier。散列函数是对证书中主体公钥字段的值
(不 包 括 标 签 和 长 度)计算得到的。
如果 it消 息 中 包 含 了除subjectKeyIdentifier之外的其他扩展,CA将修改或者忽略该扩展。
如 果 颁 发 者 的 证 书或是CRLs不提供X.5 00目录服务,证书就应含有issuerAltName扩展中
的 U RI .s 以 及 C RI.DistributionPoints扩展中的distributionPoint字段。
PK IP ro te cti on 字 段含有根据消息头和消息体的DER编码序列计算的CA的签名。
d) 确 认 消息
一旦 接 收 到 i p, 证 书持有者应该产生一个PKIConfirm消息。确认消息的PKIHeade:中的数
据 除 了 m es sag eT ime之外,应该与证书请求消息的PKIHeader中的数据相同。
如 果 请 求 被 接 受 ,PKIProtection域包含证书持有者的数字签名,利用与新的签名证书对应的
私钥 对 消 息 头 和 消 息体的DER编码序列计算签名。如果请求被拒绝,PKIProtection域包含
SH A -1 H M A C ,利 用共享秘密对消息头和消息体的DER编码计算。
一 旦 接 收 到 P KI Confirm,C A应该产生一个PKIConfirm消息。确认消息的PKIHeader中的
数 据 除 了 m es sag eTime之外,应该与证书请求消息的PKIHeader中的数据相同。
PK IP ro te cti on 字 段含有根据消息头和消息体的DER编码序列计算的CA的签名。
6.6.4 已知实体的自我注册请求
一 个 实 体不是当前的证书持有者,但是以前曾经从一个特定CA获得过证书,他可以直接向那个
CA申请一个新的证书。请求实体生成一个PKI cr消息来请求新证书,并在消息中包含与证书请求中
公钥所对应的私钥的拥有证明。实体利用RA提供的一个秘密密钥和SHA-1 HMAC算法保护PKI
消息。
如 果 CA 接受自我注册请求,它将返回一个cp消息给证书持有者。该消息包含证书或者事务出错
的原因代码。
a) RA 与实体的带外事务
自我 注 册 申请 证 书的过程以RA传递一个共享的秘密密钥给实体开始。通过从共享的秘密中
产 生 的 一 个 消 息 认证码,CA能够对实体进行认证。
这 里 不 指 定 这 个 带外事务的明确的内容和格式。但是秘密的密钥和可信CA的公钥信息应该
以一 种 可 信 的 方 式 传递给实体。
b) 从 证书持有者到CA的自我注册请求
请 求 者 建 立 一 个 PKIBody为cr的PKIMessageoP KIHeader包括如下信息:
pv no 是 1 ;
GB JT 1 97 71 - 20 05
me ssa ge Ti me 是 当 前精确到秒的时间;
sen de r 是 请 求 者 的 可 辨别名或一个电子邮件地址;
rec ip ien t 是 C A 的 可 辨别名;
pro te cti on Al g是 用 来保护消息的签名算法的算法标识符。
这 个 消 息的消息体是CertRegMessages,它是一个或多个CertRegMessage字段的序列。对于
这 个 事 务,CertRegMessages是一个CertRegMessage的序列。这个CertRegMessage将包括
如 下 信 息:
cer tR eq 含 有 请 求者 希望包含在证书中的信息;
pop oS KIn pu t包 含 公 钥的ma。值;
opp 证 明 了 对证 书 私 钥的拥有。
其 中 PO P域通过与CertTemplate中的公钥相对应的私钥来产生,产生pop的输人数据包括
po po SK Input中的公钥mac值和CertTemplate中的公钥。
cer tR eq 是一个CertRequest,它是一个certRegID,一个CertTemplate和controls的序列。对
于 这 个 事务:
cer tRe gI D是 任 何 整 数;
Cer tTe m pla te 是一 个 CertTemplate,其至少包括为新证书提供公钥的publicKey字段。
Ce rtT em plate将含有如下信息:
ve rsi on 是 v 3( 2) ;
pu bli cK ey 提 供 了 新证书的公钥。
如 下 的信 息可以被包含在CertTemplate中:
sig nin gA lg 指 定 了 首选签名算法;
su bje ct 指 定 了 潜 在证书持有者的可辨别名。
ex ten si on s至 少 指 定了与证书有关的证书策略的OIDo
请 求 不 应该包括如下信息:
iss ue rU I D ;
su bje ct UI D ,
PK IP ro tection域包含一个请求者利用从RA获得的秘密产生的值。实体利用RA提供的秘
密密 钥 产 生一个96bit的SHA1-HMAC,p rotectionAlg域应该设成SHAI-HMAC,PK IProtec
tio n 的值应该是96位的消息认证码。计算PKIProtection的输人是如下数据结构的DER
编 码 :
Pro te cte dPart::二SEQUENCE{
PK I H ea de r,
PK IB od y}
c) 从CA到证书请求者的自我注册请求的回应
CA 将 返 回给证书持有者一个PKIBody为cp的PKIMessage消息。PKIHeader包含如下
信 息 :
pv no 是 I ;
me ss age T im e是 当 前精确到秒的时间;
sen d er 是 C A 的 可辨别名;
rec ipi en t是 证 书 请 求消息头中sender域的值;
pro te cti on AI g是 用 来保护消息的签名算法的算法标识符。
如 果 cr 消息中提供了transactionID,这个回应的消息头中将包括同样的transactionID。如果
cr 消息 中 提供了senderNonce,这个回应的消息头中将包含recipNonceo
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
PK IB od y元 素 cp 是CertRepMessage类型。如果CA颁发了一个证书,消息体将含有如下
信 息 :
sta tu s将 是 gr an ted 或 者 是 grantedW ithM ods;
cer tif ica te 包 含新 的 GB /T 1 6264.8-2005的证书。
如 果 st atu s 是 gr anted或者是granted WithMods,fa illnfo域可以不存在。
如 果 CA 拒 绝 了 请求,消息体将含有如下信息:
sta tu s将 是 rej ec te d;
fai lln fo 包 含 适 当 的 错 误 代 码:
. b ad A lg 说 明 C A 不 能 验证签名,因为算法标识符无法识别或者不支持,
今 b ad Me ss ag eC he ck 说 明 PKIProtection字段中的mac被检验,但是不匹配,
令 b ad Po P 说 明 po po Sig ni ngKey字段中的签名已经被检验,但是不匹配,
. b ad Re qu es t说 明 响 应 者 不允许或不支持该事务请求,
令 b ad T im e 说 明 消 息 头 中的messageTime字段中的时间与响应者的系统时间差别
太 大 ,
令 b ad C er tID 表 明 Ce rtD etails中的信息无法确定一个未过期、未撤销的证书;
如果 sta tu s是 r 哟e cted,ce rtificate域可能不存在,如果存在证书应该遵从于6.2. 1 中定义的证
书 轮 廓 。
证书 应 该 包 括 如 下 扩展(extensions):
su bje ct Ke y1 de nt ifi er 域 ;
在 ce rtif ica te Po lic ies 字 段 中 至少包括一个证书策略的()ID;
包括 Ke yl den ti fie r字 段 的 权 威密钥标识符。
如果 在 。r 消息 中 指 定一个特定的密钥标识符,那么证书的subjectKey1dentifier字段应该就是
该 密 钥 标 识 符 。 如果没有具体指明密钥标识符,CA将用主体公钥的低96位SHA-1散列函数
作为 s ub jec tK ey1 de ntifier字段中的Keyldentifier。散列函数是对证书中主体公钥字段的值
(不 包 括 标 签 和 长 度)计算得到的。
如果 cr 消 息 中包 含 了除subjectKey1dentifier之外的其他扩展,CA将修改或者忽略该扩展。
如 果 颁 发 者 的 证 书或是CRI.s不提供X.5 00目录服务,证书就应含有issuerAltName扩展中
的 U RL s 以 及 C RLDistributionPoints扩展中的distributionPoint字段。
PK IP ro te cti on 字 段含有根据消息头和消息体的DER编码序列计算的CA的签名。
d> 确 认消息
一 旦 接 收 到 cp ,证 书持有者应该产生一个PKIConfirm消息。确认消息的PKIHeader中的数
据 除 了 m es sag eT ime之外,应该与证书请求消息的PKIHeader中的数据相同。
如 果 请 求 被 接 受 ,PKIProtection域包含证书持有者的数字签名,利用与新的签名证书对应的
私 钥 对 消 息 头 和 消息体的DER编码序列计算签名。如果请求被拒绝,PKIProtection域包含
SH A -1 H M A C, 利用共享秘密对消息头和消息体的DER编码计算。
一 旦 接 收 到 P KI Confirm,CA应该产生一个PKIConfirm消息。确认消息的PKIHeader中的
数 据 除 了 m es sa geTime之外,应该与证书请求消息的PKIHeader中的数据相同。
PK IP ro te cti on 字 段含有根据消息头和消息体的DER编码序列计算的CA的签名。
6.6.5 证书更新
拥 有 当 前有效(指在有效期内、未被撤销)证书的PKI实体可以直接向该证书的签发CA要求签发
一份新的证书。PKI实体生成PKI kr(Key update Request密钥更新申请)消息,信息中包括了证书申
请和相应的POP。然后PKI实体使用有效证书的对应私钥对PKI kr消息进行签名。
如果 CA 的CPS支持证书更新,则CA返回kp( Keyu pdater esponse密钥更新响应)消息。kp消
GB / T 19 77 1- 20 05
息包含了新生成的证书或者是事务失败的代码。
如 果 新 证书成功生成,则可能还有两个可选的消息。分别是:PKI实体在收到新的证书后,给CA
发出确认;然后CA也可回应一个确认消息。
a) 从 证书持有者到CA的证书更新申请
证 书 持 有 者 生 成 PKIBody是kr的PKIMessage,P KIMessage中的PKIHeader包括了如下
信 息 :
pv no 是 1 ;
me ss age T im e是 精 度 到 秒 的 当前时间;
sen d er 是 证 书 持 有 者 的 可 辨别名;
rec ip ien t 是 C A 的 可 辨 别 名;
pro te cti on Al g是 用 于 保 护 消 息签名算法ID.
消息 体 是 C e rtR eg Messages,是一个或者多个CertRegMessage组成的序列。对于证书更新事
务 ,Ce rt Re gM es sa ges只能是包括了一个CertRegMessage的序列。在消息CertRegMessage
中 包 括 了 如 下 信 息:
cer tR eq 包 含 了 申请 者要 求 包 括在证书中的各种信息;
po p是 新 证 书 公 钥 的 对 应 的pop证明。
po p必 须 是 由 p ub licKey域的公钥对应的私钥产生的。
cer tR eq 是 C e rtR equest,C ertRequest是由一个certRegID、一个certTemplate和controls所组
成 的 序 列 。 对 于 证书更新事务:
ver si on 必 须 是 v 3( 2) ;
pu bli cK ey 中 是 新 证 书的 公 钥 。
Ce rtT em p lat e中 可 能包括了如下信息:
sig nin gA lg 指 明 了 首 选 的 签 名算法;
sub je ct 则 是 预 期 的 证 书 持 有者的可辨别名。
如果 消 息 中 没 有 s igningAlg,那么CA必须使用终端实体的公钥对应的算法签名。
申请 中 不 应 该 包 括如下信息:
iss ue rU ID ;
sub je ct UI D .
PK IP ro te cti on 域 是使用当前有效证书的对应私钥对消息头和消息体的DER编码信息的签名
结 果 。
b) 从 CA到证书持有者的证书更新响应
CA 生 成 P KI Bo dy 是kp的PKIMessage,PK IMessage中的PKIHeader包括了如下信息:
pv no 是 1 ;
me ss ag eT im e 是 精 度 到 秒 的当前时间;
sen d er 是 C A 的 可 辨 别 名 ;
rec ip ien t 是 证 书 持 有 者 的 可辨别名,也就是kr消息的sender;
pro te cti on Al g是 用 于 保 护 消 息签名算法IDo
如 果 在 kr 消 息 中 具有transtionID,则CA回应消息的消息头中包括同样的transtionID。如果
在 se nd er No n ce 消息中具有senderNonce,则CA回应消息的消息头中应该包括同样的recip-
No n ce a
在 PK IB od y 中 ,是 kp元素。kp是CertRepMessage格式。如果CA签发了新证书,在消息体
中应 包 括 如 下 信 息:
sta tu s是 gr an ted 或 者 gra ntedWithMods;
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
cer tif ic ate 是 新 生 成 的 G B /T 1 6264.8 -2005证书。
新 生 成 的 证 书 应 该包括如下扩展:
su bje ct Ke yI de nt ifi er 域 ;
在 ce rtif ica te Po lic ies 字 段 中 至少包括一个证书策略OID;
在 Ke yId en tifi er 域 中有 一 个 机 构密钥标识符。
cer tif ica teP o lici es 扩展应该和当前有效证书一致。如果在kr消息中包含了密钥标识符信息,
则 证 书 中 应 该 将 其包含在subjectKeyIdentifier;如果没有提供密钥标识符信息,则CA应该对
证 书公 钥 信 息 计 算 低96b it的SHA-1摘要值作为subjectKeyIdentifier的值。摘要值是对证
书 中 的 主 体 公 钥 进行计算的,不包括标签和长度。
如果 kr 信 息 中包 括 了subjectKeyIdentifier之后的扩展,则CA可以对其他的扩展信息进行修
改 或 者 忽 略 。
如 果 发 布 者 的 证 书和CRL不能够从已知的X.5 00目录中得到,则新证书中应该在issuerAlt-
Na m e中 包 括 U RLs信息,在CRLDistributionPoints控制中包括distributionPoint域。
如 果 st atu s 是 gr anted或者grantedWithMods,则failInfo域不存在。
如 果 CA 拒 绝 用 户的申请,消息体包括如下信息:
sta tu s是 re jec te d;
fai lIn fo 包 括 了合 适 的 代 码 , 可以是:
. b ad Al g表 示 C A 不 支 持 或者不认识kr指定的签名算法,
令 b ad Po p表 示 pop oS ig nin gKey域中的签名有误,
令 b ad M ess ag eC he ck 表 示 PKIProtection域中的签名有误,
. b ad Re qu es t表 示 回 应 者 不支持或者不允许该事务,
. b ad Ti me 表 示 消 息 头 中 的messageTime的时间和回应者的系统时间相差太大,
令 b ad Ce rtI d表 示 证 书 序 号 不能是serial域中所填的非零值;
如 果 st atu s 是 re jected,ce rtifcate域不存在。
PK IP ro tec tio n域 包 含了CA对于消息头和消息体的DER编码的签名。
c) 确 认消息
收 到 kp 的 时 候 , 证书持有者应该产生PKIConfirm消息。PKIHeader中的信息和利用RA向
CA 申 请 证 书 的 情 况下的PKIHeader一致,除了messageTime是当前时间。
如 果 证 书 更 新 申 请被接受,则PKIProtection是证书持有者使用新证书的对应私钥,对于消息
头 和 消 息 体 的 D ER编码的签名。如果申请被拒绝,则PKIProtection是证书持有者使用当前
有 效 证 书 的 对 应 私钥,对于消息头和消息体的DER编码的签名。
收 到 PK I Co nf irm 的时候,CA应该产生PKIConfirm消息。PKIHeader中的信息和kp一致,
除 了 me ss age T im e是当前时间。
PK IP ro te cti on 是 CA对于消息头和消息体的DER编码的签名。
6.6.6 PKCS# 1 0自我注册请求
目前 不 是 证书持有者的实体可以用RFC 2314定义的证书请求语句直接向CA申请证书。请求实
体产生PKCSReq类型的PKIMessage消息来申请证书,在证书请求中的正文里包括相应私钥的拥有证
明,并用RA以带外方式提供的密钥来加密该PKIMessage.
CA 返 回 一个证书请求响应消息给证书申请者。该消息将包含证书或处理失败原因代码。
证 书 请 求者和RA之间需用带外方式完成一个秘密消息的交换。
a) 从 证书持有者到CA的自我注册请求
请 求 者 产 生 一 个 包含PKIBody元素p10cr的PKIMessage,P KIHeader包含以下信息:
pv no 是 1 ;
GB / T 19 77 1- 20 05
me ssa ge Ti me 当 前 精确到秒时间;
sen de r 请 求 者 的 可辨别名或电子邮件地址;
rec ipie nt C A 的 可 辨 别名;
pro te cti on Al g用 来 保护该消息的签名算法的算法标识符。
PK IB od y是PKCS10CertRegMessages类型,此类型是一个certificationRequestlnfo,si gnatur
eA lg orithm和signature的序列。certificationRequestinfo包含以下信息:
ve rs ion 是 V 3( 2 );
su bje ct 当 且 仅 当 serial为零时才出现,指明证书持有者的可辨别名;
sub jec tP ub licK ey In fo指明了新证书的公钥和相应的算法标识符。
sig na tur eAlgorithm字段包含用来生成signature字段的私钥的相应算法标识符;签名是对
DE R 编 码后的certficationRequestInfo进行的。
PK IP ro tection字段包含一个请求者用从RA获得的秘密信息生成的一个值。实体用RA提
供 的密 钥 产生一个MAC.p rotectionAlg字段应为所用的消息认证算法的OID,并且
PK IP ro tection的值就是消息认证码。PKIProtection的输人是如下数据结构的DER编码:
Pr ote ct edPart::=SEQUENCE{
he ad er P K IHeader,
bo dy P K IB od y}
b) 从CA到证书申请者的PKCS证书请求响应
CA 会 返 回一个包含PKIBody元素cp的PKIMessage给证书持有者。PKIHeader包含以下
信 息 :
pv no 是 1 ;
me ssa ge Ti me 当 前 精确到秒的时间;
sen de r C A 的 可 辨 别名;
rec ipi en t证 书 请 求 头消息中的sender的值;
pro te cti on AI g用 来 保护该消息的签名算法的算法标识符。
如果 PK CSReq中有transactionID,则响应的PKIHeader中应包含相同的transactionIDo
PK IB od y的元素是一个CerRepMessage类型的cp。若CA发放了证书,PKIBody将包含以
下 信 息 :
sta tu s为 gr an ted 或grantedWithmods,
cer tif ica te 包 含 新 的GB/T 16264.8 -2005证书。
若 p1 0c r消息中指定了特定的密钥标识符,证书将在subjectKeyIdentifier字段包含该密钥标
识符 。 如 果没有指明具体的密钥标识符,CA将用主体公钥的低96位SHA-1散列函数作为
sub jec tK eyIdentifier字段中的Keyldentifier。散列函数是对证书中主体公钥字段的值(不包
括 标 签 和长度)计算得到的。
如果 sta tus为granted或grantedWithmods,fa illnfo将不出现;若CA拒绝请求,正文将包含
以 下 信 息:
sta tu s为 re jec te d;
fai lln fo 包 含 相应 的错误代码:
. b ad Al g指 明 算 法的标识符不被识别或不被支持,因此CA无法验证签名,
今 b ad po p指 明 pkIOcr的signature字段的签名被校验,但是不匹配,
令 b ad Me ss ag eC heck指明PKIMessage的PKIProtection字段里的MAC被拒绝,
. b adr eq ues t指 明 响应者不允许或不支持请求,
. b ad tim e 指 明 消息头中的messageTime字段中的时间与响应者的系统时间差别
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
太 大 ;
若 st atu s 字 段 为 r哟ected,ce rtifitate字段将不出现。
证 书 还 要 包 括 以 下扩展:
一 个 su bj ec tK ey Id en tif ier 字段;
在 cer tif ica te Po lici es 字 段 中 至少包括一个证书策略OID;
一个 au tho rit y 密钥 标 识 符 , 包括一个Keyldentifier字段。
若 cr 消 息 中 还 包 括除subjectKeyIdentifier以外的其他扩展,CA就可以修改或忽略请求
扩 展 。
如 果 颁 发 者 的 证 书或是CRLs不提供X.5 00目录服务,证书就应含有issuerAltName扩展中
的 U RL s 以 及 C RL D istributionPoints扩展中的distributionPoint字段。
PK IP ro tec tio n字 段 包含CA的签名,在消息头和消息体的DER编码序列上签名。
6.6.7 撤销请求
证 书 持 有者可以请求撤销自己的证书。证书持有者产生一个RevReq消息,对该消息进行签名并
发送给相应RA,并在RA审查通过用户的身份后向CA发出相应撤销信息。该签名必须用未过期、未
被撤销的签名证书的相应私钥产生(可以是要撤销的证书)o RevReq消息要标识出想撤销的证书以及
要撤销的原因。CA回应RA一个RevRep消息,RA再回应证书持有者相应的RevRep消息。
如果 消 息 rr( RevReq)中包含transactionlD,则CA和RA所响应的rp( RevRep)消息中也应包含
相同的transactinlD,注意其中从证书持有者所发出的rr和RA所发出的rr消息中的transactinlD可
以不同。rp消息至少要包含status字段以反映请求的状态和revDetails字段以表示欲撤销的证书。
a) 从 证书持有者到RA的撤销请求
证书 持 有 者 生 成 一 个包含一个PKIBody元素rr的PKIMessageoP KIHeader包含以下信息:
pv no 是 1 ;
tra ns act ion ID 与 终 端 实 体 名 一起唯一标识一个终端实体与RA之间事务的整数;
me ssa ge Ti me 为 当 前 精 确 到 秒的时间;
sen d er 为 证 书 持 有 者 的 可 辨别名;
rec ip ien t 为 R A 的 可 辨 别 名;
pro tec tio nA lg 为 保护 消 息 而 使 用的签名算法标识符。
消 息 的 正 文 P KI Body为RevRegContent,R evRegContent是RevDetails的序列。RevDetails
是 由 Ce rt De ta ils 和三个可选字段组成的序列:原因标志;怀疑或丢失的日期和时间;以及
crI En try De ta ils (一 个CRLE ntry扩展的序列)。CertDetails被定义为一个CertTemplate。在
本 标准 中 , Re vR eg Content是一个RevDetails的序列。CertDetails,最少包括以下信息:
ser ia l证 书 序 列 号 ;
iss ue r证 书 发放 者 的 标 识 名。
或 是
sub je ct 证 书 持有 者 的 标 识 名 ;
iss ue r证 书 发 放 者 的 标 识 名。
Ce rtD eta ils 还 可 在 extensions字段中包含一个subjectKeyldentifiero(如果请求者希望撤销
颁 发 给 某 个 主 体 的所有证书,CertDetails就应仅含有subject和issuer。也就是说,仅希望撤
销单 个 证 书 的 请求 就 只含有相应的序列号或是subjectKeyldentifier)。
Re vD et ai ls 要 包 括带有reasonCode扩展的crlEntryDetails,也可以包括invalidityDate扩展
来 说明 何 时 该 证 书 作废。原因代码也可以不是removeFromCRI.,
PK IP ro tec tio n 字 段含有请求者的签名,即对头和正文的DER编码进行签名。终端实体要用
相 应 C A 所 颁 发 的当前有效签名证书的相应私钥进行签名。
GB / T 19 77 1- 20 05
b) 从RA到CA的撤销请求
RA 或 证 书持有者生成一个包含一个PKIBody元素rr的PKIMessageoP KIHeader包含以下
信 息 :
pv no 是 1 ;
tra ns act ion lD 标 识 RA名一起唯一标识一个RA与CA之间事务的整数;
me ssa ge Ti me 为 当 前精确到秒的时间;
sen de r 为 R A 的 可辨别名;
rec ipi en t为 C A 的 可辨别名;
pro tec tio nA lg 为 保护 消息而使用的签名算法标识符。
消 息 体 与从证书持有者到RA的撤销请求相同。
PK IP ro tection字段含有RA的签名,即对头和正文的DER编码进行签名。RA要用相应CA
所 颁 发 的当前有效签名证书的相应私钥进行签名。
c) 从CA到RA的撤销响应
CA 返 回 一个含有PKIBody元素rp的PKIMessage给请求者。PKIHeader包含以下信息:
pv no 是 1 ;
tra ns ac tio nl D 和 从RA到CA的撤销请求rr消息中的transactionlD字段一样;
me ssa ge Ti me 为 当 前精确到秒的时间;
sen de r为 C A 的 可 辨别名;
rec ipi en t为 R A 的 可辨别名;
pro te cti on Al g为 保 护消息而使用的签名算法标识符。
如果 相 应从RA到CA的撤销请求中有senderNo nce,则响应的PKIHeader中应把它作为
rec ip No nce。
PK IBo dy 是RpContent,如果CA撤销了证书,正文将包含以下信息:
sta tu s是 gr an te d或是grantedWithMods;
rev D eta il s将 包 含 已撤销证书的CertId;
如 果 st at us 是 g ranted或grantedWithMods,fa illnfo字段也可以不出现。
如 果 C A拒绝了请求,正文就要包括如下信息:
sta tu s为 re jec te d;
fai lln fo 包 含 相应 的 失败代码:
. b ad Al g指 明 CA不能验证签名,因为算法的标识符不被识别或不被支持,
令 b ad M ess ag eC heck指明PKIProtection字段里的签名得到验证,但是不匹配,
令 b ad Re qu es t字 段指明响应者不允许或不支持请求,
令 b ad T im e 字 段指明消息头中的messageTime字段中的时间与响应者的系统时间差别
太 大 ,
令 b ad Ce rtI D 表 明CertDetails中的信息无法确定一个未过期、未撤销的证书;
对于 能 够 确定有问题的证书,revDetails将包含这个被拒绝撤销证书的CertId。PKIProtectio
n 字 段包含CA的签名,即对头和正文的DER编码进行签名。若CA生成CRLs,并且撤销
请 求 被 接受,CRL将有以下值:
use rC er tif ica te 字 段中的被撤销证书的序列号;
rev oc ati on Da te 收 到撤销请求的日期和时间;
crl En try Ex te ns ion s要出现并包括:
令 R ev De ta ils 字 段中的:easonCode,除非CA的策略有专门规定,
今 ( 可 选 的 ) R evDetails字段中的badSinceDate扩展可以是invalidaityDateo
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
d) 从 RA到证书持有者的撤销响应
RA 在 收 到 CA 的回应消息后,返回一个含有PKIBody元素rp的PKIMessage给证书持
有 者 。
PK IH e ad er 包 含 以下信息:
pv no 是 1 ;
tra ns ac tio nl D 和 从 R A 到 C A 的撤销请求rr消息中的transactionlD字段一样;
me ssa ge Ti me 为 当 前 精 确 到 秒的时间;
sen de r 为 CA 的 可 辨 别 名 ;
rec ipi en t为 R A 的 可 辨 别 名 ;
pro tec tio nA lg 为 保 护消 息 而 使 用的签名算法标识符。
如果 相 应 的 从 证 书 持有者到RA的撤销请求消息中有senderNonce,则响应的PKIHeader中
应把 它 作 为 r ec ipN once。
PK IB od y 是 R pC ontent,内容与从CA到RA的撤销响应相同,PKIProtection字段包含RA
的签 名 ,即 对 头 和 正文的DER编码进行签名。
6.6.8 集中产生密钥对和密钥管理证书申请
拥 有 当 前有效证书的PKI实体可以向该证书的签发CA提出申请,申请产生加密密钥对并签发相
应的证书。下面以RSA为例说明申请过程,在国内应用时,应使用国家密码管理主管部门审核批准的
相关算法。发出申请的实体:
产 生 临 时 的 密 钥 管理密钥;
生成 PK I c r( 证 书 申请certificater equest)消息,申请RSA密钥管理证书,cr消息中包括了上
一步的临时密钥;
利 用 当 前 有 效 证 书的对应私钥,对消息进行签名;
发送 给 CA o
如 果 CA 的CPS支持集中产生加密密钥对,则CA执行如下操作:
CA 按 申 请 消 息 的 要求产生密钥对,签发密钥管理证书;
申请 消 息 使 用 临 时 RSA密钥;
CA 产 生 对 称 密 钥 ;
利 用 对 称 密 钥 加 密新产生的私钥;
使 用 临 时 R SA 公 钥加密对称密钥;
产 生 和 返 回 cp (c ertificater esponse证书响应)消息给证书持有者。cp消息中包括了新生成的
证书和加密后的私钥,或者是事务失败的代码。
a) 集 中 产生密钥对申请
证 书持 有 者 产 生 证 书申请消息:PKIMessage消息中的PKIBody部分是cr元素。PKIHeader
包 括 了 如 下 信 息 :
pv no 是 1 ;
me ss ag eT im e 是 当 前 时 间 ,精确到秒;
sen de r 是 证 书 持 有 者 的 可 辨别名;
rec ip ien t 是 CA 的 可 辨 别 名;
pro te cti on Al g是 用 于 保 护 消 息签名算法ID.
消息 体 是 C e rtR eg Messages,是一个或者多个CertRegMessage组成的序列。对于集中产生密
钥 对 申 请 和 密 钥 管理证书事务,CertRegMessages只能是包括了一个CertRegMessage的序
列 。 在 消 息 C ert RegMessage中包括了如下信息:
cer tR eq 包 含 了 申请 者 要 求 包 括在证书中的各种信息。
GB / T 19 77 1- 20 05
cer tR eq 是CertRequest,C ertRequest是由一个certRegID、一个certTemplate和controls所组
成 的 序 列。对于集中产生密钥对申请和密钥管理证书事务:
cer tR eg ID 是 任 意 整数;
cer tT em p la te 是 一个CertTemplate;
con tr ol s包 含 了 protocolEncrKey控制。protocolEncrKey registrationc ontrol的值是临
时 公钥 的 值和参数(如果需要),以及算法OID.
Ce rtT em plate包含了如下信息:
ve rs ion 必 须 是 v3 ( 2);
pub lic Ke y指 明 了 算 法和可选的参数,说明了所申请的密钥。
Cer tT em plate中可能包括了如下信息:
sig nin gA lg 指 明 了 首选的签名算法。
如果 没 有 signingAlg,则CA应该使用protectionAlg中说明的签名算法。
申请 消 息 里面不应该包括如下信息:
iss u er U ID ;
su bje ct UI D ,
PK IP ro tection域是使用当前有效证书的对应私钥对消息头和消息体的DER编码信息的签名
结 果 。
b) 集中产生密钥对回应
CA 返 回 密钥更新(PKIMessage,PK IBody是cp元素)消息给证书持有者。
PK IH e ader包括了如下信息:
pv no 是 1 ;
me ssa ge T ime 是 当 前时间,精度到秒;
sen de r是 CA 的 可 辨别名;
rec ip ien t 是 证 书 持有者的可辨别名,也就是cr消息的sender;
pro te cti on Al g是 用 于保护消息签名算法IDo
如果 在 c r消息中具有‘ranstionID,则CA回应消息的消息头中包括同样的transtionID。如果
在 se nd erNo nce消息中具有senderNo nce,则CA回应消息的消息头中应该包括同样的recip-
N on ce o
PK IB od y是cp元素。也就是CertRepMessage格式。如果CA签发了新证书,在消息体中应
包 括 如 下信息:
sta tu s是 gr an ted 或者是grantedWithMods;
cer tif ica te 包 括 了 新签发的GB/T 16264.8 -2005证书;
cer tif ied Ke yP ai :必 须存在。
cer tifi ed KeyPai:将在certOrEncCert域中包括证书,在privateKey域中包括加密过的私钥。
申请 者 使 用临时RSA公钥,privateKey域应该包括symmAlg,encSymmKey和encValuea
sy mm A lg 应 该 包 括tDEA-ecb的OID,k eying0ption应该是option-2(表示K1和K2是
独 立 产 生的,K3= K1);
en cSy m mK ey 是 对 CA产生的对称密钥的加密计算结果,使用临时RSA公钥进行加密;
对 称 密 钥 K 1 和 K2,应串接为TwoKeys,见(6.2 .2 .5 );
Tw oK e ys 应 该按 照 RFC2 313说明的RSA加密方法进行加密;
加 密结 果 编 码 为 e ncSymmKey。加密结果编码为BIT STRING,B IT STRING的最高位
就 是 加 密结果的最高位。
新 的 用 户证书应该包括如下扩展:
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
su bje ct Ke yI de nt ifi er 域 ;
在 ce rti fic at eP ol ici es 字 段 中至少包含一个证书策略OID;
在 Ke yld en tifi e: 域 中有 一 个 机 构密钥标识符。
CA 应 该 对 证 书 公 钥信息计算低96bit的SHA-1摘要值,并将其作为subjectKeyIdentifier的
值 。 摘 要 值 是 对 证书中的主体公钥进行计算得到的,不包括标签和长度。
如 果 。r 消 息 中 包 含了扩展,CA有可能修改或者忽略其扩展。
如 果 is su er 的 证 书和CRL不能够从已知的X.5 00目录中得到,则新证书中应该在issuerAlt-
Na m e中 包 括 UR Ls信息,在CRLDistributionPoints控制中包括distributionPoint域。
如 果 st at us 是 g ranted或者grantedWithMods,则failInfo域不存在。
如 果 C A 拒 绝 用 户的申请,消息体包括如下信息:
sta tu s是 rej ec te d;
fai lln fo 包 括 了 合 适 的 代 码 ,可以是:
令 b ad Al g表 示 C A 不 支 持 或者不认识kr指定的签名算法,
今 b ad Po p表 示 p op oS ig nin gKey域中的签名有误,
令 b ad M ess ag eC he ck 表 示 PKIProtection域中的签名有误,
. b adR eq ue st 表示 回 应 者 不 支持或者不允许该事务,
. ba dT im e 表 示 消 息 头 中的messageTime的时间和回应者的系统时间相差太大,
令 b ad Ce rtl d表 示 证 书 序 号 不能是serial域中所填的非零值;
如 果 st at us 是 re jected,ce rtifcate域不存在。
PK IP ro tec tio n域 包 含了CA对于消息头和消息体的DER编码的签名。
c) 确 认消息
收 到 cp 的 时 候 , 证书持有者应该产生PKIConfirm消息。PKIHeader中的信息和利用RA向
CA 申 请 证 书 的 情 况下的PKIHeader一致,除了messageTime是当前时间。
PK IP ro te cti on 是 证书持有者使用当前有效证书的对应私钥,对于消息头和消息体的DER编
码 的 签 名 。
6.6.9 组合证书申请
签 名 密 钥证书和密钥管理密钥证书的申请可以由一次事务完成。RA发起的注册请求和自我注册
请求(见6. 6. 2,6. 6. 3,6. 6. 4 )可以和加密证书申请组合在一起(见6.6.9)。在这样的情况下,CertRegMessages
包括了两个CertRegMessage的序列。一个CertRegMessage等同于RA发起的注册请
求和自我注册请求的情况,另一个CertRegMessage等同于加密证书申请的情况。消息使用了签名证
书申请的方式来加以保护。
如果 组 合 申请中包括的是自我注册请求,则要么签名密钥证书申请成功,要么两个证书的申请都不
成功。如果还需要额外的信息来提供POP,申请者则使用自我注册请求中的私钥来对消息做签名。
签名 密 钥 的pop将使用pop域来实现(见6.6.2,6.6.3和6.6. 6 ) 。集中产生密钥对申请,私钥应
该使用6. 6. 8中描述的方式进行加密。CA的响应按照响应部分的说明。CA响应可以是组成一个
CertRepMessage,或者是分开。申请者使用CertRegID来区分CA的响应。
响应 消 息 的PKIFreeText域可以用来提供额外的信息。
收 到 kp 的时候,证书持有者应该产生PKIConfirm消息。PKIHeader中的信息和利用RA向CA
申请证书的情况下的PKIHeader一致,除了messageTime是当前时间。
如果 签 名 证书申请成功,PKIProtection是证书持有者使用新的签名证书的对应私钥,对于消息头
和消息体的DER编码的签名。如果申请被拒绝,PKIProtection包含了对于消息头和消息体的DER编
码的mac,该mac由认证证书请求的共享秘密产生。(如果申请因为badMessageCheck被拒绝,则
PKIConfirm消息不需要再产生了。)
GB / T 19 77 1- 20 05
6.6.10 从资料库请求证书
实 体 可 以使用LDAP V2见RFC 2559)向资料库请求证书。当使用LDAP时,实体可以通过
LDAP搜索请求(定义见RFC 2559)从资料库中请求证书,或是利用给定的LDAP URL(见RFC1959)
来请求证书(即authorityInformationAccess扩展)。
6.6.11 从资料库请求CRL
实 体 可 以使用LDAP V2(见RFC 2559)向资料库请求CRLs。实体可以使用LDAP(见RFC1777)
从资料库中请求CRLs。当使用LDAP时,实体可以通过LDAP搜索请求(定义见RFC 2559和
RFC1777)从资料库中请求CRLs,或是利用给定的LDAP URI,(见RFC1959)来请求CRLs(即,cRI.DistributionPoints
扩展中的distributionPoint字段)。
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
附 录 A
(规 范 性 附 录 )
X. 5 0 9 v 3 证 书 A SN . 1
AuthenticationFramework {point-iso-ccitt ds(5) modules(1) authenticationFramework(7) 2}
DEFINITIONS::=
BEGIN
一EXPORTS All一
一The types and values defined in this module are exported for use in the other ASN. l
一modules contained within the Directory Specifications,and for the use of other applications
一which will use them to access Directory services. Other applications may use them for
一their own purposes, but this will not constrain extensions and modifications needed to
一maintain or improve the Directory service.
IMPORTS
id-at,informationFramework, upperBounds selectedAttributeTypes, basicAccessControl
FROM UsefulDefinitions {joint-iso-ccitt ds(5) modules(1)usefulDefinitions(O 2}
Name, ATTRIBUTE
FROM InformationFramework informationFramework
ub-user-password
FROM UpperBounds upperBounds
AuthenticationLevel
FROM BasicAccessControl basicAccessControl
UniqueIdentifier
FROM SelectedAttributeTypes selectedAttributeTypes;
一types一
Certificate::=SIGNED{SEQUENCE{
version巨0] Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature A1gorithmldentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKey1nfo SubjectPublicKeyInfo}
issuerUniqueldentifier [1] IMPLICIT UniqueIdentifier OPTIONAL,
---if present, version must be v1 or v2--
subjectUniqueldentifier仁2]I MPLICIT Unique]de ntifierO PTIONAL,
---if present,version must be v1 or v2--
extensions [3] Extensions OPTIONAL
--if present,version must be v3--}
Version::= INTEGER{VIM ,v2 (1),v3(2)}
CertificateSeriaINumber::= INTEGER
GB /T 1 97 71 - 20 05
Algorithmidentifier::= SEQUENCE{
algorithm ALGORITHM.邑id({SupportedAlgorithms}),
parametersA LGORITHM.乙Type({SupportedA lgorithms}{@algorithm))OPTIONAL}
一Definition of the following information object is deferred, perhaps to standardized
一profiles of to protocol implementation conformance statements. This set is required to
一specify a table constraint on the Parameters component of Algorithmidentifier.
一SupportedAlgorithms ALGORITHM ::= {⋯ }⋯ }
Validity::=SEQUENCE{
notBefore ChoiceOfTime,
notAfter ChoiceOfTime}
ChoiceOfTime::=CHOICE{
utcTime UTCTime,
generalTime GeneralizedTime}
SubjectPublicKeyInfo::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING}
Extensions::= SEQUENCE OF Extension
Extension::=SEQUENCE{
extnldE XTENSION.邑id({ExtensionSet)) ,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
一contains a DER encoding of a value of type邑Extn'I ype for the
一extension object identified by extnld一
一Definition of the following information object set is deferred,perhaps to
一standardized profiles or to protocol implementation conformance statements.
一The set is required to specify a table constraint on the critical component
一of Extension.
一ExtensionSet EXTENSION::= {⋯ !⋯ }
EXTENSION ::= CLASS
{
&-id O BJECT IDENTIFIER UNIQUE,
衣ExtnType
}
W ITH SYNTAX
{
SYNTAX &ExtnType
IDENTIFIED BY & id
}
Certificates::=SEQUENCE{
certificate Certificate,
certificationPath ForwardCertificationPath OPTIONAL)
Forward CertiflcatlonPath::= SEQUENCE OF CrossCertificates
CertificationPath::=SEQUENCE{
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
userCertificate Certificate,
theCACertificates SEQUENCE OF CertificatePair OPTIONAL}
CrossCertificates::= SET OF Certificate
CertificateList::=SIGNED{SEQUENCE(
version Version OPTIONAL,一if present,must be v2
signature AlgorithmIdentifier,
issuer Name,
thisUpdate ChoiceOfTime,
nextUpdate ChoiceOfTime OPTIONAL,
revokedCertificates SEQUENCE OF SEQUENCE{
userCertificate CertificateSerialNumber,
revocationDate ChoiceOfTime,
crIEntryExtensions Extensions OPTIONAL}OPTIONAL,
crlExtensions [0] Extensions OPTIONAL}}
CertificatePair::=SEQUENCE{
forward仁0] Certificate OPTIONAL,
reverse [1] Certificate OPTIONAL
一at least one of the pair shall be present一}
一attribute types--
userPassword ATTRIBUTE::= {
WITH SYNTAX OCTET STRING (SIZE (0二ub-user-password))
EQUALITY MATCHING RULE octetStringMatch
ID id-at-userPassword}
userCertificate ATTRIBUTE::= {
W ITH SYNTAX Certificate
ID id-at-userCertificate}
cACertificate ATTRIBUTE::= {
W ITH SYNTAX Certificate
ID id-at-cACertificate}
authorityRevocationList ATTRIBUTE::二{
WITH SYNTAX CertificateList
ID id-at-authorityRevocationList}
certificateRevocationList ATTRIBUTE ::= {
WITH SYNTAX CertificateList
ID id-at-certificateRevocationList}
crossCertificatePair ATTRIBUTE ::= {
WITH SYNTAX CertificatePair
ID id-at-crossCertificatePair)
一information object classes一
ALGORITHM ::= TYPE-IDENTIFIER
一Parameterized Types一
HASHED {ToBeHashed}::二OCTET STRING(CONSTRAINED-BY {
--must be the result of applying a hashing procedure to the一
GB /T 1 97 71 - 20 05
--DER-encoded octets of a value of一ToBeHashed})
ENCRYPTED{To/BeEnciphered }:= BIT STRING(CONSTRAINED BY{
--must be the result of applying an encipherment procedure to the一
一BER-encoded octets of a value of一ToBeEnciphered})
SIGNED{ToBeSigned}::= SEQUENCE {
ToBeSigned,
COMPONENTS OF SIGNATURE{ToBeSigned}),
SIGNATURE{OfSignature}::=SEQUENCE{
AlgorithmIdentifier,
ENCRYPTED{HASHED{OfSignature}}}
一object identifier assignments一
id-at-userPassword OBJECT IDENTIFIER::= {id-at 35}
id-at-userCertificateO BJECT IDENTIFIER::= {1i'd - a t 3 6'I}
id-at-cAcertificate OBJECT IDENTIFIER::= {id-at 37}
id-at-authorityRevocationList OBJECT IDENTIFIER::= {id-at 38}
id-at-certificateRevocationI-ist OBJECT IDENTIFIER::= {id-at 39}
id-at-crossCertificatePair OBJECT IDENTIFIER::= {id-at 40}
id-at-supportedAlgorithms OBJECT IDENTIFIER::= {id-at 52}
id-at-deltaRevocationList OBJECT IDENTIFIER::= {id-at 53}
END
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
附 录 B
(规 范 性 附 录 )
证 书 和 C RL 扩 展 A S N. 1
CertificateExtensions (joint-iso-ccitt ds(5) module(l)certificateExtensions(26) 0}
DEFINITIONS IMPLICIT TAGS::=
BEGIN
一EXPORTS ALL 一
IMPORTS
id-at,id-ce,id-mr, informationFramework, authenticationFramework,
selectedAttributeTypes, upperBounds
FROM UsefulDefinitions {joint-iso-ccitt ds(5) module(1)
usefulDefinitions(0) 2}
Name, RelativeDistinguishedName, ATTRIBUTE,Attribute,
MATCHING-RULE FROM InformationFramework informationFramework
CertlficateSerialNumber, CertificateList,AlgorithmIdentifier,
EXTENSION
FROM AuthenticationFramework authenticationFramework
DirectoryString
FROM SelectedAttributeTypes selected AttributeTypes
ub-name
FROM UpperBounds upperBounds
ORAddress
FROM MTSAbstractService {joint-iso-ccitt mhs(6) mts(3)
modules(0) mts-abstract-service(1)version-1994 (0)};
一Unless explicitly noted otherwise, there is no significance to the ordering
一of components of a SEQUENCE OF construct in this specification.
一Key and policy information extensions一
authorityKey1dentifier EXTENSION ::一{
SYNTAX AuthorityKeyIdentifier
IDENTIFIED BY{id-ce 35}}
AuthorityKeyIdentifier::=SEQUENCE{
key1dentifier仁。]Key1dentifier OPTIONAL,
author]ty CertIssuer仁1]G eneraINamesO PTIONAI,
authorityCertSerialNumber仁2] CertificateSerialNumber OPTIONAL}
(WITH COMPONENTS{⋯ ,authorityCertIssuer PRESENT,
authorityCertSerialNumber PRESENT}}
WITH COMPONENTS{⋯ ,authorityCertIssuer ABSENT,
authorityCertSerialNumber ABSENT})
KeyIdentifier::= OCTET STRING
subjectKeyldentifier EXTENSION::= {
GB / T 19 77 1- 20 05
SYNTAX SubjectKeyldentifier
IDENTIFIED BY{id-ce 14})
SubjectKeyldentifier::= Keyldentifier
keyUsage EXTENSION::= {
SYNTAX KeyUsage
IDENTIFIED BY {id-ce 15}}
KeyUsage::= BIT STRING{
digitalSignature (0),
nonRepudiation(1),
keyEncipherment (2),
dataEncipherment(3),
keyAgreement (4),
keyCertSign (5),
cRLSign (6)}
privateKeyUsagePeriod EXTENSION::= {
SYNTAX PrivateKeyUsagePeriod
IDENTIFIED BY {id-ce 16}}
PrivateKeyUsagePeriod::= SEQUENCE{
notBefore [0] GeneralizedTime OPTIONAL,
notAfter仁1] GeneralizedTime OPTIONAL}
(WITH COMPONENTS{⋯ ,notBefore PRESENT)}
WITH COMPONENTS{⋯ ,notAfter PRESENT})
certificatePolicies EXTENSION ::= {
SYNTAX CertificatePoliciesSyntax
IDENTIFIED BY{id-ce 32}}
CertificatePoliciesSyntax::=SEQUENCE SIZE(1二MAX) OF PolicyInformation
PolicyInformation::= SEQUENCE{
policyldentifier CertPolicyld,
policyQualifiers SEQUENCE SIZE(1二MAX) OF
PolicyQualifierInfo OPTIONAL}
CertPolicyld::= OBJECT IDENTIFIER
PolicyQualifierInfo::= SEQUENCE{
policyQualifierId CERT-POLICY-QUALIFIER. &id
({SupportedPolicyQualifiers}),
qualifierC ERT-POLICY-QUALIFTER.& -Q ualifier
({Supported PolicyQualifiers){@policyQualifierId})
OPTIONAL}
SupportedPolicyQualifiers CERT-POLICY-QUALIFIER::= {⋯ }
CERT-POLICY-QUALIFIER ::= CLASS{
& id OBJECT IDENTIFIER UNIQUE,
衣Qualifier OPTIONAL}
WITH SYNTAX {
POLICY-QUALIFIERAD &-id
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
[QUALIFIER-TYPE &Qualifier]}
policyMappings EXTENSION ::二{
SYNTAX PolicyMappingsSyntax
IDENTIFIED BY {id-ce 33}}
PolicyMappingsSyntax::= SEQUENCE SIZE(1..MAX) OF SEQUENCE{
issuerDomainPolicy CertPolicyId,
subjectDomainPolicy CertPohcy1d}
supportedAlgorithms ATTRIBUTE::= {
WITH SYNTAX SupportedAlgorithm
EQUALITY MATCHING RULE algorithmIdentifierMatch
ID{id-at 52}}
SupportedAlgorithm ::= SEQUENCE{
algorithmIdentifier AlgorithmIdentifier,
intendedUsage巨。]KeyUsage OPTIONAL,
intendedCertificatePolicies [1] CertificatePoliciesSyntax OPTIONAL}
一Certificate subject and certificate issuer attributes extensions一
subjectAltName EXTENSION ::= {
SYNTAX GeneralNames
IDENTIFIED BY {id-ce 17)}
GeneralNames::= SEQUENCE SIZE(1二MAX) OF GeneraIName
GeneraIName::= CHOICE{
otherName [0] INSTANCE OF OTHER-NAME,
RFC 822Name [1]IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName巨4] N ame,
ed]PartyName仁5] EDIPartyName,
uniformResourceldentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID仁8] OBJECT IDENTIFIER}
OTHER-NAM E ::= TYPE-IDENTIFIER
EDIPartyName::二SEQUENCE{
nameAssigner [0] DirectoryString{ub-name} OPTIONAL,
partyName巨1〕DirectoryString{ub-name}}
issuerAltName EXTENSION ::二{
SYNTAX GeneralNames
IDENTIFIED BY{id-ce 18}}
subjectDirectoryAttributes EXTENSION::= {
SYNTAX AttributesSyntax
IDENTIFIED BY{id-ce 9)}
AttributesSyntax::一SEQUENCE SIZE(1二MAX) OF Attribute
一Certification path constraints extensions一
basicConstraints EXTENSION ::= {
GB / T 19 77 1- 20 05
SYNTAX BasicConstraintsSyntax
IDENTIFIED BY{id-ce 19}}
BasicConstraintsSyntax::= SEQUENCE{
cA BOOLEAN DEFAULT FALSE,
path LenConstraint INTEGER (0二MAX) OPTIONAL}
nameConstraints EXTENSION ::二{
SYNTAX NameConstraintsSyntax
IDENTIFIED BY {id-ce 30}}
NameConstraintsSyntax::= SEQUENCE{
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL}
GeneralSubtrees::= SEQUENCE SIZE(1..MAX) OF GeneralSubtree
GeneralSubtree::= SEQUENCE{
base GeneralName,
minimum [0] BaseDistance DEFAULT 0,
maximum [1] BaseDistance OPTIONAL}
BaseDistance::二INTEGER (0二MAX)
policyConstraints EXTENSION ::= {
SYNTAX PolicyConstraints5yntax
IDENTIFIED BY{id-ce 36}}
PolicyConstraints Syntax::=SEQUENCE SIZE(1二MAX) OF SEQUENCE{
requireExplicitPolicy [0] SkipCerts OPTIONAL,
inhibitPolicyMapping [1] SkipCerts OPTIONAL}
SkipCerts::= INTEGER (0.. MAX)
一Basic CRL extensions一
cRLNumber EXTENSION ::二{
SYNTAX CRLNumber
IDENTIFIED BY {id-ce 20}}
CRLNumber::= INTEGER (0二MAX)
reasonCode EXTENSION ::= {
SYNTAX CRLReason
IDENTIFIED BY {id-ce 21}}
CRLReason::二ENUMERATED {
unspecified (0),
keyCompromise(1),
cACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6),
removeFromCRL (8)}
instructionCode EXTENSION ::= {
SYNTAX HoldInstruction
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
IDENTIFIED BY {id-ce 23}}
HoldInstruction::= OBJECT IDENTIFIER
invalidityDate EXTENSION::= {
SYNTAX GeneralizedTime
IDENTIFIED BY {id-ce 24}}
一CRL distribution points and delta-CRL extensions一
cRI-DistributionPoints EXTENSION::= {
SYNTAX CRI.DistPointsSyntax
IDENTIFIED BY {id-ce 31}}
CRLDistPointsSyntax::= SEQUENCE SIZE (1二MAX) OF DistributionPoint
DistributionPoint::=SEQUENCE{
dlstrlbutlonPoint [0] DistributionPointName OPTIONAL,
reasons [1] ReasonFlags OPTIONAL,
cRLIssuer [2] GeneralNames OPTIONAL}
DistributionPointName::=CHOICE{
fullName [0] GeneralNames,
nameRelativeToCRLIssuer [1] RelativeDistinguishedName}
ReasonFlags::一BIT STRING{
unused (0),
keyCompromise (1),
caCompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6)}
issuingDistributionPoint EXTENSION ::= {
SYNTAX IssuingDistPointSyntax
IDENTIFIED BY{id-ce 28}}
IssuingDistPointSyntax::二SEQUENCE {
distributionPoint [0] DistributionPointName OPTIONAL,
onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
onlySomeReasons [3] ReasonFlags OPTIONAL,
indirectCRI.仁4] BOOLEAN DEFAULT FALSE}
certificatelssuer EXTENSION ::= {
SYNTAX GeneralNames
IDENTIFIED BY{id-ce 29}}
deltaCRLIndicator EXTENSION ::二才
SYNTAX BaseCRLNumber
IDENTIFIED BY{id-ce 27}}
BaseCRLNumber::= CRLN umber
deltaRevocationList ATTRIBUTE::= {
W ITH SYNTAX CertificateI_ist
GB / T 19 77 1 - 20 05
EQUALITY MATCHING RULE certificateListE xactMatch
ID{id-at 53)}
一Matching rules一
certificateExactMatch MATCHING-RULE::= {
SYNTAX CertificateExactAssertion
ID id-mr-certificateExactMatch}
CertificateExactAssertion::= SEQUENCE{
serialNumber CertificateSerialNumber,
issuer Name}
certificateMatch MATCHING-RULE::= {
SYNTAX CertificateAssertion
ID id-mr-certificateMatch}
CertificateAssertion::= SEQUENCE {
serialNumber仁。〕CertificateSerialNumber OPTIONAL,
issuer [1] Name OPTIONAL,
subjectKeyIdentifier [2] SubjectKeyIdentifier OPTIONAL,
authorityKeyIdentifier仁3] AuthorityKeyIdentifier OPTIONAL,
certificateValid [4] UTCTime OPTIONAL,
privateKeyValid仁5] GeneralizedTime OPTIONAL,
subjectPublicKeyAlgID [6] OBJECT IDENTIFIER OPTIONAL,
keyUsage [7] KeyUsage OPTIONAL,
subjectAltName [8] AltNameType OPTIONAL,
policy [9] CertPolicySet OPTIONAL,
pathToName [10] Name OPTIONAL.}
AltNameType::= CHOICE{
builtinNameForm ENUMERATED{
RFC 822Name(1),
dNSName (2),
x400Address (3),
directoryName (4),
ediPartyName(5),
uniformResourceIdentifier (6),
iPAddress (7),
registeredId (8)},
otherNameForm OBJECT IDENTIFIER}
certificatePairExactMatch MATCHING-RULE ::= {
SYNTAX CertificatePairExactAssertion
ID id-mr-certificatePairExactMatch}
CertificatePairExactAssertion::= SEQUENCE{
forwardAssertion [0] CertificateExactAssertion OPTIONAL,
reverseAssertion [1] CertificateExactAssertion OPTIONAL}
(WITH COMPONENTS{⋯ ,forwardAssertion PRESENT}
WITH COMPONENTS{⋯ ,reverseAssertion PRESENT})
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
certificatePairMatch MATCHING-RULE::= {
SYNTAX CertificatePairAssertion
ID id-mr-certificatePairMatch}
CertlflcatePalrAssertion::= SEQUENCE{
forward Assertion仁0] CertificateAssertion OPTIONAL,
reverseAssertion [1] CertificateAssertlon OPTIONAL}
(WITH COMPONENTS{⋯ ,forwardAssertion PRESENT)
WITH COMPONENTS{⋯ ,reverseAssertion PRESENT))
certificateListExactMatch MATCHING-RULE ::= {
SYNTAX CertificateListExactAssertion
ID id-mr-certificateListExactMatch}
CertificateListExactAssertion::= SEQUENCE{
issuer Name,
thisUpdate UTCTime,
distributionPoint DistributionPointName OPTIONAL}
certificateListMatch MATCHING-RULE::= {
SYNTAX CertificateListAssertion
ID id-mr-certificateListMatch}
CertificateListAssertion::= SEQUENCE{
issuer Name OPTIONAL,
minCRLNumber [0] CRLNumber OPTIONAL,
maxCRLNumber [1] CRLNumber OPTIONAL,
reasonFlags ReasonFlags OPTIONAL,
dateAndTime UTCTime OPTIONAL,
distrlbutionPoint [2] DistributionPointName OPTIONAL}
algorithmIdentifierMatch MATCHING-RULE::= {
SYNTAX Algorithmldentifier
ID id-mr-algorithmIdentifierMatch}
一Object identifier assignments一
id-at-supportedAlgorithms OBJECT IDENTIFIER::二{id-at 52}
id-at-deltaRevocationList OBJECT IDENTIFIER::二{id-at 53)
id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER::= {id-ce 9}
id-ce-subjectKeyldentifier OBJECT IDENTIFIER::= {id-ce 14)
id-ce-keyUsage OBJECT IDENTIFIER::= {id-ce 15}
id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER::= (id-ce 16}
id-ce-subjectAltName OBJECT IDENTIFIER::一{id-ce 17}
id-ce-issuerAltName OBJECT IDENTIFIER ::二{id-ce 18)
id-ce-basicConstraints OBJECT IDENTIFIER ::= {id-ce 19}
id-ce-cRLNumber OBJECT IDENTIFIER ::= {id-ce 20)
id-ce-reasonCode OBJECT IDENTIFIER::= {id-ce 21}
id-ce-instructionCode OBJECT IDENTIFIER ::= {id-ce 23}
id-ce-invalidityDate OBJECT IDENTIFIER::= {id-ce 24}
id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= {id-ce 27}
GB /T 197 7 1- 20 05
id-ce-issuingDistributionPoint OBJECT IDENTIFIER::= {id-ce 28}
id-ce-certificatelssuer OBJECT IDENTIFIER ::= {id-ce 29}
id-ce-nameConstraints OBJECT IDENTIFIER::= {id-ce 30}
id-ce-cRLDistributionPoints OBJECT IDENTIFIER::二{id-ce 31}
id-ce-certificatePolicies OBJECT IDENTIFIER::= {id-ce 32}
id-ce-policyMappings OBJECT IDENTIFIER::= {id-ce 33}
id-ce-policyConstraints OBJECT IDENTIFIER::= {id-ce 34)
id-ce-authorityKeyldentifier OBJECT IDENTIFIER::= {id-ce 35}
id-mr-certificateExactMatch OBJECT IDENTIFIER::= {id-mr 34}
id-mr-certificateMatch OBJECT IDENTIFIER::= {id-mr 35}
id-mr-certificatePairExactMatch OBJECT IDENTIFIER::= {id-mr 36}
id-mr-certificatePairMatch OBJECT IDENTIFIER::= {id-mr 37}
id-mr-certificateListExactMatch OBJECT IDENTIFIER::= {id-mr 38}
id-mr-certificateListMatch OBJECT IDENTIFIER ::= {id-mr 39}
id-mr-algorithmldentifierMatch OBJECT IDENTIFIER::= {id-mr 40}
一The following OBJECT IDENTIFIERS are not used by this specification:
一{id-ce 2 },( id-ce 3 },{id-ce 4 },{id-ce 5},{id-ce 6},{ id-ce 7 },
一{id-ce8 },{id-ce1 0},(id -ce 11} ,{id -ce 12},{id-ce 13),
一{id-ce 22},{id-ce 25},{id-ce 26}
END
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
附 录 C
(规 范 性 附 录 )
AS N . 1 M od u le fo r tr a ns ac ti on s
The following section contains the complete ASN. 1 module from RFC 2510,the Certificate
Management Protocol. Only a small subset of the messages defined in RFC2510 are required
to implement this specification. The entire module is provided for completeness. Information
about messages defined by this ASN. 1 module but not used in the MISPC may be found in
RFC2510.
PKIX-CMP DEFINITIONS::=
BEGIN 一EXPLICT TAGS
IMPORTS
CertRegMessages,EncryptedValue, EncryptedKey
FROM CMRF
PKIMessage::= SEQUENCE{
Header PKIHeader,
Body PKIBody,
Protection [0] PKIProtection OPTIONAL,
ExtraCerts [1] SEQUENCE SIZE(1二MAX) OF Certificate OPTIONAL
}
PKIHeader::= SEQUENCE{
pvno INTEGER{ietf-version2(1)},
sender GeneralName,
一identifies the sender
recipient GeneralName,
一identifies the intended recipient
messageTime [0] GeneralizedTime OPTIONAL,
一time of production of this message (used when sender
一believes that the transport will be "suitable";i. e.,
一that the time will still be meaningful upon receipt)
protectionAlg [1] AlgorithmIdentifier OPTIONAL,
一algorithm used for calculation of protection bits
senderKID [2] KeyIdentifier OPTIONAL,
recipKID [3] KeyIdentifier OPTIONAI,
一to identify specific keys used for protection
transactionlD [4] OCTET STRING .OPTIONAL,
一identifies the transaction; i. e.,this will be the same in
一corresponding request,response and confirmation messages
senderNonce仁5] OCTET STRING OPTIONAL.,
recipNonce [6] OCTET STRING OPTIONAL,
一nonces used to provide replay protection,senderNonce
GB /T 1 97 7 1- 20 05
一is inserted by the creator of this message; recipNonce
一is a nonce previously inserted in a related message by
一the intended recipient of this message
freeText [7] PKIFreeText OPTIONAL,
一this may be used to indicate context-specific instructions
一(this field is intended for human consumption)
generalInfo仁8] SEQUENCE SIZE(1二MAX) OF
InfoTypeAndValue OPTIONAL
一this may be used to convey context-specific information
一(this field not primarily intended for human consumption)
}
PKIFreeText::= SEQUENCE SIZE(1二MAX) OF UTF8String
一text encoded as UTF-8 String(note: each UTF8String SHOULD
一include an RFC 1766 language tag to indicate the language
一of the contained text)
PKIBody::= CHOICE{一message-specific body elements
it [0] CertRegMessages,一Initialization Request
ip [1] CertRepMessage,--Initialization Response
cr [2] CertRegMessages,--Certification Request
cp [3] CertRepMessage,--Certification Response
p10cr [4] CertificationRequest,--imported from巨PKCS10]
popdecc仁5] POPODecKeyChallContent,一pop Challenge
popdecr [6] POPODecKeyRespContent,--pop Response
kur [7] CertRegMessages,一Key Update Request
kup仁8] CertRepMessage,一Key Update Response
krr仁9] CertRegMessages,一Key Recovery Request
krp [10] KeyRecRepContent,一Key Recovery Response
rr [11] RevRegContent,--Revocation Request
rp [12] RevRepContent,--Revocation Response
ccr [13] CertRegMessages,--Cross-Cert. Request
ccp [14] CertRepMessage,--Cross-Cert. Response
ckuann [15] CAKeyUpdAnnContent,--CA Key Update Ann.
cann [16] CertAnnContent,--Certificate Ann.
rann [17] RevAnnContent,一Revocation Ann.
crlann [18] CRLAnnContent,一CRI. Announcement
conf [19] PKIConfirmContent,--Confirmation
nested [20] Nested MessageContent,一Nested Message
genm [21] GenMsgContent,--General Message
genp [22] GenRepContent,--General Response
error [23] ErrorMsgContent一Error Message
}
PKIProtection::= BIT STRING
ProtectedPart::=SEQUENCE{
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
header PKIHeader,
body PKIBody
圣
PasswordBasedMac::= OBJECT IDENTIFIER一{1 2 840 113533 7 66 13}
PBMParameter::二SEQUENCE{
salt OCTET STRING,
owf Algorithmldentifier,
一AlgId for a One-Way Function (SHA-1 recommended)
iterationCount INTEGER,
一number of times the OWF is applied
mac A1gorithmIdentifier
一them acA lgId( e.g. ,DES-MAC,T riple-DES-MAC[ PKCSll],
}一or HMAC [RFC2104,RFC2202])
DHBasedMac::= OBJECT IDENTIFIER一{1 2 840 113533 7 66 30}
DHBMParameter::= SEQUENCE{
owf Algorithmldentifier,
一AlgId for a One-Way Function (SHA-1 recommended)
mac AlgorithmIdentifier
一theM AC A1gId( e.g .,DES-MAC,T riple-DES-MAC仁PKCSll] ,
}一or HMAC仁RFC2104,RFC2202])
NestedMessageContent::= PKIMessage
PKIStatus::= INTEGER{
granted (0),
一you got exactly what you asked for
grantedWithMods(1),
一you got something like what you asked for; the
一requester is responsible for ascertaining the differences
rejection (2),
一you dont get it,more information elsewhere in the message
waiting (3),
一the request body part has not yet been processed,
一expect to hear more later
revocationWarning (4),
一this message contains a warning that a revocation is
一im m inent
revocationNotification (5),
一notification that a revocation has occurred
keyUpdateWarning (6)
一update already done for the oldCertId specified in
一CertRegMsg
}
PKIFailureInfo::= BIT STRING {
一since we can fail in more than one way!
GB / T 19 77 1 - 20 05
一More codes may be added in the future if/when required.
badAlg (0),
一unrecognized or unsupported Algorithm Identifier
badMessageCheck(1),
一integrity check failed (e. g.,signature did not verify)
badRequest (2),
一transaction not permitted or supported
badTime (3),
一messageTime was not sufficiently close to the system time,
一as defined by local policy
badCertId (4),
一no certificate could be found matching the provided criteria
badDataFormat (5),
一the data submitted has the wrong format
wrongAuthority (6),
一the authority indicated in the request is different from the
一one creating the response token
incorrectData (7),
一the requesters data is incorrect (for notary services)
missingTimeStamp (8),
一when the timestamp is missing but should be there(by policy)
badPoP (9)
一when proof of possession does not verify
}
PKIStatusInfo::= SEQUENCE{
status PKIStatus,
statusString PKIFreeText OPTIONAL,
faillnfo PKIFailurelnfo OPTIONAL
}
OOBCert::= Certificate
OOBCertHash::= SEQUENCE{
hashAlg [0] AlgorithmIdentifier OPTIONAL,
certld [1] Certld OPTIONAL.,
hashVal BIT STRING
一hashVal is calculated over DER encoding of the
一subjectPublicKey field of the corresponding cert.
)
POP ODecKeyChallContent::= SEQUENCE OF Challenge
一One Challenge per encryption key certification request(in the
一same order as these requests appear in CertRegMessages).
Challenge::= SEQUENCE{
owf AlgorithmIdentifier OPTIONAL,
一MUST be present in the first Challenge;MAY be omitted in any
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
一subsequent Challenge in POPODecKeyChallContent (if omitted,
一then the owf used in the immediately preceding Challenge is
一to be used).
witness OCTET STRING,
一the result of applying the one-way function (owf) to a
一randomly-generated INTEGER, A.仁Note that a different
一INTEGER MUST be used for each Challenge.]
challenge OCTET STRING
一the encryption (under the public key for which the cert,
一request is being made) of Rand,where Rand is specified as
一Rand::=SEQUENCE{
一int INTEGER,
一the randomly-generated INTEGER A (above)
一sender GeneralName
一the sender's name (as included in PKIHeader)
一}
}
POPODecKeyRespContent::二SEQUENCE OF INTEGER
一One INTEGER per encryption key certification request (in the
一same order as these requests appear in CertRegMessages).The
一retrieved INTEGER A (above) is returned to the sender of the
一corresponding Challenge.
CertRepMessage::=SEQUENCE{
caPubs [1] SEQUENCE SIZE(1二MAX) OF Certificate OPTIONAL,
response SEQUENCE OF CertResponse
}
CertResponse::=SEQUENCE{
certRegId INTEGER,
一to match this response with corresponding request (a value
一of一1 is to be used if certRegId is not specified in the
一corresponding request)
status PKIStatuslnfo,
certifiedKeyPair CertifiedKeyPair OPTIONAL,
rspInfo OCTET STRING OPTIONAL.
一analogous to the id-regInfo-asciiPairs OCTET STRING defined
一for regInfo in CertRegMsg [CRMF]
}
CertifiedKeyPair::=SEQUENCE{
certOrEncCert CertOrEncCert,
privateKey [0] EncryptedValue OPTIONAL,
publicationInfo [1] PKIPublicationInfo OPTIONAL
}
CertOrEncCert::=CHOICE{
GB /T 1 97 71 - 20 05
certificate仁0] Certificate,
encryptedCert [1] EncryptedValue
}
KeyRecRepContent::= SEQUENCE{
status PKIStatusInfo,
newSigCert仁。〕Certificate OPTIONAL,
caCerts仁1 ] SEQUENCE SIZE(1二MAX) OF
Certificate OPTIONAL.,
keyPairHist [2] SEQUENCE SIZE(1二MAX) OF
Certified KeyPair OPTIONAL
}
RevRegContent::=SEQUENCE OF RevDetails
RevDetails::=SEQUENCE{
certDetails CertTemplate,
一allows requester to specify as much as they can about
一the cert. for which revocation is requested
一(e. g.,for cases in which serialNumber is not available)
revocatlonReason ReasonFlags OPTIONAL,
一the reason that revocation is requested
badSinceDate GeneralizedTime OPTIONAL,
一indicates best knowledge of sender
crIEntryDetails Extensions OPTIONAL
一requested crIEntryExtensions
}
RevRepContent::=SEQUENCE{
status SEQUENCE SIZE(1.,MAX) OF PKIStatusInfo,
一in same order as was sent in RevRegContent
revCerts [0] SEQUENCE SIZE(1二MAX) OF CertId OPTIONAL,
一IDs for which revocation was requested (same order as status)
crls仁1] SEQUENCE SIZE(I二MAX) OF CertificateList OPTIONAL
一the resulting CRLs (there may be more than one)
}
CAKeyUpdAnnContent::= SEQUENCE{
oldWithNew Certificate,一old pub signed with new priv
newWithOld Certificate,一new pub signed with old priv
newWithNew Certificate一new pub signed with new priv
)
CertAnnContent::= Certificate
RevAnnContent::一SEQUENCE{
status PKIStatus,
certId CertId,
willBeRevokedAt GeneralizedTime,
badSinceDate GeneralizedTime,
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
crIDetails Extensions OPTIONAL
一extra CRL details(e. g.,crl number, reason, location, etc.)
}
CRLAnnContent::= SEQUENCE OF CertlficateList
PKIConfirmContent::二NULL
InfoTypeAndValue::=SEQUENCE{
infoType OBJECT IDENTIFIER,
infoValue ANY DEFINED BY infoType OPTIONAL.
}
一Example InfoTypeAndValue contents include,but are not limited to:
一{CAProtEncCert= {id-it 1},Certificate}
一{SignKeyPairTypes= {id-it 2},SEQUENCE OF AlgorithmIdentifier}
一{EncKeyPairTypes= {id-it 3},SEQUENCE OF AlgorithmIdentifier}
一{PreferredSymmAlg= {id-it 4},AlgorithmIdentifier}
一{CAKeyUpdateInfo= {id-it 5},CAKeyUpdAnnContent}
一{CurrentCRL= {id-it 6},CertificateList}
一where {id-it}= { id-pltix 4}= {13615574}
一This construct M AY also be used to define new PKIX Certificate
一Management Protocol request and response messages,or general-
一purpose (e. g.,announcement) messages for future needs or for
一specific environments.
GenMsgContent::= SEQUENCE OF InfoTypeAndValue
一May be sent by EE, RA,or CA (depending on message content).
一The OPTIONAL infoValue parameter of InfoTypeAndValue will typically
一be omitted for some of the examples given above. The receiver is
一free to ignore any contained OBJ. IDs that it does not recognize.
一If sent from EE to CA,the empty set indicates that the CA may send
一any/all information that it wishes.
GenRepContent::= SEQUENCE OF InfoTypeAndValue
一The receiver is free to ignore any contained OBJ. IDs that it does
一not recognize.
ErrorMsgContent::=SEQUENCE{
pKIStatuslnfo PKIStatusInfo,
errorCode INTEGER OPTIONAL,
一implementation-specific error codes
errorDetails PKIFreeText OPTIONAL
一implementation-specific error details
}
GB /T 197 7 1- 20 05
附 录 D
(规 范 性 附 录 )
证 书 请 求 消 息 格 式 A SN . 1 M o du le
The following section contains the complete ASN. 1 module from RFC 2511,the Certificate
Request Message Format. Only a small subset of the structures defined in RFC2511 are
required to implement this specification. The entire module is provided for completeness.
Information about structures defined by this ASN. 1 module but not used in the MISPC may be
found in RFC2511.
CRMF DEFINITIONS IMPLICIT TAGS::=
BEGIN
IMPORTS
一Directory Authentication Framework (X. 509)
Version,Algorithm]de ntifier,N ame,T ime,
SubjectPublicKeylnfo, Extensions, Uniqueldentifier
FROM AuthenticationFramework{joint-iso-itu-t ds(5)
module(1)authenticationFramework(7) 3}
一Certificate Extensions (X. 509)
GeneraIName
FROM CertificateExtensions {joint-iso-ccitt ds(5)
module(1)certificateExtensions(26) 0)
一Cryptographic Message Syntax
EnvelopedData
FROM CryptographicMessageSyntax{iso(1)member-body(2)
us(840) rsadsi(113549) pkcs(1)pkcs-9(9) smime(16)
modules(0) cms(I)};
CertRegMessages::= SEQUENCE SIZE(I二MAX) OF CertRegMsg
CertRegMsg::= SEQUENCE{
CertReq CertRequest,
Pop ProofOfPossession OPTIONAL,
一content depends upon key type
regInfo SEQUENCE SIZE(1二MAX) OF AttributeTypeAndValue OPTIONAL)
CertRequest::= SEQUENCE{
CertRegld INTEGER,一ID for matching request and reply
CertTemplate CertTemplate,一Selected fields of cert to be issued
Controls Controls OPTIONAL}一Attributes affecting issuance
CertTemplate::! SEQUENCE{
Version [0] Version OPTIONAL,
serialNumber [1] INTEGER OPTIONAL,
signingAlg [2] AlgorithmIdentifier OPTIONAL,
issuer [3] Name OPTIONAL,
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
validity [4] OptionalValidity OPTIONAL,
subject [5] Name OPTIONAL.,
publicKey [6] SubjectPublicKeyInfo OPTIONAL,
issuerUID [7] UniqueIdentifier OPTIONAL,
subjectUID [8] UniqueIdentifier OPTIONAL,
extensions [9] Extensions OPTIONAL}
OptionalValidity::= SEQUENCE{
notBefore [0] Time OPTIONAL,
notAfter巨1] Time OPTIONAL}--at least one MUST be present
Controls::= SEQUENCE SIZE(1二MAX) OF AttributeTypeAndValue
AttributeTypeAndValue::=SEQUENCE{
type OBJECT IDENTIFIER,
value ANY DEFINED BY type}
Proof0fPossession::=CHOICE{
raVerified仁。]NULL,
一used if the RA has already verified that the requester is in
一possession of the private key
signature仁1] POPOSigningKey,
keyEncipherment [2] POPOPrivKey,
keyAgreement [3] POPOPrivKey}
POPOSigningKey::= SEQUENCE{
poposkInput [0] POPOSKInput OPTIONAL,
algorithmIdentifier Algorithmldentifier,
signature BIT STRING}
一The signature (using "algorithmIdentifier")is on the
一DER-encoded value of popInput. NOTE:If poposkInput is present
一in the pop field, popInput is constructed
一with otherinput. If poposkInput is not present,subject is the name
一from CertTemplate. Note that the encoding of Poplnput is
intentionally ambiguous.
PoposkInput::=CHOICE{
Subject name,
Sender [0] generalName,
publicKeyMAC仁1] PKMACValue
}
一The pop is calculated upon the structure popInput, which is defined
一as follows:
PopInput::= SEQUENCE{
CHOICE{
otherinput popskInput,
subject name),
publicKey subjectpublicKey
}
GB /T 1 97 71 - 20 05
一If poposkInput is present
一in the pop field, poplnput is constructed
一with otherinput. If poposklnput is not present, subject is the name
一from CertTemplate. Note that the encoding of Poplnput is
一intentionally ambiguous.
PKMACValue::二SEQUENCE{
algId AlgorithmIdentifier,
一algorithm value shall be PasswordBasedMac{1 2 840 113533 7 66 13)
一parameter value is PBMParameter
value BIT STRING}
PBMParameter::=SEQUENCE{
salt OCTET STRING,
owf AlgorithmIdentifier,
一Algld for a One-Way Function (SHA-1 recommended)
iterationCount INTEGER,
一number of times the OWF is applied
mac AlgorithmIdentifier
一the MAC Algld (e. g.,DES-MAC, Triple-DES-MAC [PKCSll],
}一or HMAC [RFC2104,RFC2202])
POPOPrivKey::= CHOICE{
thisMessage [0] BIT STRING,
一posession is proven in this message (which contains the private
一key itself (encrypted for the CA))
subsequentMessage [1] SubsequentMessage,
一possession will be proven in a subsequent message
dhMAC仁2] BIT STRING}
一for keyAgreement (only),possession is proven in this message
一(which contains a MAC (over the DER-encoded value of the
一certReq parameter in CertRegMsg,which MUST include both subject
一and publicKey) based on a key derived from the end entity's
一private DH key and the CA's public DH key);
一the dhMAC value MUST be calculated as per the directions given
一in Appendix A.
SubsequentMessage::=INTEGER{
encrCert (0),
一requests that resulting certificate be encrypted for the
一end entity (following which,POP will be proven in a
一confirmation message)
challengeResp(I)}
一requests that CA engage in challenge-response exchange with
一end entity in order to prove private key possession
一Object identifier assignments一
id-pkix OBJECT IDENTIFIER::= { iso(I)identified-organization(3)
标准分享网 www.bzfxw.com 免费下载
GB/T 19771-2005
dod(6) internet(1)security(5) mechanisms(5) 7}
一arc for Internet X. 509 PKI protocols and their components
id-pkip OBJECT IDENTIFIER::= {id-pkix 5}
一Registration Controls in CRMF
id-regCtrl OBJECT IDENTIFIER::= {id-pkip 1}
一The following definition may be uncommented for use with
一ASN. 1 compilers which do not understand UTF8Strjng.
一UTF8String::=[UNIVERSAL 12] IMPLICIT OCTET STRING
id-regCtrl-regToken OBJECT IDENTIFIER::= {id-regCtrl 1}
--with syntax:
RegToken::= UTF8String
id-regCtrl-authenticator OBJECT IDENTIFIER::= {id-regCtrl 2}
--with syntax:
Authenticator::= UTF8String
id-regCtrl-pkiPublicationInfo OBJECT IDENTIFIER::= {id-regCtrl 3}
--with syntax:
PKIPublicationInfo::= SEQUENCE{
action INTEGER{
dontPublish (0),
pleasePublish(1)},
pubInfos SEQUENCE SIZE(1.,MAX) OF SinglePubInfo OPTIONAL}
一pubInfos MUST NOT be present if action is "dontPublish"
一(if action is "pleasePublish" and pubInfos is omitted,
一”dontCare" is assumed)
SinglePubInfo::二SEQUENCE{
pubMethod INTEGER{
dontCare (0),
x500 (1),
web (2),
ldap (3)},
pubLocation GeneralName OPTIONAL}
id-regCtrl-pkiArchiveOptions OBJECT IDENTIFIER::二{id-regCtrl 4}
--with syntax:
PKIArchiveOptions::二CHOICE(
encryptedPrivKey [0] EncryptedKey,
一the actual value of the private key
keyGenParameters [1] KeyGenParameters,
一parameters which allow the private key to be re-generated
archiveRemGenPrivKey [2] BOOLEAN}
一set to TRUE if sender wishes receiver to archive the private
一key of a key pair which the receiver generates in response to
一this request; set to FALSE if no archival is desired.
EncryptedKey::= CHOICE{
GB / T 19 77 1 - 20 05
en cryptedValueE ncryptedValue,
envelopedData [0] EnvelopedData}
一T he encrypted private key MUST be placed in the envelopedData
一encryptedContentInfo encryptedContent OCTET STRING.
EncryptedValue::= SEQUENCE{
intendedAlg仁。〕AlgorithmIdentifier OPTIONAL,
一the intended algorithm for which the value will be used
symmAlg仁1] AlgorithmIdentifier OPTIONAL,
一the symmetric algorithm used to encrypt the value
encSymmKey [2] BIT STRING OPTIONAL.,
一the (encrypted) symmetric key used to encrypt the value
keyAlg [3] AlgorithmIdentifier OPTIONAL,
一algorithm used to encrypt the symmetric key
valueHint仁4] OCTET STRING OPTIONAL,
一a brief description or identifier of the encValue content
一(may be meaningful only to the sending entity, and used only
一if EncryptedValue might be re-examined by the sending entity
一in the future)
encValue BIT STRING }
一the encrypted value itself
KeyGenParameters::= OCTET STRING
id-regCtrl-oldCertld OBJECT IDENTIFIER::= {id-regCtrl 5}
--with syntax:
OldCertId::= CertId
CertId::= SEQUENCE{
issuer GeneralName,
serialNumber INTEGER}
id-regCtrl-protoco]EncrKey OBJECT IDENTIFIER::= {id-regCtrl 6}
一with syntax:
ProtocolEncrKey::= SubjectPublicKeyInfo
一Registration Info in CRMF
id-regInfo OBJECT IDENTIFIER::= {id-pkip 2}
id-regInfo-utf8Pairs OBJECT IDENTIFIER::= {id-regInfo I}
一with syntax
UTF8Pairs::二UTF8String
id-regInfo-certReq OBJECT IDENTIFIER::= {id-reglnfo 2}
-with syntax
CertReq::= CertRequest
END
标准分享网 www.bzfxw.com 免费下载
关注微信公众号