GBT19771
2023-04-21
来源:步旅网
ICS 35.100.70一一L 79苟日中华人民共和国国家标准GB/T 19771-2005信息技术安全技术公钥基础设施 PKI组件最小互操作规范 on Informatitechnology-Security technology-Public key infrastructure一Mi nimum interoperability specification for PKI components2005-05-25发布2005-12-01实施丰 督锲臀策蟾臀袋臀臀暴发“GB/T 19771-2005ml 1青 本标准是在参考美国国家标准与技术研究院(NIST)提出的《公钥基础设施PKI组件最小互操作规范》第二版内容的基础上修改而成,同时本标准还参照了包括证书管理策略(CMP )、证书请求消息格式(CRMF), FIPS许可的密码算法和X9密码算法等相关的规范。 本标准凡涉及密码算法相关内容,按国家有关法规实施。本标准中引用的SHA-1,RSA,SHA1-MAC,SHAI-HMAC ,DES-MAC,tDEA密码算法均为举例性说明,具体使用时均须采用国家商用密码管理委员会批准的相应算法。 本标准的附录A、附录B、附录C、附录D为规范性附录。本标准由中华人民共和国信息产业部提出。 本标准由全国信息安全标准化技术委员会(TC260 )归口。 本标准起草单位:信息安全国家重点实验室、中国电子技术标准化研究所。本标准主要起草人:冯登国、吴志刚、荆继武、高能、向继、张凯、周瑞辉、徐佳、林爆锵、曹政、 余蜻、廖洪蛮、李丹、罗锋盈、陈星。GB/T 19771-2005引 言数字签名证书在政府服务商业和法律程序中代替手写签名,并且允许以前没有联系的双方可靠地 鉴别对方以进行商业事务。加密证书提供了加密传输和加密算法的应用,来建立或保护对称密钥以提供机密性。这样的一个公钥基础设施(PKI )系统和它相应的证书,也许远远超出了一些应用的实际需要,对那些特别的应用要求来说改进的证书和协议更合适。GB/T 19771-2005信息技术安全技术公钥基础设施 PKI组件最小互操作规范 1范围本标准支持大规模公钥基础设施(PKI负责发布、撤销和管理用于数字签名及密钥管理的公钥证 书)的互操作性。本标准为不同的PKI开发者所开发的组件产品提供了基本的互操作性参考。本标准的内容涉及: 公钥证书的产生、更新和撤销;签名的产生和验证; 证书和证书认证路径验证。 本标准主要包括了对证书、证书撤销列表(CRI.)扩展和一套事务的描述。这些事务包括证书申请、证书更新、证书撤销以及从资料库检索证书和CRLa本标准主要以最终用户的角度来看待PKI的互操作性,即怎样申请和获得一个证书;怎样签署文 档;怎样检索他人的证书;怎样验证签名。就像下面所提及的,PKI的“内部”操作规范还没有达到足够成熟,因此它们没有被详细规定。在本标准中PKI被分成五个组件: 颁发和撤销证书的证书认证机构(CAs);确保公钥和证书持有者的身份以及别的属性之间绑定的注册机构(RAs ) ;获得证书和签署文档的证书持有者; 验证签名并且执行密钥管理协议以及验证证书认证路径的客户; 存储并提供对证书和CRL查询的资料库。许多实体在功能上既是证书持有者又是客户。CAs和RAs也是如此。终端实体证书持有者通常 也是客户。当然,也有一些客户并不是证书持有者。资料库不必是证书持有者和客户。本标准仅仅涉及资料库协议的一部分,那就是客户要求从资料 库中获得证书和CRI.的信息。本标准将轻型目录访问协议(LDAP)版本2作为用户访问资料库的传输手段,因为它是被广泛接 受和采用的方法。例如,这种选择既不强调CA用来更新资料库的标准化协议,也不强调资料库之间互相映射的协议,尽管它们都是需要的。前者可以具体情况具体分析以解决CA和资料库之间的协议,后者也许并不必要。在通常的证书状态确认(本标准遵循的)中,资料库不是可信实体,CA对CRL的签名更可靠。在 线证书状态实时确认机制要求资料库是可信实体,而且它们也能让客户相信他们的身份。这样的证书状态确认协议超出了本标准的范围,但是在一些应用中可能需要实时证书状态确认,所以在以后的修订版中可能会解决这个问题。本标准中没有提供让资料库验证使用者的协议, 该协议是资料库记费应用的前提。虽然这可能是资料库重要的商用模式,但目前人们对该模式的看法还没有达到一致,也没有统一的支撑协议。在以后的修订版中可能会解决这个问题。在一些情况下,带外事务也是本标准中事务的一部分。带外事务的形式和内容超出了本标准的 范围。本标准假定CA,RA和证书持有者是物理_ L分离的。如果这些实体在物理上是在一起的话,那么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,的机制。 CRL是一个广泛使用的机制,它用于撤销证书和验证未到期证书的状态。CRL的使用可能还没有统一。一些CA选择在线实时确认证书状态的机制,CRI,的产生对于别的CA的使用者来说应该具有互操作性。除了当前检查证书的有效性,CRI,还提供了一个重要的机制,即将证书以前的撤销状态存档。如果一个带日期签名的签名日期在证书的有效期内,那么该签名是合法的,当前的CRI,不会显示证书被撤销的信息。在本标准中, 假设CA可以产生CRI.,客户在验证证书时可以使用CRL.2规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有 的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。GB/T 16264. 8-2005信息技术IEC 9594-8:2001,IDT)开放系统互连目录第8部分:公钥和属性证书框架((IS()/ ISO/IEC 8825-1:2002信息技术ASN. 1编码规则规则(CER)和非典型编码规则(DER)规范第1部分:基本编码规则(BER )、正则编码 ANSI X9.52用于金融服务业的公钥密码算法:三重DES操作模式ANSI X9.55用于金融服务业的公钥密码算法:公钥证书扩展和证书撤销列表扩展RFC 822 Internet文本邮件的标准消息格式RFC 1766语言标识用标签 RFC 1777轻量级目录访问协议RFC 1959 LDAPURI,格式GB/T 19771-2005 RFC 2104用于消息认证的带密钥散列函数RFC 2202 HMAC-MD5和HMAC-SHA-1测试用例RFC 2313 PKCS # 1 RSA加密版本1.5 RFC 2314 PKCS # 10认证请求语法版本1.5RFC 2459因特网X. 509公开密钥基础设施证书和证书撤销列表框架 RFC 2510因特网X. 509公开密钥基础设施证书管理协议RFC 2511因特网X. 509公开密钥基础设施证书消息格式 RFC 2559因特网X. 509公开密钥基础设施操作协议一轻量目录访问协议版本2RFC 2985 PKCS # 9可选的对象类和参数类型版本2.0FI PS-113:1985计算机数据加密鉴别PKCS #n3术语和定义下列术语和定义适用于本标准。 3.1密码令牌接口标准版本2.0抽象语法记法一( ASN. 1) Abstract Syntax Notation 1(ASN. 1)用来组织复杂数据对象的表示法。 3.2许可accredi t认可一个实体或个人去执行特定动作。 3.3公钥证书publ ic key certificate用户的公钥连同其他信息,并由发布该证书的证书认证机构的私钥进行加密使其不可伪造。 3.4 证书持有者certificate holder有效证书的主体对应的实体。 3.5证书策略c ertificate policy 命名的一组规则,指出证书对具有公共安全要求的特定团体和/或应用的适用范围。例如,一个特定的证书策略表明,用于确认电子数据交换贸易证书的适用范围是价格在某一预定范围内的交易。3.6 certi证书用户ficate user需要确切地知道另一实体的公开密钥的某一实体。 3.7证书使用系统c ertificate-using system证书用户使用的、本标准定义的那些功能实现。 3.8证书认证机构( CA) Certificate Authority(CA)负责创建和分配证书,受用户信任的权威机构。用户可以选择该机构为其创建密钥。 3.9证书认证路径c ertification path一个DI T中对象证书的有序序列,通过处理该有序序列及其起始对象的公钥可以获得该路径的末端对象的公钥。GB/T 19771-20053.10认证业务说明(CPS) Certification Practice Statement(CPS)证书认证机构发放证书时遵循的业务说明。 3.11CRL分布点 CRL distribution point一个CR工团目录项或其他CRI .分发源;由CRI,分布点分发的CRL可以包括仅对某CA所发证书全集某个子集的撤销条目,或者可以包括有多个CA的撤销条目。3. 12证书撤销列表(CRL) Certificate Revocation List(CRL) 一个已标识的列表,它指定了一套证书发布者认为无效的证书。除了普通CRI,外,还定义了一些特殊的CRL类型用于覆盖特殊领域的CRI.3.13发证cert ify颁发一个证书的行为。 3.14客户c lient使用PKI来获得证书并且去验证证书和签名的功能。 3. 15增量CRL delta-CRL部分撤销列表,在可参考的基础CRI ,发布以后,这些证书更改了其撤销状态。3.16可辨别编码规则( DER) Distinguished Encoding Rules(DER)对ASN. 1对象进行编码的规则。注:本标准中使用DER对ASN. 1对象进行编码3.17数字签名di gital signature允许接收者验证签名人的身份和数据完整性的数据单元。 3.18目录服务(DS) Directory Service(DS)分布在网络中的各种节点或服务器提供的分布式数据库服务。 3.19终端实体end entity不以签署证书为目的而使用其私钥的证书主体或者是依赖(证书)方。 3.20散列函数, 哈希函数hash function 将值从一个大的(可能很大)定义域映射到一个较小值域的(数学)函数。“好的”散列函数是把该函数应用到大的定义域中的若干值的(大)集合的结果可以均匀地(和随机地)被分布在该范围上。3.21散列码ha sh code散列函数的输出比特串。 3.22 消息认证码(MAC) Message Authentication Code(MAC)通过密码技术由消息产生的认证数据。 GB/T 19771-20053.23消息摘要me ssage digest散列一个消息后得到的固定长度数据。 3.24带外事务out of band不是通过电子形式,而是通过通常的物理形式进行的一些PKI组件的事务。 3.25策略映射pol icy mapping当某个域中的一个CA认证另一个域中的一个CA时,在第二个域中的特定证书策略可能被第一 个域中的证书认证机构认为等价(但不必在各方面均相同)于第一个域中认可的特定证书策略。3.26注册机构(RA) Registration Authority(RA) 为用户办理证书申请、身份审核、证书下载、证书更新、证书注销以及密钥恢复等实际业务的办事机构或业务受理点。3.27资料库r epository存储证书和CRL等信息,并提供无需验证的信息检索服务的数据库。 3.28自颁发证书s elf-issued certificate证书的主体和颁发者相同的CA证书。 3.29统一资源标识符(URI) Uni form Resource Identifier(URI)包含了名字或地址的短数据串,指向web上的某个对象。 3.30统一资源定位符(URL) Uniform Resource Locator(URL)包含地址的短数据串,指向web上的某个对象,URI是URI的子集。 4缩略语 下列缩略语适用于本标准。CA证书认证机构 CRI,证书撤销列表 PKCS公钥密码系统 PKI公钥基础设施 POP拥有证明RA注册机构 5 PKI组件规范5.1概述 本章规定了PKI各组件进行互操作时所需的功能和事务的最小集合。它们分别是CA, RA、证书持有者和PKI客户的规范。5.2证书认证机构(CA)5.2.1概述CA负责生成、撤销、公布和存档证书。资料库使得所有证书使用者都可以获得证书和CRI _s的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)05.2.2与互操作性有关的CA功能要求CA执行下列功能: 颁发并传送证书给终端实体和其他的CA;接收来自RA的证书撤销请求; 将证书和CRL存人资料库; 请求CA证书。a)颁发数字签名证书 CA支持三种有关数字签名证书的证书请求: RA发起的注册请求、更新和自我注册请求。根 据每种请求的不同,CA以不同的方式来鉴别这些申请证书主体的身份。潜在的证书持有者在自我注册请求中提供一个证据证明自己的身份已经得到了RA的核实,该证据是由从RA 那里获得的秘密信息导出的。当用户与RA物理上在一起时,RA产生并签署基于RA的登 记请求来保证该用户的身份。在证书更新请求中,当前有效证书的主体可以用它们的私钥签 名来保证它们身份的真实性。RA发起的证书请求: RA保证该用户的身份并将其和公钥绑定在一起。当CA接收到来自授权RA的证书请求时, CA就处理该请求,如果接受,就生成新证书,并将其放到资料库中,然 后将证书发给相应的RA, CA也可以直接把新证书发给该证书的持有者。如果基于RA的证书请求不是来自一个授权的RA,即签名无效, 或者包含不匹配信息,CA将会拒绝该证书请 求。如果CA拒绝了该证书请求,它将会向RA报告失败并说明原因。在自我注册证书请求中,RA为潜在证书持有者提供了一个秘密信息。请求实体产生自己的 公私钥对,组成一个证书请求消息,并用相应的私钥签名,被签名部分包括基于RA提供的秘密导出的认证信息。CA接收来自实体的证书请求,通过认证信息验证请求者的身份并且验 证实体拥有相应的私钥。如果接受,CA就产生新证书,并将其放到资料库中,然后将证书发给证书持有者。如果认证信息验证不通过,签名无效,或者包含不匹配信息,CA将会拒绝该 证书请求。如果CA拒绝了自我注册证书请求, 它将会向申请者报告失败并说明原因。证书更新请求:申请者已确定的身份通过该更新请求消息来验证。证书持有者产生更新请求 并直接发给CA, CA处理证书更新请求,如果正确的话,就把新证书发给证书持有者,并将其 放入资料库。如果签名是无效的,或者请求实体当前是非法的,或者CA认证业务说明或证书策略不允许更新请求,CA将会拒绝该证书更新请求。如果CA拒绝了更新请求,它将会向请 求实体报告失败并说明原因。b)颁发加密证书 CA可以支持某个请求者发出的加密证书的证书请求, 该请求者拥有该CA颁发的有效签名 证书。请求者的身份由对请求的数字签名来验证。本标准中规定请求者的密钥对由第三方集中产生并通过带外方式提供给CA} 在集中密钥管理证书请求中,证书持有者生成一个证书请求,说明自己想要的加密算法,并用 GB/T 19771-2005 当前得到该CA认可的签名密钥来对该请求签名。CA响应该请求,发还一个证书和加密私钥。 c)交叉认证 在一定的约束条件下CA可向别的CA颁发证书。交叉认证的决定是在带外做出的,并且要通过认证业务说明和证书策略检查。每个CA都会对它们的使用者的路径验证做出适当的约 束。在获得别的CA的公钥后, 该CA生成证书并将其存放到资料库中。可选的, 交叉认证的CA之间可以交换证书,构造证书对并把它们放人资料库。 d)撤销证书CA产生和发布证书撤销列表(CRLs) o CRL中包括所有被撤销但没有到期的证书。可选的,CA也可以颁发间接的和增量CRL。被颁发CRL的形式由CA的认证业务说明决定。 在CA为所有的撤销证书仅颁布唯一的CRI,的情况下: 1)新的CRI ,产生时,老CRI,中的全部信息将放到它的里面,那些新被撤销的证书将被加人 到新的CRI,。老CRL中带certificateHold原因代码的证书也将被放人新的CRL,继续保持同样的原因代码,变成一个不同的原因代码,或是被新CRL忽略。如果被忽略就表明 CA将保证证书主体和公钥之间的绑定。那种决定撤销但还没有被撤销的证书将放人新 的CRI ,,既使在新CRI,发布之前它已经到期了。2)在这种情况下, CA只撤销它们自己颁发的证书。(撤销可能来自一个签名请求,或是CA 自己决定撤销。本标准中不考虑CA自己撤销证书的情况)撤销请求的签署者或者是证书持有者,或者是代表证书持有者或证书持有者组织的权威实体(比如被授权的RA),在把 证书放人CRI,之前,CA要确认验证撤销请求。撤销请求的合法性包括请求签名的合法性。对RA签名的撤销请求进行带外验证,根据证书策略是可选的。 CA发布X. 509版本2的CRI,(版本2的CRL对应版本3的证书)。字段和扩展,以及赋给它们的值,要与6. 3. 2一致。产生和签署了CRI,之后,CA要把它放到资料库中去。 e)颁发证书、交叉证书和CRICA应当能够颁发证书,交叉证书对和CRI ,以供PKI client检索。CA也应能颁发CA证书、交叉证书对、CRI ,和终端实体的加密证书。终端实体数字签名证书的颁发是可选的。用于更 新目录的机制超出本标准范围。f)请求CA证书 CA应能向层次更高的CA申请证书,以支持PKI的层次信任模型。这个请求可以参考6. 6. 2中的描述。这个证书请求将通过6.2.3.4中描述的bas icConstraints扩展来把该请求CA确定为一个实体。 5.2.3电子事务集合提供证书管理服务所需的电子事务如下: 处理终端实体的证书请求和证书撤销请求;将证书和CRI .放人资料库;为了验证签名的有效性从资料库中检索证书和CRI . CA处理在CertReq消息中的RA发起的注册请求。CertReq消息由RA在PKIProtection结构里签名。通过签署请求消息,RA保证证书持有者的身份并且确认它拥有相应私钥。CA以CertRep消息回复RA或者证书持有者。如果接受请求,CertRep中包含新的证书。如果拒绝请求,报文中包含错误代码。(见6. 6. 2 )CA支持自我注册证书请求, 此时请求实体还不是证书持有者。CA要求请求实体利用带外方式从RA获得的秘密产生认证信息。这一认证信息代替RA的签名保证请求者的身份是经过RA核实的。以带外方式从RA获得的秘密可以用来产生mac或者带密钥的散列函数的对称密钥。请求实体产生GB/T 19771-2005CertReq消息并且用相应的私钥签名。这一消息利用从RA获得的秘密加以保护。之后,CA产生Cer-tRep消息,如果请求消息正确,则CertRep中包含新的证书。如果拒绝请求,报文中包含错误代码。(见6. 6. 3和6.6.4)CA处理以Cer tReq消息形式出现的证书更新请求。这种消息被请求实体发到CA。这个消息包括证书持有者的标识名,当前证书的序列号,新的公钥以及拥有相应私钥的证明。消息可以包括预定的有效期和建议的密钥id。这个消息可用证书持有者的有效证书(未过期,未被撤销)私钥签署。CA用CertRep消息回复申请者。这个消息包含一个新证书或者错误代码。如果颁发新证书的话,证书中将包含证书持有者的标识名和新的公钥。CA可以自由修改请求中的合法期限。如果申请消息中没有密钥标识符,CA将产生一个(见6.6.5)0CA应该接收从RA发来的Re vReq消息。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)05.3.2与互操作性有关的RA功能要求RA应该执行下列功能: 接受和验证证书请求; 向CA发送证书请求; 从资料库检索证书和CRL; 产生证书撤销请求。 RA应该能够连同CA的证书一起把新签署的证书发给证书持有者。RA应该可以代表不再拥有它们的私钥并且怀疑该私钥己泄露的证书持有者产生并签署证书撤销 请求(丢失而并不认为已泄露的签名密钥不是必须被撤销;这由策略决定。注意丢失的保密性的密钥无论如何都必须被撤销,否则发送方就会加密和传输接受方无法解秘的消息)。如果CA的认证业务说明允许,RA也应该可以代表证书持有者的组织产生并签署证书撤销请求。撤销请求由后来把它们发送GB/T 19771-2005给颁发证书的CA的RA所签署。5.3.3事务集合RA所用电子事务能够实现终端实体证书的请求、发送和撤销,以及为了验证签名而从资料库中检 索证书和CRI.。下面将给出这些事务的一个概括;它们将在6. 6中具体地描述。RA接收来自潜在证书持有者的Ce rtReq格式的证书请求。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概述PKI为证书持有者提供证书管理功能。证书持有者包括CAs,RAs和其他的终端实体。终端实体 可能是个人用户和计算机系统(例如路由器和防火墙),也可能是应用程序(CAs和RAs除外)。PKI证书持有者生成签名并且支持PKI事务来获取、更新和撤销他们的证书。 5.4.2与互操作性相关的PKI证书持有者功能要求证书持有者的功能: 生成签名; 生成证书请求;请求证书撤销; 请求证书更新(可选项)。 证书持有者同时也是客户,因此它也具备5. 5中定义的客户功能。5.4.3证书持有者事务集合证书持有者的事务能使证书持有者请求新的证书,以及撤销当前持有的证书。所有的证书持有者 事务都由发放证书的CA及其CA授权的RA执行。证书持有者应该能够请求撤销他们自己的证书。这个事务由CA执行,允许证书持有者签署他们 的证书撤销请求。证书持有者为每个他们希望撤销的证书产生一个RevReq消息并发送给CAoRevReq消息要包括撤销原因。CA产生RevRep消息并返还给证书持有者。这个事务过程在6.6.7中有详细描述。可选的,证书持有者能够实现证书更新请求。这个事务由CA执行,允许证书持有者签署自己的证 书请求(不需要RA验证其身份)。CA可以支持该项事务,但是它的具体使用由认证业务说明决定。在不与RA交互的情况下请求一个新的证书,证书持有者产生一个CertReq消息,并且使用新的和当前的私钥进行签名。CA产生CertRep消息,如果请求成功,就包含一个新的证书。如果请求被拒绝,就包含错误代码。证书持有者能够实现自我注册的证书请求。 证书持有者也可以实现加密证书请求。在此事务中,证书持有者产生一个证书请求,说明希望的密 钥管理算法,并用一个有效的签名密钥对该请求签名。CA响应一个证书和加了密的私钥或是错误代码。GB/T 19771-20055.5客户规范5.5.1客户概述PKI客户使用PKI来为证书持有者和证书使用者,包括CA和其他的终端实体提供证书处理功 能。终端实体也可以包括RA,个人用户和计算机系统(如路由器和防火墙)。在最小意义上, PKI客户验证签名,获得证书和CRLs,并验证证书认证路径。同时具有证书持有者身份的客户也能产生签名,也可以支持撤销或更新证书的PKI事务。5.5.2与互操作性相关的PKI客户功能要求 客户的最小功能集合:验证签名; 从查询服务器中检索证书和CRLs ;验证证书认证路径。 5. 5. 3 PKI客户事务集合客户事务使客户能从资料库中获得证书和CRI ,s。所有的事务都与证书资料库有关。所有的客户必须支持以下事务: 检索证书—这个事务允许一个用户利用LDAP绑定目录服务或指定资料库,并根据主体名或证书序列号和颁发者的名字检索证书; 检索CRI .—这个事务允许一个用户利用LDAP绑定目录服务或指定资料库,来检索一个特定CA的当前CRL或是某个特定的CRL。所有的客户都必须支持轻型目录访问协议 M DAP),以检索证书和CRLs。事务的详细规定参见RFC1777 06数据格式6.1数据格式概述 必须为PKI组件之间的互操作定义基本的数据格式。数据格式包括证书、CRL和事务格式。本标准包括了PKI组件之间、PKI client和PKI组件之间所有事务的数据格式。6.2证书格式本标准使用GB/T 16264. 8-2005的证书格式。虽然ITU-T建议的X. 509的修订版没有公布,但版本3的格式已经被广泛采用,并且ANSI的X9. 55和IETF的RFC 2459都对其作了详细说明。GB/T 16264. 8-2005的证书包括以下内容: Version版本;Seri al Number证书序列号;I ssuer Signature Algorithm颁发者签名算法;I ssuer Distinguished Name颁发者可辨别名;Val idity Period证书有效时间; Subject Distinguished Name主体可辨别名;Subj ect Public Key Information主体公钥信息; Issuer Unique Identifier颁发者唯一标识符(可选,本标准不使用);Subj ect Unique Identifie:主体唯一标识符(可选,本标准不使用);Extensi ons证书扩展(可选);I ssuers Signature on all the above fields颁发者对以上所有域的签名。6.2. 1证书字段 X. 509证书语法的ASN. 1定义见附录A。出于签名考虑,证书用ASN. 1 DER编码表示。ASN. 1DER是一个为每个元素赋予标签、长度和值的编码系统。详见ISO/IEC 8825.1-2002.以下介绍GB/T 16264. 8-----2005的证书。除了可选的subjectUniqueID和issuerUniquelD字段,GB/T 19771-2005CA应该产生下面这些字段,而且客户根据GB/T 16264. 8-2005可以处理它们。CA可以不颁发包括issuerUniqueID和subjectUniquelD的证书。客户也可以不处理subjectUniqueID和issuerUniqueID o他们可以拒绝那些含有这两部分字段的证书。a) Versionversi on字段表示证书的版本号。该字段的值应为2,以表示版本3证书。b) Serial Number serialNumber是CA给每个证书分配的一个整数。对一个给定的CA,它提供的证书序列号应该是唯一的(即, 颁发者和证书序列号唯一标识一个证书)。c) Signatures ignature字段包含了一个算法标识符,用于表示签署证书的算法。此字段包括一个algorith-mIdenti fier,用于传递参数。在6. 2. 2. 2中列出了algorithmIdentifier的内容。证书不应该使用s ignature字段去传递参数(看下面的Subject Public Key Information),因为该字段没有被 颁发者的签名保护。d) Issuer Name issuer Name字段提供了签署证书机构的全球唯一标识符。颁发者的名字是一个X. 500标识名。该标识名由属性类型和属性值组成。通常属性类型由X. 500系列建议定义,属性值为Di rectoryString类型。Di rectoryString可选择PrintableString, Teletex5tring, BMPString, UniversalString和 Utf8String中的一种。PrintableString是一个基本拉丁字符集,可使用大小写字母,数字和少量特殊字符。Tel etexString是PrintableString的扩展集,在拉丁字符中加人了重音符和日本字符。BMPSt ring是双字节字符集,它满足绝大多数的欧洲字符集。UniversalString是多字节字符集, 包括了所有的主要字符集。Utf8String是UniversalString的替代编码。当创建新名字时,CA要从Pri ntableString, BMPString,和Utf8String里选择最严格的类型来创建Di rectoryString。也就是说,仅需基本拉丁字符的AttributeValue一般就使用Print-abl eString。包含重音符拉丁字符的AttributeValue就使用BMPString。当BMPString字符 f集不够用时才使用Ut8String,仍然保留Tel etexString,和UniversalString是为了向后兼容性的需要,不应该在新主体的证书中使用它们。但是, 此种类型可能会在已经颁发的证书中使用。Clients可能会收到使用这些类型的证书。 ssuerAl可选的名字可放在itName扩展字段,一些GB/T 16264. 8-2005证书的使用者希望i ssuer字段为空。然而,遵从本标准的证书中的这个字段都含有X. 500的可辨别名。e) Validityval idity字段说明了证书开始生效的日期(notBefore)和变成无效的日期(notAfter) o validity字段的时间表示形式用UTCTi me或GeneralizedTimeo 对于1950年到2049年(含)的日期,validity字段一般使用UTCTTimeo UTCTTime使用格林威治时间,而且要精确到秒。秒要清楚表示,即使为零。UCTCTi me的格式为YYMMD-DHHMMSSZ, 年字段做如下规定: 1)如果YY等于或大于50,年代为19YY; 2)如果YY小于50,年代为20YYo对于2050年以后的日期,val idity字段一般用GeneralizedTimeo GeneralizedTime使用格林威治时间,而且要精确到秒。秒要清楚表示,即使为零。General izedTime的格式为YYMMD-DHHMMSSZ. GeneralizedTime不能包括分秒。(1950年前的日期对本标准来说无效,所以GB/T 19771-2005 不予考虑。)f) Subject Name subject Name字段的目的是给证书主体提供唯一的标识符。主体名使用X. 500可辨别名。像在i ssuer name中描述的一样,在构建DirectoryString时CA使用最严格的选择。可替代的名字可放在subj ectAltName扩展中,GB/T 16264. 8-2005证书的使用者希望本字段为空。然而,遵从本标准的证书都在这个字段里带有主体的X. 500可辨别名。 g) Subject Public Key InformationSub jectPublicKeyInfo字段是用来携带公钥和公钥使用的算法的。它包括subjectPublicKey字段和al gorithm1dentifie:字段,algorithmIdentifier字段有algorithm and parameters次级 字段。h) Unique Identifiers证书里的subi ectUniqueIdentifie:和issuerUniqueIdentifier字段是用来处理主体名和颁发者名被过时重用的可能性。CA不会颁发含有这些唯一标识符的证书。PKI客户也不会被要求 去处理含有这些标识符的证书。当然,如果它们不处理这些字段,他们会拒绝包含这些字段 的证书。 i ) Extesionext ension字段的增加是GB/T 16264. 8-2005证书最主要的改变。扩展有三部分:extnId,标识该扩展,cri tical,说明该扩展是critical或noncritical的,extnValue,扩展值。一个证书可以 包括任意多个扩展字段,其中也包括局部定义的扩展。如果设置了critical标志,就要求客户或者能够处理该扩展字段,或者不能验证该证书。 在GB/T 16264. 8-2005中有完整的扩展标准。6. 2. 3详述了这些标准扩展在本标准中的使用。 j )Issuer'sSi gnature实际的证书签名使用SI GNED参数类型,扩展为被签名的数据的SEQUENCE(例如,证书), 算法标识符,以及一个BIT STRING形式的实际签名。algorithmIdentifier标识了用来对证书签名的算法。尽管这个al gorithmIdentifier字段包括了一个parameters字段,在理论上可以用来传递签名算法的参数( 见6. 2. 2. 3 ),但它本身并不是一个被签名的对象。parameters字段不能用来传递参数。当需要获得验证签名的参数时,应当从颁发证书的CA的证书的subject -Publ icKeyInfo字段中获得相应参数。6.2.2加密算法6.2.2. 1加密算法概述 本标准使用四类算法:散列函数、数字签名算法、消息认证算法和对称加密算法。当描述数字签名算法时,通常与散列函数一起介绍。当描述证书中的公钥时,散列函数被忽略。这就允许当散列函数被另一个更强的算法替换时,证书也能使用。 要求一个PKI组件至少应该实现其中一个数字签名算法。对于简单的PKI客户组件来说,能验证由其中一个算法生成的签名已经足够了;要求其他的组件能够产生和验证由其中一个算法生成的签名。遵守本标准的PKI组件应该支持一个加密算法。 允许相应的组件使用额外的算法,甚至当它们不能使用所有的这些算法时。比如,支持这里的一个密钥协定算法的客户可以使用别的密钥传递算法,即使它不支持这里的密钥传递算法。6.2.2.2散列函数 散列函数用于为证书和CR工J产生数字签名,它也用于将共享秘密散列为报文确认码。本标准中建议使用一种散列函数。以SHA-1为例,它是通过对象标识符以及数字签名算法表示 的。SHA-1的ASN. 1对象标识符是:GB/T 19771-2005shal OBJECT IDENTIFIER::二{ iso(1)identified-organization(3) oiw(14) secsig(3) algorithm(2) 26}只要该对象标识符在算法类型中出现,相应的参数域应该被忽略,如果出现,必须为NULL. 6.2.2.3数字签名算法GB/T 16264. 8-2005中指定了发放证书的签名算法和其他主体的加密算法。这两种算法可以是不同的。本标准以RFC 2313中的RSA算法为例。RSA的签名算法在RFC 2313中定义。RSA也可使用几种散列算法。本标准中引用的RSA定义为:pkcs-1 OBJECT IDENTIFIER::={iso(1)member-body(2)U S(840)rsadsi (113549) pkcs(1)1} sha-lWithRSAEncryption OBJECT IDENTIFIER::={pkcs-1(1)5}在RSA签署的证书和证书撤销列表中, 它应出现在SIGNED类型中和signature字段中。只要实体的标识符作为算法标识符出现,那么参数的值必须是NULI_o当证书和证书撤销列表签署时,签名将按下列规则生成和加密:证书和证书撤销列表按ASN. 1DER加密,并作为SHA-1的散列函数的输入。SHA-1散列函数的输出为OCTET STRING并按照RSA的加密算法加密。签署证书时,RSA生成一个整数yo y的值按照ASN. 1的BIT STRING输出。在y的signature字段包含了证书或证书撤销列表。(通常分为两步,整数y先转化为octet string。然后再转化为bit string. )当CA发放了一个证书,并且它的subj ectPublicKeylnfo字段包含了RSA的公钥,那么对象标识符rsaEncryption将作为algorithmIdentifier出现在subjectPublickeyInfo字段中,来标识RSA的公钥。 rsaEncryption OBJECT IDENTIFIER::={pkcs-1 1}只要rsaEncrypti on对象标识符在算法类型中出现,那么参数字段必为NULL, RSA的公钥必须为ASN. 1的RSAPublicKey:的类型。RSAPubl icKey::=SEQUENCE{modul us INTEGER,一npubl icExponent INTEGER一e)系数为n, publicExponent为公共指数e, RSAPublicKey编码后为BIT STRING subjectPublicKey的值。RSAPubl icKey既出现在RSA的签名密钥中,也在RSA的加密密钥中出现。虽然不禁止只使用一个密钥来进行加密和签名,但不提倡这样做。6.2.2.4消息认证算法 本标准建议支持两种消息认证算法。以DES-MAC和SHA1-MAC为例,推荐使用SHAT-MAC,DES-MAC是为了保证向后的兼容性。SHA1-MAC 本算法通过为数据计算一个SHA- i HMAC值(在RFC2104中详细定义)而提供完整性保护。它的算法标识符如下:SHA1一HMAC OBJECT IDENTIFIER::={136155812}本标准中使用的mac长度为96bi toDES-MAC 本算法通过为数据计算一个DES MAC值(在FIPS-113中详细定义)而提供完整性保护。它的算法标识符如下:DES-MAC OBJECT IDENTIFIER::={i so(1)identified-organization(3) oiw(14) secsig(3) algorithm(2) 10GB/T 19771-2005一MAC的长度是一个整数型的参数,在本标准中限制为32} 参数域包含一个整数,表明了MAC的长度,在本标准中规定该值取为3206.2.2.5对称加密算法本标准使用了对称密钥算法来实现挑战一响应协议和保护私钥传输。在本标准中,以使用t DEA(Triple Data Encryption Algorithm)算法的ECB模式为例说明对称密钥算法的使用。t DEA算法在ANSI X9. 52中定义。tDEA算法基于DES算法,使用3个56 bit的密钥:Kl,K2和K3。在本标准中,使用双密钥模式,K1=K3e tDEA算法的密钥绝对不能出现在GB/T 16264. 8-2005证书中。有的情况下,会在PKIMessage中传输tDEA的密钥,这时候,tDEA的密钥必须是经过加密的。下文说明了tDEA的双密钥、ECB模式的加密方法和密钥的编码格式。 t DEA算法有AlgorithmIdentifier,而且要有tECB的OID。双密钥选项在ECBParams结构中指明。ASN. 1表示如下:TDEAI dentifier::=AlgorithmIdentifier({TDEAModes}} TDEAModes ALGORITHM-ID::二{{OID tECB PARMS ECBParms}}一mode 1一{OID tCBC PARMS TDEAParms}}一mode 2一{OID tCBC-I PARMS TDEAParms}}一mode 3一 {OID tCFB PARMS CFBParms}}一mode 4一{OID tCFB-P PARMS CFBParms)}一mode 5一{OI D tOFB PARMS TDEAParms}}一mode 6一{OID tOFB-I PARMS TDEAParms},一mode 7一} ECBParms::=TDEAParms (WITH COMPONENTS{·一i vGeneration ABSENT}) TDEAParms::=SEQUENCE{keyi ng0ptions Keying0ptions OPTIONAL,i vGeneration [0] IVGeneration OPTIONAL} 一本标准中只支持双密钥 Keying0ptions::=BIT STRING{opti on-1 (0),一(3-key) K1,K2 and K3 are independent keysopti on-2 (1),一(2-key) K1 and K2 are independent and K3=K1opti on-3 (2)一(1-key) Kl=K2=K3) i d-ansi-x952 OBJECT IDENTIFIER::={i so(1)member-body(2) us(840) ansi-x952(10047)}Second CRADA Draft,Version 2mode OBJECT IDENTIFIER::={id-ansi-x952 1}tECB OBJECT IDENTIFIER::={mode 1}有的情况下,需要对t DEA的密钥进行编码,就是两个密钥的直接串接。TwoKeys二[K1}K2],TwoKeys的最高位比特是Kl的最高位比特。GB/T 19771-20056.2.3证书扩展6.2.3. 1证书扩展概述在GB/T 16264. 8-2005中定义了一套标准扩展集合。扩展由三部分组成:扩展名称、关键性标识位和扩展取值。在GB/T 16264. 8-2005中做了如下规定:客户如果不能处理设置了关键性标识位的扩展,就不能验证证书是否有效。标准化的扩展可以分为四类:密钥和策略信息;主体和颁发者的特征;验证路径限制;CRL标识 扩展。6.2.3.2密钥和策略信息 此类扩展用于区分特定的公钥和证书,它们可以用于区别具有多个证书的证书认证机构(CA)中某一特定的公钥/证书,有助于客户查找某个特定的CA证书,以便建立验证路径。这些扩展可以限制密钥用途,提供CA证书中关于策略映射的信息。a)权威密钥标识符 扩展aut horityKeyIdentifier提供了一种区别签名证书的特定私钥的手段,标识性信息既可以 基于密钥标识符,也可以基于颁布者名字和序列号。在本标准中,使用密钥标识符的方法。本扩展用于具有多个签名密钥的颁发者(既可能是多个密钥对,也可能是正在进行密钥更换),证 书认证机构(CA)应当能够产生本扩展,而且客户应能查找和验证具有多个数字签名密钥的证书颁发者CA的验证路径。建议客户既能够处理密钥标识符,又能够处理由证书颁发者和证 书序列号组成的密钥标识符,便于找到验证路径。 b)主体密钥标识符本字段用于区别一个主体所拥有的多个密钥,在每个已颁发的证书中都应当包含本字段,本 扩展应当是非关键的。 c)密钥用途 扩展keyUsage定义了证书中密钥在使用上的限制,这种限制是基于策略和/或用途的(如签名, 加密)。CA应当能产生该扩展,而客户应当能处理该扩展。如果keyUasge定义为BITSTRING, 所有遵从本标准的CA都应当在终端实体证书中设置一个值,例如,一个终端实体 证书中的KeyUsage不应当既是digitalSig nature又是dataEncipherment,本扩展应当设置为关键性的扩展。 d)私钥使用期限 扩展pr ivateKeyUsagePeriod仅适用于数字签名密钥。在私钥使用期限之外的签名是无效 的,CA可以产生此扩展,但客户不要求处理此扩展。e)扩展的密钥使用范围 扩展ext endedKeyUsage用于定义在应用中对证书密钥的使用限制,如果使用此扩展,就不考虑互操作的因素。符合本标准的PKI组件不要求支持该扩展。 f)证书策略 扩展certificatePolicies包括一个或多个对象标识符(OIDs),每个OID代表颁发本证书的一个策略。CA应当能够产生带有一个或多个证书策略OID的证书,CA应当支持一个特殊策略 OI D,即任意策略anyPolicy, anyPolicy的()ID可以认为是一个通用符,能够匹配任何策略。 客户应当能够处理policyldentifier字段,并与可接受的策略列表(策略列表取决于相应的应用程序)中的标识进行比较。如果提供了一个可接受策略列表,并且至少要有一个列表中的策略 或其映射策略存在于certi ficatePolicy中时,客户才能验证证书认证路径。如果在证书策略中存在特定策略标识符anyPol icy,并且没有禁止任何策略(见6. 2. 3. 4 ),就可以认为列表中的所有策略都可以接受。 要求符合本标准的组件能处理c ertificatePolicy的子域policyQualifiers,并且支持id-pkix-cpsGB/T 19771-2005和i d-pkix-unotice(见RFC2459 )。符合本标准的CA不要求能产生该子域。9)策略映射 此非关键性扩展用于CA证书。它罗列了对象标识符对;每对标识符包括issuerDomainPolicy和sub jectDomainPolicy。它意味着颁发CA认为其issuerDomainPolicy等价于主体CA的s ubjectDomainPolicy. CA应当能产生扩展policyMappings,客户也应能够处理该扩展。6.2.3.3证书主体和颁发者特征扩展s ubjectAltName, issuerAltName, subjectDirectoryAttributes和authority] nformationAccess都是非关键性的。它们提供了关于主体和颁发者的其他名称和特征的附加信息。a)别名 subj etAltName和issuerAltName扩展提供了证书主体和证书颁发者的附加信息,这些附加信息包括RFC822名称(电子邮件地址),DNS名称和统一资源标识符(URI)。扩展中可以包 括多个名称。如果需要在证书中提供这些信息, 就应当使用扩展subjectAltName和issuer-Al tName o 根据本标准,扩展subjectAltName和issuerAltName应当是非关键的。识别这些扩展的应用没有必要能支持所有可能的选择。如果应用不能识别证书中的别名, 就可以忽略该扩展。在本标准中,扩展i ssuerAltName中包括URI信息,URI明确了颁发者证书的位置,这可以用 来验证数字证书中的签名。在本标准中没有规定subjectAltName中包含的信息的意义。如果证书认证机构(CA)的证书不能从X. 500目录服务中得到,CA就应当在证书中的别名扩展中包含相应的URI信息,以指出签名者证书的位置。要求客户能处理URI别名格式,必须 能够识别LDAP URL[RFC1959]。不要求客户能识别其他URI格式。b)主体目录属性 扩展subj ectDirectoryAttributes可以包含任何关于主体的X. 500目录属性信息。本扩展是非关键性的。本扩展的实现和使用是可选的。 c)权威机构信息存取 扩展authorityInformationAccess中保存如何获得颁发CA和服务的信息。信息和服务可以包括在线验证服务和CA策略数据。( CRI,的位置信息不在本扩展域显示,该信息由cRLDis-t ributionPoints扩展提供。)6.2.3.4验证路径限制扩展ba sicConstraints, nameConstraints和policyConstraints用于限制有效的验证路径。 a)基本约束扩展basi cConstraints通过CA部分的信息指定证书的实体是否是CA,通过pathl.enCon-strai nt部分的信息指定验证路径的长度。CA应当在证书中能产生扩展basicConstraints,客户也应能够处理本扩展。只有在CA为Tr ue的时候,path LenConstraint才有意义。 在所有CA证书中都应当包括basicConstraints扩展,而且CA应当设置为True。在终端实体的证书中也可以包括扩展basi cConstraints。如果在终端实体的证书中出现扩展basicCon-strai nts,它应当是一个空的序列值。在所有CA证书中的扩展basicConstraints应当设置成关键性的。 b)名字约束扩展nameConstrai nts只能用在CA证书中,它指定证书的验证路径中所有后续证书的名字范围。CA应当在证书中能产生扩展nameConstrai nts,客户也应能够处理该扩展。该扩展应设置为关键性的。 c)策略约束 扩展pol icyConstraints只用于CA证书。它可以以两种方式对策略解释进行限制:既可以限GB/T 19771-2005制策略映射,又可以要求在验证路径中的每个证书包括一个可接受的策略标识符。 i本扩展包括两个字段:nhibitPolicyMapping和requireExplicitpolicy。如果inhibitPolicyMap-pi ng存在,它的值代表验证路径中的策略映射不再有效之前的其他证书的个数。如果r equireExplicitPolicy存在,在后续的证书中应当明确包含可接受的策略标识符。RequireEx-pl icitpolicy的值代表在验证路径中要求明确的策略前的其他证书的个数。CA应当在颁发证书中包括本扩展,客户应能够处理本扩展。该扩展应设置为关键性的。 d)禁止anyPolicy本扩展禁止在今后的证书中使用anyPol icy。此关键性的扩展可以出现在颁发给CA的证书中。禁止策略意味着特殊策略标识符a nyPolicy OID(值为{{2 5 2932。})不能和其他证书策略匹配。该扩展的值是I NTEGER,代表在验证路径中不再允许anyPolicy之前的其他证书的个数。例如, 1意味着any-policy只能在本证书的主体所颁发的证书中处理,在验证路径中的其他证书中不能使用。CA应当能够产生此扩展,客户应能够处理本扩展。 6. 2. 3. 5 CRL标识扩展本类扩展包含如何获得证书撤销列表(CRL)的信息。通过标识CRI,和颁发CRL者的名称(颁发 者可能不是产生证书的CA)的方式,可以将大的CRI,列表划分为多个小CRL列表。 CRL分发点:CRI, DistributionPoints扩展标识CRI、分发点,或指导客户如何验证一个已撤销的证书。本扩展由三部分字段组成:distributionPoint, reasons和cRl.Issueraa) DistributionPoint存放如何获得CRI,的位置信息。如果本字段缺省,CRL分发点的名字就是颁发者名字。在CA颁发的CRI ,很大的情况下,此字段提供了一种将CR工、划分为多个可管 理片断的机制。b) Reasons存放相应的distributionPoint分发的CRI一撤销的原因。如果reasons不出现,在dis-t ributePoints分发的CRI,中可以包括由于任何原因而撤销的证书。不要求客户能处理rea-sons. c) CRLIssuer确定分发并签名CRL的权威机构。如果该字段不出现,CRL颁发者与证书颁发者相同。使用本字段可以建立统一的CRL,包括由多个CA颁发的证书。 CAs应当能够产生带有di stributePoint部分的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. 509 v2证书撤销列表格式增加了一些可选扩展,在概念上与证书扩展相似。CAs应能产生如下的X. 509 v2 CRLs,当验证证书认证路径时客户也应能处理它们。颁发CRLs的CA不一定必须是颁发该撤销证书的CA。一些CAs只负责发放CRLs o X. 509 v2 CRI、包含以下信息:Versi on版本; Issuer Signature Algorithm颁发者签名算法;I ssuer Distinguished Name颁发者可辨别名;Thi s Update本次更新;GB/T 19771-2005Ne xt Update下次更新;Revoked Certificates撤销的证书,零个或多个以下序列的序列: 令 Certificate Serial Number证书序列号,今Revocat ion Date撤销日期,令CRL Entry Extensions CRT. Entry扩展(可选);CRL Extensions CRT,扩展(可选);颁发者对以上字段的签名。 6. 3. 2 CRL字段X. 509 v2 CRT.的ASN. 1句法见附录A。对于签名计算,签名的输人数据是ASN. I DER形式的编码。ASN. 1 DER编码对每一个元素来说都是标签、长度、值的编码系统。以下各项描述了X. 509 v2CRL的使用:a) Version这个字段描述了编码后的CRT ,的版本。该字段的值应是I,表明是v2 CRL。b) Signature该字段包含签署CRL的算法的算法标识符。它的内容与证书的si gnature字段一样。关于这个字段的信息见6.2.1中关于s ignature字段的定义。CRT,可以被6. 2. 2. 2中标识的任何算法签名; 通常,CA使用同一算法来对证书和CRT、签名。c) Issuer Name issuer字段提供了签署CRT,的CA的全球唯一标识名。颁发者的名字是X. 500可辨别名。本标准不支持CRT.颁发者名字为空的CRL od) This Updatethi sUpdate字段指定了该CRL的日期。此字段可以是UTCTime或GeneralizedTime。对于本标准, thisUpdate字段遵从证书的validity字段的规则。(见6.2.1)e) Next Updatenext Update字段指定了下一个CRL颁发的日期。下一个CRL颁发的日期可以在指定日期 之前,但不可在指定日期之后。此字段可以是UTCTime或GeneralizedTime。对于本标准,next Update字段遵从证书的validity字段的规则。(见6.2. 1)f) Revoked Certificatesr evokedCertificates字段是一个已经被撤销的证书的列表。每个被撤销证书包含:1)证书序列号(在userCerti ficate字段中指出)。它包含被撤销证书的serialNumber字段的 值。它必须与颁发CA的名字一起使用以识别一个已经被撤销但还未到期的证书。2)包含撤销日期的r evocationDate字段。本字段取值遵从证书的validity字段的规则。(见6. 2. 1)3) CRL Entry扩展(可选)(见6. 3. 4 )。它可以给出证书撤销的原因,说明证书无效日期,也可以说明发放该被撤销证书的CA的名字(或许与颁发CRL的CA不是同一个)。注意: 我们假定颁发CRI _的CA和颁发被撤销证书的CA是同一个,除非CRI. Entry扩展包含certi ficatelssuer字段。6. 3. 3 CRL扩展1 SO/ITU所定义的X. 509 v2 CRLs扩展提供了对全部CRLs附加其他信息的方法。每个CRL扩展被设计为critical或noncritical.(关键的或非关键的)如果客户碰到一个不能处理的关键性扩展,将无法对该CRL进行验证。本条描述了应被支持的CRI .扩展。当CA能够产生一个CRL的扩展且客户能够处理该扩展时,此CRI_扩展才有效。GB/T 19771-2005a)机构密钥标识符 authorityKeyIdentifier,非关键性CRI,扩展,标识了CA用来签署CRI,的密钥。当CA使用多个密钥时该扩展是有用的;它使得不同的密钥得以区分(例如,密钥更新时)。身份的鉴定可 基于密钥标识符或发放者名字和序列号。所有的CRI.s都应有密钥标识名。当发放者拥有多个签名密钥时(或多个密钥对,或是在密钥更新期间),该扩展是很有用的。当发放CA有多个 签名密钥对时,在所有的CRI,扩展里都应包括该扩展,并且客户也应能够找到并验证CRI ,验证路径。客户如果要查找证书认证路径, 必须能够处理authorityKeyldentifie:的密钥标识符 或证书发放者名加上序列号。b)颁发者别名 issuerAltName,非关键性CRI,扩展字段,包含一个或多个CA别名。别名一旦出现就放置在i ssuesrAltName里。并非所有的别名格式都要被识别处理,识别不出的别名格式可以被忽略。CA可在CRLs中产生该扩展,然而客户可以不予处理。 c) CRL编号cRLNumber,非关键性扩展字段,是一个单调增加的序列号, 该CRI,由CA通过特定的CA目 录人口或CRL分布点发放。该扩展可以用来通知证书使用者整个CRL的非固定时间发布,或是便于确定何时某一CRL替代了另一CRI,。在CRL中应该包括该扩展。 d)颁发分布点i ssuingDistributionPoint字段是非关键性的扩展,决定了一个特定CRI,的CRL分布点。一个分布点就是一个用来检索CRI ,的目录入口,它可以与CA的目录人口不同。CA要用密钥对CRI ,加密。CR工J分布点没有自己的密钥对。另外,i ssuingDistributionPoint字段指定的CRLs可能只针对终端实体的证书,或者只针对CA证书, 或者只针对由于某种特定原因撤销的证书。最后,该扩展也可以确定一个间接CRL,间接CRI 一是由与发放被撤销证书CA不同的CA发放的。间接CRI,包含以下组件:di stributionPoint,给出了分布点的名字,遵循X. 500标识名规则;onl yContainsUserCerts,布尔变量,表明该CRI,只包含终端实体证书;onl yContainsCACerts,布尔变量,表明该CRI、只包含CA证书;onl ySomeReasons,一个ReasonFlag位串,标明CRL中所列证书的撤销原因;如下:.ke yCompromise,表明密钥泄漏或怀疑密钥泄漏,.cACompromi se,表明该证书撤销的原因是CA密钥泄漏,它只用于撤销CA证书,.af filiationChanged,表明该证书撤销的原因是证书主体的从属关系改变了,令superseded,表明该证书已被代替, 令c ertificateHold,表明证书处于冻结状态,可能会被撤销,.c essationOfOperation,表明该证书的目的已经不再被需要,但并不是密钥被泄漏; IndlrectCRI.,布尔变量,表明这是一个间接CRL.客户应能处理这个字段。 e)增量CRI,指示符de ltaCRLIndicato:是一个关键CRI扩展,它确定一个增量CRI,。对于那些采用非CRL结构存储撤销信息的用户程序来说,增量CRI可以有效地节省处理时间。它允许把变化的信息增 加到本地数据库里,忽略掉那些本地数据库中已经存在的未改变的信息部分。BaseCRLNumber的值表明基础CRI的CRI,序列号,基础CRI 、是生成增量CRI,的开始点。 增量CRI,包含基础CRI,和当前CRI,之间的变化部分。是否提供增量CRL要由CA来决定。 客户可以利用本地CRI ,和增量CRI合成一个CRI.,要注意的是如果本地CRI,的CRI、序列GBJT 19771-2005号小于增量CRI.中的BaseCRLNumber,合成的CRI .就不正确。如果增量CRL含有一个 CRL序号扩展,那么合成的CRL的CRI.序号就是该扩展的值。客户和CA是否支持增量CRL是可选的。 f ) CRL扩展使用总结表1总结了标准CRL扩展,表2总结了这些标准CRI .扩展的使用。表1 CRL扩展概要希爪月表2 CRL扩展在本标准中的使用6. 3. 4 CRL Entry扩展X. 509 v2 CRLs所定义的Entry扩展提供了获取CRI.每条附加信息的方法。每个CRL Entry扩展被设计为关键性或非关键性。如果不能处理关键性扩展,该CRL的验证将是无效的。如果是不可识别的非关键性CRL Entry扩展,则可以忽略。a)原因代码 reasonCode是非关键性CRL Entry扩展,标明了证书撤销原因。CA应当能够生成该扩展,但客户是否要处理reasonCode扩展则是可选的。下面列举的是reasonCode的取值: AKcCDIseRurlytLiShaNndog: DmX-e}IfrbsKt;iChuadRAylcL.#e1*`ronM tiPAf,."C}R1L亡 川 unspecified,未使用;ke yCompromise,表明密钥泄漏或怀疑泄漏;cACompromi se,表明该证书撤销的原因是CA密钥泄漏,它只用于撤销CA证书;GB/T 19771-2005 affiliationChanged,表明该证书撤销的原因是证书主体的从属关系改变了;supe rseded,表明该证书已被新的证书代替; cessationOfOperation,表明该证书的功能已经不需要,并不是密钥泄漏;certi ficateHold,表明证书当前不能使用,如果证书的CRL的reasonCode字段是certifi- cateHold,那么客户就无法验证证书认证路径;r emoveFromCRL,只与增量CRI.一块使用,表明应该删除一个存在的CRLEntryob)过期日期 expi rationDate,非关键性CRI. Entry扩展,表明Entry的过期时间。该扩展不在CRLs中使 用,也不被客户使用。c)指令码 instructionCode是非关键性CRL Entry扩展,提供了一个注册过的指令标识符,指令标识符来指出当遇到一个被冻结的证书时要采取何种操作。本扩展不在CRL中使用。 d)无效日期i nvalidityDate是非关键性CRL Entry扩展,指出知道密钥泄漏或怀疑泄漏的日期,即证书无效的日期。该日期必须比CRI , Entry中的撤销日期要早。而CRL Entry中的撤销日期表明的是CA撤销证书的日期。无论是否可以获得此信息,都应该鼓励CAs将此信息与CRL用 户共享。CAs在CRLs中生成该扩展,取值的形式是General izedTimeoe)证书发放者 certificatelssuer和间接CRL一起使用,(间接CRI,,是issuingDistributionPoint扩展中有in-di rectCRL标识符的CRL)。如果该扩展没有在间接CRI,的第一个Entry中标出,那么该证书的发放者默认为CRL发放者。在间接CRL随后的Ent ry里,如果没有给出certificatelssu-er, 则认为证书发放者与前一个CRI. Entry的发放者相同。f) CRL Entry扩展使用总结表3总结了CRL Entry扩展,表4总结了本标准中CRL Entry扩展的使用。表3 CRL Entry扩展阵耸万日月表4本标准中CRL Entry扩展的使用6.4证书认证路径一公亡-n 7CZARi pL-.'"J}Un.W!MT1XF*} '43AIPTE1}4,3O"LjCkI1}R#J74.%V"UiXtFO72*J,I/9Ppfrh} RFC 2459中的第6章有具体定义,认证路径功能应由客户来实现。GB/T 19771-20056.5事务消息格式6.5.1事务消息格式概述本条给出了一套最小的支持PKI事务的消息格式。系统如果想实现这些事务就必须支持这些消 息格式,并能够正确的产生、识别它们。这些消息格式以ASN. 1的形式定义;消息利用DER编码传输。6.5.2全体PKI消息组件a) PKI消息每个消息有四个组件: PKI Message::=SEQUENCE{header PKIHeader, body PKIBody,protect ion [0] PKIProtection OPTIONAL,ext raCerts [1] SEQUENCE OF Certificate OPTIONAL}ext raCerts字段在本标准中用来放签名的证书序列,后面消息的描述中对这个字段不再具体描述。 b) PKI消息头所有的PKI消息都需要头信息来识别地址和处理。一些头信息会在传输特定包里给出。然 而, 如果PKI消息被签名,这个头信息也是被保护的。 下面是消息头的数据结构:PKIHeader::=SEQUENCE{ pvno INTEGERsender GeneralName,{ietf-version2(1)},一标识发送者r ecipient GeneralName, 一该消息的产生时间(发送者使用)一该时间对接收者来说仍然有意义。 一标识接收者me ssageTime [0] GeneralizedTime OPTIONAL,pr otectionAlg [1] Algorithmldentifier OPTIONAL,一计算保护比特的算法 s enderKID [2] KeyIdentifier OPTIONAL., recipKID [3] KeyIdentifier OPTIONAL,一确定用来保护的特定密钥 t ransactionID [4] OCTET STRING OPTIONAL,一确定事务,也就是说, 相应的请求、响应和确认消息的transactionlD相同。senderNonce [5] OCTET STRING OPTIONAL, recipNonce [6] OCTET STRING OPTIONAL,一nonces用来提供重发保护,消息的产生者插人senderNonce;该消息的接收者在相 一应消息中插入r ecipNonce ofreeText [7] PKIFreeText OPTIONAL,一这可以用来进行一些上下文说明(本字段的设计便于人工阅读) ge neralInfo仁8] SEQUENCE SIZE(1二MAX) OF InfoTypeAndValue OPTIONAL 一用来传递上下文相关信息一(本字段不是主要为人工考虑的)} PKIFreeText::=UTF8Stri ngGB/T 19771-2005头消息中的t ransactionID字段允许响应消息的接收者将它与请求相关联。一个RA或许在同一个时刻有很多请求未被处理。为了做到有效,从发送者的角度看,本字段的取值应当是 独一无二的。 MessageTi me字段表明消息产生的时间。它的值必须是格林威治时间,必须精确到秒(即年月日时分秒YYYYMMDDHHMMSSZ),即使秒是零。MessageTi me字段不包括分秒。 sender和recipient字段定义为GeneralName。系统必须支持X. 500标识名和RFC 822 (In-t ernet e-mail)标识名。f reetext字段定义为PKIFree Text, PKIFree Text是ASN. 1中的UTF8String型。 UTF8String是统一字符集,它包括了ASCII,本标准中,PKIFree Text仅包括ASCII中的字符。 ProtectionAlg所有的签名消息,以及用消息认证码保护的消息都要有该字段。当一个消息不受保护时(即,在含有PKI Header的PKIMessage中不出现protection字段时),Protection-Al g必须被忽略。 senderNonce和recipNonce在。lient和RA中是不需要的;CA如果收到了带有senderNonce的PKI Message,就必须在随后的消息里返回recipNonce。本标准中,senderKID, recipKID,gene ralInfo是不需要的。c) PKI消息正文PKIBody::=CHOICE{ 一message-speci fic body elementscr [2] CertRegMessages,一证书请求 cp [3] CertRepMessage,一证书响应p10cr [4] PKCS10CertRegMessages,一引自[PKCS10]r r [11] RevRegContent,rp [12] RevRepContent,一撤销请求一撤销响应 conf [19] PKIConfirmContent,一确认}其他的me ssage-specific正文元素在RFC2510, RFC2511中定义。本标准并不需要这些元素,所以这里把它们省略了。附录C中描述了message-speci fic正文元素的完整列表。其他部分所说的Cer tReq, CertRep, RevReq, RevRep在PKIMessage里就是指ir,ip,cr,cp,rr, rp。一个PKCS # 10请求是指带有plOcr正文元素的消息。一个确认消息带有正文消息conf od) PKI消息保护使用以下结构,所有PKI消息的完整性将得到保护: PKIProtecti on::=BIT STRING用来计算PKI Protection的输入是如下数据结构的DER编码:Protect edPart::=SEQUENCEtHeader PKIHeader,body PKIBody}在大多数情况下, PKIProtection字段将包含一个数字签名,PKIHeader里的protectionAlg字段将包含一个Al gorithmIdentifier,用来说明为保护消息所使用的数字签名算法。在有些情况下,例如密钥更新,附加多重签名是必要的。这时,签名消息是嵌套的结构一每个 已签名的消息成为一个PKI Body的元素;下一个签名应用于这个消息。这个处理将会不断重复直到所有的签名都已应用完毕。 GB/T 19771-20056.5.3通用数据结构下面的数据类型对几个消息格式都是通用的。 a)证书模板在各种各样的PKI管理消息中,始发者可能会提供一些值来识别一个已存在的证书,或申请 一个证书时在请求中含有一些值。Ce rtTemplate结构允许实体标明这些值。CertTemplate包含作为一个证书所需的所有信息。 CertTemplate::=SEQUENCE{versi on [0] Version OPTIONAL, 一用来请求特殊语法版本seri al [1] INTEGER OPTIONAL,一用来请求一个特殊的序列号或声明请求代表一个以前的证书持有者 s igningAlg [2] AlgorithmIdentifier OPTIONAL,subj ect [3] Name OPTIONAL,val idity仁4] OptionalValidity OPTIONAL,i ssuer仁5] Name OPTIONAL,publ icKey [6] SubjectPublicKeyInfo OPTIONAL, issuerUID [7] UniqueIdentifier OPTIONAL,一not supporteds ubjectUID [8] UniqueIdentifier OPTIONAL,一not supportedextensi ons [9] Extensions OPTIONAL,一包含请求者希望在证书里具有的扩展 } Opt ionalValidity::=SEQUENCE{notBef ore [0] Time OPTIONAL,notAf ter [1] Time OPTIONAL} CertTemplates::=SEQUENCE OF CertTemplate如果CertTempl ate出现,validity字段将包含请求证书的请求发放日期(notbefore字段)和期满日期(not After)。对CertTemplate中的validity字段和证书中的validity字段的解释相同。(见5.2.1) b)签名私钥的拥有证明若由主体产生密钥对, CA需要验证证书请求中主体拥有对应于相应公钥的私钥。这是通过Pr oof0fPossession字段来实现的。 当用户申请一个签名证书,则用Proof OfPossession中的signature字段实现的,该signature是一个POPOSi gningKey结构。该结构包含输入数据、一个算法标识符和一个签名。输入数据作为DER编码的popI nput,它是由证书请求中的数据生成的。通常,它包含Cert-Templ ate里的主体名和公钥。当一个新的主体请求通过公钥mac验证后,或是RA修改了主体名后, popInput必须由POPOSigningKey结构中的可选数据和CertTemplate里的公钥构成。这就允许RA把拥有证明传递给CA而不用改变Cer tTemplate oProofOfPossessi on::=CHOICE{raVeri fied [0] NULL, 一当RA已经验证了请求者拥有相应私钥时使用s ignatule [1] POPOSigningKey,一用户产生证书密钥对,并申请签名证书时使用 GB/T 19771-2005ke yEncipherment一本标准不使用该域 仁2] POPOPrivKey, keyAgreement [3] POPOPrivKey一本标准不使用该域} POPOSi gningKey::=SEQUENCE{ poposkInput [0] POPOSKInput OPTIONAL,al gorithmIdentifier AlgorithmIdentifier,si gnature BIT STRING}一对popInput的DER编码值签名(用”al gorithmIdentifier" )一注意:如果在POP字段里出现poposkI nput, popInput就由otherinput构成。一如果poposkInput没有出现,主体就是CertTempl ate中的名字。一注意PopI nput的编码值是有意含糊的。 PoposkInput::=CHOICE{Subject name,Sender [0] generalName, publicKeyMAC仁1] PKMACValue}一pop的计算是基于popI nput的结构的。PopInput的结构定义如下:PopI nput::=SEQUENCE{CHOI CE{ otherinput popskInput,subject name},publ icKey subjectpublicKey)一如果popos kInput在POP字段出现的话,popInput就用otherinpu构成。如果poposkInput不出现,主体就是CertTempl ate中的名字。一注意PopI nput的编码值是有意含糊的。c)证书请求消息CertRegMsg是证书请求的基本结构。CertRegMsg由三个字段构成的SEQUENCE,cer- t Req; pop; regInfo(可选)o certReq是类型CertRequest, pop包括了证明拥有私钥的信息, regInfo包含了特定的注册过程信息。regInfo字段是可选的。CertRegMsg定义见附录D}CertRegMsg::=SEQUENCE{ cert Req CertRequest,POP Proof0fPossession OPTIONAL, 一本标准规定加密密钥对必须集中产生,此时该字段不出现一若集中产生签名密钥对,则该字段不出现 一若是由终端实体产生签名密钥对,则该字段必须出现 reglnfo SEQUENCE SIZED二MAX) of AttributeTypeAndValue OPTIONAL}Cert RequestCer tRequest的组成包括:请求标识符,证书模板,可选的控制信息。Cert Request::=SEQUENCE{ certRegId INTEGER,ce rtTemplate CertTemplate,一用来匹配请求和相应的ID一选定的证书中的某些字段control s Controls OPTIONAL}一控制颁发的一些属性c ertRegId是一个INTEGER, certTemplate是CertTemplate, controls的定义如下。GB/T 19771-2005Cert RegMessagesCe rtRegMessages是一个或多个CertRegMessage序3il的结构。Cert RegMessages::一SEQUENCE SIZE(1..MAX) OF CertRegMessage本标准中, CertRegMessages可以假设为仅由一个CertRegMessage构成的SEQUENCE。即MAX可以定义为la Cont rolsCer tRequest的产生者可以包括一个或多个适合请求处理的control值。Cont rols::=SEQUENCE SIZE(1二MAX) OF AttributeTypeAndValue下列。ont rol在证书管理协议(CMP)里有定义:regToken; authenticator; pkiPublicationln-f o; pkiArchiveOptions; oldCertId; protocolEncrKey。在具体实现规范中的事务时,这些con- trol是可选的。这些control的OIDs如下。本标准不需要的control (oldCertId, regToken,aut henticator, pkiPublicationlnfo, and pkiArchiveOptions)在这里没有描述。i d-pkix OBJECT IDENTIFIER::={iso(I)identified-organization(3)dod(6) internet(I)security(5)mechanisms(5) pkix(7)} 一arc for Internet X. 509 PKI protocols and their componentsi d-pkip OBJECT IDENTIFIER::{id-pkix pkip(5)} 一Registration Controls in CRMFi d-regCtrl OBJECT IDENTIFIER::={id-pkip regCtrl(1)} id-regCtrl-oldCertId OBJECT IDENTIFIER::={id-regCtrl 5}i d-regCtrl-protocolEncrKey OBJECT IDENTIFIER::“{id-regCtrl 6}d)协议加密密钥控制 如果存在的话,协议加密密钥控制明确了CA用来对CertRegMessages的响应进行加密的密钥。 当CA发送给申请者的信息需要加密的时候就可以使用这一控制。这些信息包括CA把产生 的私钥发给申请者供其使用。 protocolEncrKey控制由属性类型里的id-reg-protocolEncrKey的OID来确定。它的值的语法是Sub jectPublicKeylnfo.e) PKI消息状态码所有的响应消息都包含一些状态信息。定义如下的取值: PKI Status::=INTEGER{ granted (0),一请求得到许可,没有变更 grantedWi thMods(1),一请求得到许可,有变更;请求者负责确定变更。 rejection (2),一请求被拒绝 waiting (3),一已收到请求但还未处理,处理后将会附加一个响应 revocat ionWarning (4),一给予警告:撤销已被请求,正在处理。 revocat ionNotification (5),一通知:已经撤销 keyUpdat eWarning (6)}GB/T 19771-2005本标准并未用到KeyUpdat eWarning状态码。f)失败信息响应者使用以下句法提供更多失败信息。 PKIFai lureInfo :: BIT = STRING{一因为会以多种方式失败!badAl g (0),一不被识别或不被支持算法名badMessageCheck (1),一完整性检查失败(例如,签名核对错误)badRequest (2),一事务不被允许或支持 badTime (3),一messageTime与系统时间相差太多badCe rtld (4),一证书标识名错badDat aFormat (5),一数据格式不对 wrongAuthority (6),i ncorrectData (7),一请求中指出的authority和响应者不同一请求者的数据不对(在公证服务里用)mi ssingTimeStamp (8),一没有时戳,但是策略需要 badPoP (9)一拥有证明字段核实失败,一需要更多的失败信息} PKISt atusInfo::=SEQUENCE{st atus PKIStatus,st atusString PKIFreeText OPTIONAL,fai lInfo PKIFailureInfo OPTIONAL)9)确认协议确认消息会在PKIHeader中带着所需的所有信息。因此,该数据结构内容为空。 PKI ConfirmCotent::=NULLh)证书识别为了识别特定的证书, 采用了CerId结构CerId::=SEQUENCE{ i ssuer GeneralName,s erialNumber INTEGER}i) Centrally Generated Keys本标准规定由第三方集中产生加密密钥对并通过带外方式提供给CA,此时CA用Certi fied-Ke yPair结构发还证书。 CertifiedKeyPair::二SEQUENCE{certi ficate [0] Certificate OPTIONAL, encryptedCert [1] EncryptedValue OPTIONAL,pri vateKey [2] EncryptedValue OPTIONAL,publ icationInfoi ntendedAlg巨3] PKIPublicationInfo OPTIONAL}仁0] AlgorithmIdentifier OPTIONAL,EncryptedVal ue::=SEQUENCE{一t he intended algorithm for which the value will be used symmAlg [1] AlgorithmIdentifier OPTIONAL,一加密这一val ue的对称算法encSymmKey 仁2] BIT STRING OPTIONAL, 一用来加密这一value的对称密钥(已加密)keyAl g [3] AlgorithmIdentifier OPTIONAL,GB/T 19771-2005一用来加密对称密钥的算法 val ueI-lint仁4] OCTET STRING OPTIONAL,一encVa lue内容的简要描述或标识符一(可能只对发送实体有意义,仅当将来发送实体对Encrypt edValue重新检查时使用)encVal ue BIT STRING一加密的val ue}j)带外信息 为了在带外传输一个CA的公钥, 采用了OOBCert结构。OOBCert只是一个CA的证书。OOBCert::=Certi ficate6.5.4特殊操作的数据结构a)注册/证书请求 注册和证书请求消息(c r)包含一个CertRegMessages的数据结构,该结构规范了请求证书的特定取值。 Ce rtRegMessages是CertRegMsg结构的一个或多个序341.CertRegMessages::=SEQUENCE SIZE(I二MAX) OF CertRegMsg 例外的,本标准里定义的事务假设CertRegMessages仅是一个CertRegMsg的SEQUENCEo同时请签名证书和加密证书的可选事务请求要求Cer tRegMessages是大小为2的SE-QUENCE。本标准不鼓励同时申请两个证书, 但不禁止。b)注册/证书响应 注册响应消息(cp)包含一个CerRepMessage结构(一个可选的公钥和一个response)。特别的, 本标准里定义的事务都假设响应仅是一个CertResponse的序列。一个例外就是含有签名证书和加密证书请求的事务; 该事务的响应可以是响应消息的结合,即含有两个CertRe-sponse的字段的序列。 Cer tResponse包含一个请求id、状态信息和一个CertifiedKeyPair(可选)。CertifiedKeyPair是一个包含四个可选字段的序列,四个可选字段分别是:一个证书,一个已加密证书、一个已 加密私钥,以及公开信息。本标准中,证书字段总出现在CertifiedKeyPair里。仅当集中产生密钥管理密钥时才用到Pr ivateKey,其余字段均不出现。Cert RepMessage::=SEQUENCE{ caPub [1] Certificate OPTIONAL,response SEQUENCE OF CertResponse}Cert Response::=SEQUENCE{ce rtRegId INTEGER,一与相应的请求相匹配cer tRepStatus PKIStatusInfo,cer tifiedKeyPair CertifiedKeyPair OPTIONAL;一只有当状态为gr anted或grantedWithMods才存在rspInf o OCTET STRING OPTIONAL一anal ogous to the id-regInfo-asciiPairs OCTET STRING defined 一for regInfo in CertRegMsg巨CRMF]}如果c ertRepStatus包含failInfo字段,CertResponse将不包含certifiedKeyPair并且certRep-St atus字段的status的值将是rejection. status的值是waiting时,可选字段就都不出现。s tatus的值revocationWarning和revocatonNotification不会在消息中出现。caPub和rspI nf。字段是不需要的,如果它们出现的话可以被忽略。本标准并不使用Certi-fi edKeyPair中的encryptedCert和publicationInfo字段。GB/T 19771-2005c)撤销请求的内容当请求撤销一个证书时采用以下数据结构。请求者的名字在PKI I-leader中显示。RevRegContent::=SEQUENCE OF RevDetailsRe vDetails::=SEQUENCE OF{ certDetails CertTemplate,一允许请求者尽可能多的指定所请求撤销的证书的参数(例如,不知道序列号时) revocati onReason ReasonFlags,一来自DAM,这样CA就知道该用哪个Di st. point badSinceDate GeneralizedTime OPTIONAL,一i ndicates best knowledge of sendercrl EntryDetails Extensions一要求的cr IEntryExtensions)ReasonFl ags定义见附录B。为清楚起见这里再说明一遍。Re asonFlags::=BIT STRING{ unused (0),keyCompromi se(1), caCompromise (2),af filiationChanged (3),super seded (4), cessation0fOperation (5),certi ficateHold (6),r emoveFromCRL (8)}badSi nceDate和revocationReason表示的信息可以在crIEntryDetails中也同样表示出来,使用标准的X. 509 CRI,扩展invalidityDate和reasonCode。推荐的位置是crlEntryDetails,不过本标准建议CA处理其他位置的信息。当有冲突存在的时候, 使用较早的日期。当撤销原 因不匹配时,CA应包括所有的原因。d)撤销响应内容当对撤销请求做响应时, 使用以下数据结构。把它发送给请求者。Re vRepContent::=SEQUENCE{st atus PKIStatuslnfo,r evCerts [0] SEQUENCE OF Certld OPTIONAL,一确定要请求撤销的证书 crls [1] SEQUENCE OF CertificateList OPTIONAL,一作为结果的相应的RL} 在本标准中,revCerts是一个或多个CertI D字段的SEQUENCE, crls字段并不出现。e) PKCS # 10证书请求这个证书请求句法在RFC 2314中有定义,为清楚起见在此重复一遍。 PKCSI OCertRegContent::=SEQUENCE{certi ficationRequestInfo CertificationRequestlnfo signatureAlgorithm Signature AlgorithmIdentifter,si gnature Signature)Si gnatureAlgorithmldentifier::二AlgorithmldentifierSi gnature::=BIT STRINGGB/T 19771-2005Certi ficationRequestInfo::=SEQUENCE{versi on Version,subj ect Name, subjectPublicKeylnfo SubjectPublicKeylnfo,at tributes [0」 IMPLICIT Attributes)Versi on::=INTEGERAttr ibutes::=SET OF Attribute Attributes在RFC 2985中有定义。为了互操作而对Attributes的支持是可选的。即使出现了,也可以被忽略。 6. 6 PKI事务6. 6. 1 PKI事务概述本条详细介绍了PKI的具体功能:注册请求、更新和撤销证书。也简要描述了访问目录服务的 事务。CA,RA和证书持有者应能实现本条描述的所有事务。 对于CA和RA物理上在一起、不支持远端RA的PKI产品,CA和RA之间的消息就可以忽略掉。 6. 6. 2 RA发起的注册请求RA可以请求CA为一个终端实体颁发签名证书。这个事务分五步执行。第一步,终端实体通过 带外事务(例如通过实际呈交一个磁盘)在一个签名消息中向RA提供一个公钥。第二步,RA通过一个签名消息向CA请求证书。第三步,CA通过一个含有证书或错误代码的签名消息回应RA。第四步RA通过带外方式向终端实体提供CA的公钥和所颁发的证书(若是集中产生密钥对则还包括相应私钥),终端实体也可以直接从CA获得。第五步RA向CA发出确认消息。在这个过程中包括三条消息。 a)从RA到CA的证书请求RA建立一个PKI Body为cr的PKIMessage。其PKIHeader包括下列信息:pvno是1; t ransactionID是该RA赋予这个事务的唯一整数; messageTime是当前精确到秒的时间;sender是RA的可辨别名; r ecipient是CA的可辨别名;pr otectionAlg是用来保护该消息的签名算法的算法标识符。这个消息的消息体是CertRegMessages,它是一个或多个CertRegMessage字段的序列。对于 这个事务, CertRegMessages是一个CertRegMessage的序列。这个CertRegMessage将包括如下信息: c ertReq含有请求者希望包含在证书中的信息; POP证明了对新证书私钥的拥有。本标准中只支持终端实体产生签名密钥对,不支持终端实体产生加密密钥对。在进行签名私 如果由RA来实现,钥的拥有性证明时,那么RA修改了主体名,popoSKInput域出现,并且包含了原来的主体名。否则, RA不修改主体名,那么pop域与请求者提交的主体名一致。详细原理见6.5.30 certReq是Cert Request,它是一个certRegID、一个CertTemplate和controls的序列。对于这个事务, certRegID可以是任何整数。Cer tTemplate将含有如下信息:versi on是v3(2);GB/T 19771-2005subj ect是用户的名字;publ icKey提供了新证书的公钥,若用集中方式产生密钥对则不包括该字段;ext ensions至少指定了与证书有关的证书策略的OID.如下的信息可以被包含在Cer tTemplate中:s igningAlg指定了首选签名算法; subject指定了潜在证书持有者的可辨别名。请求不应该包括如下信息: i ssuerUID; subjectUID,PKI Protection字段含有根据消息头和消息体的DER编码序列计算的RA的签名。b)从CA到RA的证书回应CA将返回以元素cp为PKI Body的PKIMessage给RAa PKIHeader包括如下信息:pvno是1; t ransactionID与cr消息中的transactionlD相同;mess ageTime是当前精确到秒的时间; sender是CA的可辨别名;reci pient是RA的可辨别名;pr otectionAlg是用来保护该消息的签名算法的算法标识符。如果senderNonce在证书请求中被提供了,那么这个回应的消息头应该将其作为reci pNonce oPKI Body元素cp是CertRepMessage类型。对于这个事务,CertRepMessage将含有唯一的r esponse字段。该response字段是一个certReqld, status和certifiedKeyPai:的序列。如果CA颁发了一个证书,消息体将含有如下消息: certRegId将与请求中的certRegId匹配;status将是granted或者是grantedWi thMods;cert ifiedKeyPair序列将至少含有一个字段—certificate,其将含有GB/T 16264. 8- 2005的证书。证书必须满足如下性质: version号应该是v3(2);publ icKey字段应该与证书请求中相同或者是由CA所产生的公钥;主体可辨别名应该与证书请求中相同; 颁发者名字应该是CA的可辨别名;如果notBef ore出现在证书请求中,证书应该从颁发日和notBefore所指之日的较晚者之后生效; 如果notAfter出现在证书请求中,证书应该在该日或之前期满。证书应该包括如下扩展(ext ensions) :subject KeyIdentifier域;在certi ficatePolicies字段中至少包括一个证书策略的OID;包括KeyI dentifier字段的权威密钥标识符。如果在证书请求消息中指定一个特定的密钥标识符, 那么证书的subjectKeyIdentifie:字段应该就是该密钥标识符。如果没有具体指明密钥标识符,CA将用主体公钥的低96位SHA-1 散列函数作为s ubjectKeyIdentifier字段中的KeyIdentifier。散列函数是通过对证书中主体公钥字段的值(不包括标签和长度)进行计算得到的。 GB/T 19771-2005 如果颁发者的证书或是CRLs不提供X. 500目录服务,证书就应含有issuerAltName扩展中的URLs以及CRLDi stributionPoints扩展中的distributionPoint字段。如果s tatus是granted和grantedW ithMods,那么failInfo字段可以不存在。 若CA拒绝了请求,则正文中包含以下信息:st atus将是rejected; failInfo字段包含相应的错误码:.ba dAlg说明CA不能验证签名,因为算法标识符无法识别或者不支持,令ba dMessageCheck说明PKIProtection字段中的mac被检验,但是不匹配,.ba dPoP说明popoSigningKey字段中的签名已经被检验,但是不匹配,.ba dRequest说明响应者不允许或不支持该事务请求, .badTime说明消息头中的messageTime字段中的时间与响应者的系统时间差别太大; 如果s tatus是rejected,那么certifiedKeyPai:字段可以不出现。 PKIProtection字段含有根据消息头和消息体的DER编码序列计算的CA的签名。c)确认消息 一旦接收到cp,RA应该产生PKI Confirm消息。确认消息的PKIHeader中的数据除了mes-sageTi me之外,应该与证书请求消息的PKIHeader中的数据相同。PKI Protection字段含有根据消息头和消息体的DER编码序列计算的RA的签名。6.6.3新实体的自我注册请求一个新的实体如果从来没有从一个特定CA获得证书, 他可以直接向那个CA申请一个新的证书。请求实体生成一个PKI it消息来请求新证书,并在消息中包含和证书请求中公钥相对应的私钥的拥有证明。实体利用RA提供的一个秘密密钥和SHA-1 HMAC算法保护PKI消息。 如果CA接受自我注册请求,它将返回一个ip消息给证书持有者。该消息包含证书或者事务出错的原因代码。 a) RA与实体的带外事务自我注册申请证书的过程以RA和实体之间交换一个共享的秘密密钥开始。通过从共享的秘 密中产生一个消息认证码,CA能够对实体进行认证。这里不指定这个带外事务的明确的内容和格式。但是秘密的密钥和可信CA的公钥信息应该 以一种可信的方式传递给实体。b)从证书持有者到CA的自我注册请求 请求者建立一个PKI Body为i:的PKIMessageo PKIHeader包括如下信息:pvno是1; mes sageTime是当前精确到秒的时间;sender是请求者的可辨别名或一个电子邮件地址; r ecipient是CA的可辨别名;pr otectionAlg是用来保护消息的签名算法的算法标识符。 这个消息的消息体是CertRegMessages,它是一个或多个CertRegMessage字段的序列。对于这个事务, CertRegMessages是一个CertRegMessage的序}V1l。这个CertRegMessage将包括如下信息: c ertReq含有请求者希望包含在证书中的信息; popoSKInput包含公钥的mac值;pop证明了对证书私钥的拥有。 其中pop域通过与Cer tTemplate中的公钥相对应的私钥来产生,产生pop的输入数据包括GB/T 19771-2005popoSKI nput中的公钥mac值和CertTemplate中的公钥。 certReq是一个CertRequest,它是一个certReglD,一个CertTemplate和controls的序列。对于这个事务: certRegI D是任何整数;c ertTemplate是一个CertTemplate,其至少包括为新证书提供公钥的publicKey字段;c ontrols被省略。 CertTemplate将含有如下信息:versi on是v3(2);publ icKey提供了新证书的公钥。如下的信息可以被包含在Ce rtTemplate中:s igningAlg指定了首选签名算法; subject指定了潜在证书持有者的可辨别名;extensi ons至少指定了与证书有关的证书策略的OID.请求不应该包括如下信息: i ssuerUID;subj ectUID, PKIProtection域包含一个请求者利用从RA获得的秘密产生的值。实体利用RA提供的秘密密钥产生一个96bi t的SHA1-HMAC, protectionAlg域应该设成SHAT-HMAC, PKIPro-t ection的值应该是96位的消息认证码。计算PKIProtection的输入是如下数据结构的DER编码: Pr otectedPart::==SEQUENCE{PKIHeader, PKIBody} c)从CA到证书请求者的自我注册请求的回应CA将返回给证书持有者一个PKI Body为ip的PKIMessage消息。PKIHeader包含如下信息: pvno是1; mes sageTime是当前精确到秒的时间;sender是CA的可辨别名; recipient是证书请求消息头中sender域的值;pr otectionAlg是用来保护消息的签名算法的算法标识符。如果i t消息中提供了transactionID,这个回应的消息头中将包括同样的transactionID。如果i t消息中提供了senderN once,这个回应的消息头中将包含recipNonce oPKI Body元素ip是CertRepMessage类型。如果CA颁发了一个证书,消息体将含有如下信息: status将是granted或者是grantedWi thMods; certificate包含新的GB/T 16264. 8-2005的证书。如果st atus是granted或者是grantedWithMods,failInfo域可以不存在。如果CA拒绝了请求,消息体将含有如下信息: s tatus将是rejected;f ailInfo包含适当的错误代码: .badAlg说明CA不能验证签名,因为算法标识符无法识别或者不支持,今badMes sageCheck说明PKIProtection字段中的mac被检验,但是不匹配,GB/T 19771-2005今badPoP说明popoSi gningKey字段中的签名已经被检验,但是不匹配,令 badRequest说明响应者不允许或不支持该事务请求,.badTi me说明消息头中的messageTime字段中的时间与响应者的系统时间差别太大, .badCer tID表明CertDetails中的信息无法确定一个未过期、未撤销的证书;如果st atus是r句ected, certificate域可能不存在,如果存在证书应该遵从于6. 2.1中定义的证 书轮廓。证书应该包括如下扩展(ext ensions);subj ectKeyIdentifier域; 在certificatePolicies字段中至少包括一个证书策略的OID;包括Ke yldentifie:字段的权威密钥标识符。如果在i t消息中指定一个特定的密钥标识符,那么证书的subjectKeyIdentifier字段应该就是 该密钥标识符。如果没有具体指明密钥标识符,CA将用主体公钥的低96位SHA-1散列函数作为s ubjectKeyIdentifier字段中的Keyldentifier。散列函数是对证书中主体公钥字段的值(不包括标签和长度)计算得到的。 如果i t消息中包含了除subjectKeyIdentifier之外的其他扩展,CA将修改或者忽略该扩展。 如果颁发者的证书或是CRLs不提供X. 500目录服务,证书就应含有issuerAltName扩展中的URI .s以及CRI.DistributionPoints扩展中的distributionPoint字段。PKI Protection字段含有根据消息头和消息体的DER编码序列计算的CA的签名。d)确认消息 一旦接收到i p,证书持有者应该产生一个PKIConfirm消息。确认消息的PKIHeade:中的数 me之外,应该与证书请求消息的PKIHeader中的数据相同。据除了messageTi如果请求被接受,PKI Protection域包含证书持有者的数字签名,利用与新的签名证书对应的 私钥对消息头和消息体的DER编码序列计算签名。如果请求被拒绝,PKIProtection域包含SHA- 1 HMAC,利用共享秘密对消息头和消息体的DER编码计算。一旦接收到PKI Confirm, CA应该产生一个PKIConfirm消息。确认消息的PKIHeader中的 me之外,应该与证书请求消息的PKIHeader中的数据相同。数据除了messageTiPKI Protection字段含有根据消息头和消息体的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的PKIMessageo PKIHeader包括如下信息:pvno是1; GBJT 19771-2005mess ageTime是当前精确到秒的时间;sender是请求者的可辨别名或一个电子邮件地址; reci pient是CA的可辨别名;pr otectionAlg是用来保护消息的签名算法的算法标识符。 这个消息的消息体是CertRegMessages,它是一个或多个CertRegMessage字段的序列。对于这个事务,CertRegMessages是一个Cert RegMessage的序列。这个CertRegMessage将包括如下信息: c ertReq含有请求者希望包含在证书中的信息;p opoSKInput包含公钥的ma。值;op证明了对证书私钥的拥有。p 其中POP域通过与Cer tTemplate中的公钥相对应的私钥来产生,产生pop的输人数据包括popoSKInput中的公钥mac值和CertTempl ate中的公钥。c ertReq是一个CertRequest,它是一个certRegID,一个CertTemplate和controls的序列。对于这个事务: certRegID是任何整数;Ce rtTemplate是一个CertTemplate,其至少包括为新证书提供公钥的publicKey字段。Cer tTemplate将含有如下信息:versi on是v3(2); publicKey提供了新证书的公钥。如下的信息可以被包含在Ce rtTemplate中:s igningAlg指定了首选签名算法;subject指定了潜在证书持有者的可辨别名。 extensions至少指定了与证书有关的证书策略的OIDo请求不应该包括如下信息: i ssuerUID; subjectUID,PKI Protection域包含一个请求者利用从RA获得的秘密产生的值。实体利用RA提供的秘密密钥产生一个96bi t的SHA1-HMAC, protectionAlg域应该设成SHAI-HMAC, PKIPro-tecti on的值应该是96位的消息认证码。计算PKIProtection的输人是如下数据结构的DER编码: Prot ectedPart::二SEQUENCE{PKIHeader, PKIBody} c)从CA到证书请求者的自我注册请求的回应 CA将返回给证书持有者一个PKIBody为cp的PKIMessage消息。PKIHeader包含如下信息: pvno是I; mes sageTime是当前精确到秒的时间;sender是CA的可辨别名; r ecipient是证书请求消息头中sender域的值;pr otectionAIg是用来保护消息的签名算法的算法标识符。如果cr消息中提供了t ransactionID,这个回应的消息头中将包括同样的transactionID。如果c r消息中提供了senderNonce,这个回应的消息头中将包含recipNonceoGB/T 19771-2005PKI Body元素cp是CertRepMessage类型。如果CA颁发了一个证书,消息体将含有如下信息: status将是grant ed或者是granted With Mods;c ertificate包含新的GB/T 16264.8-2005的证书。 如果status是granted或者是grant edWithMods, faillnfo域可以不存在。如果CA拒绝了请求,消息体将含有如下信息: status将是rejected;f aillnfo包含适当的错误代码:.badAl g说明CA不能验证签名,因为算法标识符无法识别或者不支持, 今badMessageCheck说明PKIProtection字段中的mac被检验,但是不匹配,令badPoP说明popoSi gningKey字段中的签名已经被检验,但是不匹配,.badRe quest说明响应者不允许或不支持该事务请求,令badTi me说明消息头中的messageTime字段中的时间与响应者的系统时间差别太大, 令badCert ID表明CertDetails中的信息无法确定一个未过期、未撤销的证书;如果s tatus是r哟ected, certificate域可能不存在,如果存在证书应该遵从于6. 2. 1中定义的证书轮廓。 证书应该包括如下扩展(e xtensions) :subj ectKey1dentifier域; 在certificatePolicies字段中至少包括一个证书策略的()ID;包括Keyl dentifier字段的权威密钥标识符。如果在。 r消息中指定一个特定的密钥标识符,那么证书的subjectKey1dentifier字段应该就是该密钥标识符。如果没有具体指明密钥标识符, CA将用主体公钥的低96位SHA-1散列函数作为s ubj ectKey1dentifier字段中的Keyldentifier。散列函数是对证书中主体公钥字段的值(不包括标签和长度)计算得到的。 如果c r消息中包含了除subjectKey1dentifier之外的其他扩展,CA将修改或者忽略该扩展。 如果颁发者的证书或是CRI.s不提供X. 500目录服务,证书就应含有issuerAltName扩展中的URLs以及CRLDi stributionPoints扩展中的distributionPoint字段。PKIProtect ion字段含有根据消息头和消息体的DER编码序列计算的CA的签名。d>确认消息 一旦接收到cp,证书持有者应该产生一个PKIConfirm消息。确认消息的PKIHeader中的数据除了messageTi me之外,应该与证书请求消息的PKIHeader中的数据相同。如果请求被接受,PKIProtecti on域包含证书持有者的数字签名,利用与新的签名证书对应的私钥对消息头和消息体的DER编码序列计算签名。如果请求被拒绝,PKIProtect ion域包含 SHA-1 HMAC,利用共享秘密对消息头和消息体的DER编码计算。一旦接收到PKI Confirm,CA应该产生一个PKIConfirm消息。确认消息的PKIHeader中的数据除了messageTi me之外,应该与证书请求消息的PKIHeader中的数据相同。 PKIProtection字段含有根据消息头和消息体的DER编码序列计算的CA的签名。6.6.5证书更新拥有当前有效(指在有效期内、未被撤销)证书的PKI实体可以直接向该证书的签发CA要求签发 一份新的证书。PKI实体生成PKI kr(Key update Request密钥更新申请)消息,信息中包括了证书申请和相应的POP。然后PKI实体使用有效证书的对应私钥对PKI kr消息进行签名。如果CA的CPS支持证书更新, 则CA返回kp (Key update response密钥更新响应)消息。kp消GB/T 19771-2005息包含了新生成的证书或者是事务失败的代码。 如果新证书成功生成,则可能还有两个可选的消息。分别是:PKI实体在收到新的证书后,给CA发出确认;然后CA也可回应一个确认消息。 a)从证书持有者到CA的证书更新申请证书持有者生成PKI Body是kr的PKIMessage, PKIMessage中的PKIHeader包括了如下信息: pvno是1; mess ageTime是精度到秒的当前时间;sender是证书持有者的可辨别名; reci pient是CA的可辨别名; protectionAlg是用于保护消息签名算法ID.消息体是Cer tRegMessages,是一个或者多个CertRegMessage组成的序列。对于证书更新事务, CertRegMessages只能是包括了一个CertRegMessage的序列。在消息CertRegMessage中包括了如下信息: c ertReq包含了申请者要求包括在证书中的各种信息;pop是新证书公钥的对应的pop证明。 pop必须是由publ icKey域的公钥对应的私钥产生的。 certReq是CertRequest, CertRequest是由一个certRegID、一个certTemplate和controls所组成的序列。对于证书更新事务: versi on必须是v3(2); publicKey中是新证书的公钥。Ce rtTemplate中可能包括了如下信息:s igningAlg指明了首选的签名算法;subject则是预期的证书持有者的可辨别名。 如果消息中没有s igningAlg,那么CA必须使用终端实体的公钥对应的算法签名。申请中不应该包括如下信息: issuerUID;subjectUI D.PKI Protection域是使用当前有效证书的对应私钥对消息头和消息体的DER编码信息的签名结果。 b)从CA到证书持有者的证书更新响应 CA生成PKI Body是kp的PKIMessage, PKIMessage中的PKIHeader包括了如下信息:pvno是1; messageTime是精度到秒的当前时间;sender是CA的可辨别名; reci pient是证书持有者的可辨别名,也就是kr消息的sender;pr otectionAlg是用于保护消息签名算法IDo 如果在kr消息中具有transtionID,则CA回应消息的消息头中包括同样的transtionID。如果在senderNonce消息中具有senderNonce,则CA回应消息的消息头中应该包括同样的reci p-Nonce a在PKI Body中,是kp元素。kp是CertRepMessage格式。如果CA签发了新证书,在消息体中应包括如下信息: status是granted或者gr antedWithMods;GB/T 19771-2005 certificate是新生成的GB/T 16264. 8-2005证书。新生成的证书应该包括如下扩展: subj ectKeyIdentifier域;在c ertificatePolicies字段中至少包括一个证书策略OID;在KeyI dentifier域中有一个机构密钥标识符。ce rtificatePolicies扩展应该和当前有效证书一致。如果在kr消息中包含了密钥标识符信息,则证书中应该将其包含在subj ectKeyIdentifier;如果没有提供密钥标识符信息,则CA应该对证书公钥信息计算低96 bit的SHA-1摘要值作为subjectKeyIdentifier的值。摘要值是对证书中的主体公钥进行计算的,不包括标签和长度。 如果kr信息中包括了subj ectKeyIdentifier之后的扩展,则CA可以对其他的扩展信息进行修 改或者忽略。如果发布者的证书和CRL不能够从已知的X. 500目录中得到,则新证书中应该在issuerAlt- Name中包括URLs信息,在CRLDistributionPoints控制中包括distributionPoint域。如果st atus是granted或者grantedWithMods,则failInfo域不存在。如果CA拒绝用户的申请,消息体包括如下信息: status是r ejected; failInfo包括了合适的代码,可以是:.badAl g表示CA不支持或者不认识kr指定的签名算法,令badPop表示popoSi gningKey域中的签名有误,令ba dMessageCheck表示PKIProtection域中的签名有误,.ba dRequest表示回应者不支持或者不允许该事务,.ba dTime表示消息头中的messageTime的时间和回应者的系统时间相差太大,令ba dCertId表示证书序号不能是serial域中所填的非零值;如果status是r ejected, certifcate域不存在。PKI Protection域包含了CA对于消息头和消息体的DER编码的签名。c)确认消息 收到kp的时候,证书持有者应该产生PKIConfirm消息。PKIHeader中的信息和利用RA向CA申请证书的情况下的PKIHeader一致,除了messageTi me是当前时间。如果证书更新申请被接受, 则PKIProtection是证书持有者使用新证书的对应私钥,对于消息 头和消息体的DER编码的签名。如果申请被拒绝,则PKIProtection是证书持有者使用当前有效证书的对应私钥,对于消息头和消息体的DER编码的签名。 收到PKIConf irm的时候,CA应该产生PKIConfirm消息。PKIHeader中的信息和kp一致,除了mes sageTime是当前时间。PKI Protection是CA对于消息头和消息体的DER编码的签名。6.6.6 PKCS # 10自我注册请求目前不是证书持有者的实体可以用RFC 2314定义的证书请求语句直接向CA申请证书。请求实体产生PKCSReq类型的PKIMessage消息来申请证书,在证书请求中的正文里包括相应私钥的拥有证明,并用RA以带外方式提供的密钥来加密该PKIMessage. CA返回一个证书请求响应消息给证书申请者。该消息将包含证书或处理失败原因代码。证书请求者和RA之间需用带外方式完成一个秘密消息的交换。 a)从证书持有者到CA的自我注册请求 请求者产生一个包含PKIBody元素p10cr的PKIMessage, PKIHeader包含以下信息:pvno是1; GB/T 19771-2005mes sageTime当前精确到秒时间;sender请求者的可辨别名或电子邮件地址; r ecipient CA的可辨别名;pr otectionAlg用来保护该消息的签名算法的算法标识符。PKIBody是PKCS10Cert RegMessages类型,此类型是一个certificationRequestlnfo, signa-t ureAlgorithm和signature的序列。certificationRequestinfo包含以下信息:versi on是V3 (2);subj ect当且仅当serial为零时才出现,指明证书持有者的可辨别名;s ubjectPublicKeyInfo指明了新证书的公钥和相应的算法标识符。s ignatureAlgorithm字段包含用来生成signature字段的私钥的相应算法标识符;签名是对DER编码后的certfi cationRequestInfo进行的。PKIProtecti on字段包含一个请求者用从RA获得的秘密信息生成的一个值。实体用RA提 供的密钥产生一个MAC. protectionAlg字段应为所用的消息认证算法的OID,并且PKI Protection的值就是消息认证码。PKIProtection的输人是如下数据结构的DER编码:ProtectedPart::=SEQUENCE{ header PKIHeader, body PKIBody}b)从CA到证书申请者的PKCS证书请求响应CA会返回一个包含PKI Body元素cp的PKIMessage给证书持有者。PKIHeader包含以下信息: pvno是1; mes sageTime当前精确到秒的时间;sender CA的可辨别名; recipient证书请求头消息中的sender的值;pr otectionAIg用来保护该消息的签名算法的算法标识符。如果PKCSRe q中有transactionID,则响应的PKIHeader中应包含相同的transactionIDoPKI Body的元素是一个CerRepMessage类型的cp。若CA发放了证书,PKIBody将包含以下信息: status为granted或grantedWithmods,cert ificate包含新的GB/T 16264. 8-2005证书。 若p10cr消息中指定了特定的密钥标识符,证书将在subjectKeyIdentifier字段包含该密钥标识符。如果没有指明具体的密钥标识符, CA将用主体公钥的低96位SHA-1散列函数作为subj ectKeyIdentifier字段中的Keyldentifier。散列函数是对证书中主体公钥字段的值(不包括标签和长度)计算得到的。 如果s tatus为granted或grantedWithmods, faillnfo将不出现;若CA拒绝请求,正文将包含以下信息: st atus为rejected;f aillnfo包含相应的错误代码: .badAlg指明算法的标识符不被识别或不被支持,因此CA无法验证签名,今ba dpop指明pkIOcr的signature字段的签名被校验,但是不匹配,令ba dMessageCheck指明PKIMessage的PKIProtection字段里的MAC被拒绝,.ba drequest指明响应者不允许或不支持请求,.ba dtime指明消息头中的messageTime字段中的时间与响应者的系统时间差别GB/T 19771-2005太大; 哟ect若status字段为red, certifitate字段将不出现。证书还要包括以下扩展: 一个subj ectKeyIdentifier字段; 在certificatePolicies字段中至少包括一个证书策略OID;一个aut hority密钥标识符,包括一个Keyldentifier字段。若c r消息中还包括除subjectKeyIdentifier以外的其他扩展,CA就可以修改或忽略请求扩展。 如果颁发者的证书或是CRLs不提供X. 500目录服务,证书就应含有issuerAltName扩展中的URLs以及CRLDi stributionPoints扩展中的distributionPoint字段。PKI Protection字段包含CA的签名,在消息头和消息体的DER编码序列上签名。6.6.7撤销请求证书持有者可以请求撤销自己的证书。证书持有者产生一个RevReq消息,对该消息进行签名并 发送给相应RA,并在RA审查通过用户的身份后向CA发出相应撤销信息。该签名必须用未过期、未被撤销的签名证书的相应私钥产生(可以是要撤销的证书)o RevReq消息要标识出想撤销的证书以及要撤销的原因。CA回应RA一个RevRep消息,RA再回应证书持有者相应的RevRep消息。如果消息r r (RevReq)中包含transactionlD,则CA和RA所响应的rp (RevRep)消息中也应包含相同的transactinlD,注意其中从证书持有者所发出的rr和RA所发出的rr消息中的transactinlD可以不同。rp消息至少要包含status字段以反映请求的状态和revDetails字段以表示欲撤销的证书。a)从证书持有者到RA的撤销请求 证书持有者生成一个包含一个PKI Body元素rr的PKIMessageo PKIHeader包含以下信息:pvno是1; transactionID与终端实体名一起唯一标识一个终端实体与RA之间事务的整数;mes sageTime为当前精确到秒的时间;sender为证书持有者的可辨别名; reci pient为RA的可辨别名;pr otectionAlg为保护消息而使用的签名算法标识符。 消息的正文PKIBody为RevRegContent, RevRegContent是RevDetails的序列。RevDetails是由Cert Details和三个可选字段组成的序列:原因标志;怀疑或丢失的日期和时间;以及 crIEntryDetails(一个CRL Entry扩展的序列)。CertDetails被定义为一个CertTemplate。在本标准中, RevRegContent是一个RevDetails的序列。CertDetails,最少包括以下信息:seri al证书序列号;i ssuer证书发放者的标识名。或是 subj ect证书持有者的标识名;i ssuer证书发放者的标识名。Cer tDetails还可在extensions字段中包含一个subjectKeyldentifiero(如果请求者希望撤销颁发给某个主体的所有证书,Cert Details就应仅含有subject和issuer。也就是说,仅希望撤销单个证书的请求就只含有相应的序列号或是s ubjectKeyldentifier)。RevDetai ls要包括带有reasonCode扩展的crlEntryDetails,也可以包括invalidityDate扩展 来说明何时该证书作废。原因代码也可以不是removeFromCRI.,PKI Protection字段含有请求者的签名,即对头和正文的DER编码进行签名。终端实体要用相应CA所颁发的当前有效签名证书的相应私钥进行签名。 GB/T 19771-2005b)从RA到CA的撤销请求 RA或证书持有者生成一个包含一个PKIBody元素rr的PKIMessageo PKIHeader包含以下信息: pvno是1; transactionlD标识RA名一起唯一标识一个RA与CA之间事务的整数;me ssageTime为当前精确到秒的时间;sender为RA的可辨别名; r ecipient为CA的可辨别名;pr otectionAlg为保护消息而使用的签名算法标识符。 消息体与从证书持有者到RA的撤销请求相同。PKI Protection字段含有RA的签名,即对头和正文的DER编码进行签名。RA要用相应CA所颁发的当前有效签名证书的相应私钥进行签名。 c)从CA到RA的撤销响应CA返回一个含有PKI Body元素rp的PKIMessage给请求者。PKIHeader包含以下信息: pvno是1;transacti onlD和从RA到CA的撤销请求rr消息中的transactionlD字段一样; messageTime为当前精确到秒的时间;s ender为CA的可辨别名; recipient为RA的可辨别名;pr otectionAlg为保护消息而使用的签名算法标识符。如果相应从RA到CA的撤销请求中有senderN once,则响应的PKIHeader中应把它作为reci pNonce。PKI Body是RpContent,如果CA撤销了证书,正文将包含以下信息: status是granted或是grantedWithMods;revDet ails将包含已撤销证书的CertId; 如果status是granted或grantedWithMods, faillnfo字段也可以不出现。如果CA拒绝了请求,正文就要包括如下信息: st atus为rejected; faillnfo包含相应的失败代码:.badAl g指明CA不能验证签名,因为算法的标识符不被识别或不被支持,令badMes sageCheck指明PKIProtection字段里的签名得到验证,但是不匹配,令badRe quest字段指明响应者不允许或不支持请求,令badTi me字段指明消息头中的messageTime字段中的时间与响应者的系统时间差别太大, 令badCertID表明CertDetails中的信息无法确定一个未过期、未撤销的证书;对于能够确定有问题的证书, revDetails将包含这个被拒绝撤销证书的CertId。PKIProtec-ti on字段包含CA的签名,即对头和正文的DER编码进行签名。若CA生成CRLs,并且撤销请求被接受, CRL将有以下值: userCertificate字段中的被撤销证书的序列号;r evocationDate收到撤销请求的日期和时间;c rlEntryExtensions要出现并包括:令Rev Details字段中的:easonCode,除非CA的策略有专门规定,今(可选的)RevDet ails字段中的badSinceDate扩展可以是invalidaityDate oGB/T 19771-2005d)从RA到证书持有者的撤销响应 RA在收到CA的回应消息后,返回一个含有PKIBody元素rp的PKIMessage给证书持有者。 PKIHeader包含以下信息:pvno是1; t ransactionlD和从RA到CA的撤销请求rr消息中的transactionlD字段一样;mes sageTime为当前精确到秒的时间;sender为CA的可辨别名; r ecipient为RA的可辨别名;pr otectionAlg为保护消息而使用的签名算法标识符。 如果相应的从证书持有者到RA的撤销请求消息中有senderNonce,则响应的PKIHeader中应把它作为re ci pNonce。 PKIBody是RpContent,内容与从CA到RA的撤销响应相同,PKIProtection字段包含RA的签名,即对头和正文的DER编码进行签名。 6.6.8集中产生密钥对和密钥管理证书申请拥有当前有效证书的PKI实体可以向该证书的签发CA提出申请,申请产生加密密钥对并签发相 应的证书。下面以RSA为例说明申请过程,在国内应用时,应使用国家密码管理主管部门审核批准的相关算法。发出申请的实体:产生临时的密钥管理密钥; 生成PKI cr(证书申请certificate request)消息,申请RSA密钥管理证书,cr消息中包括了上一步的临时密钥;利用当前有效证书的对应私钥, 对消息进行签名;发送给CAo 如果CA的CPS支持集中产生加密密钥对,则CA执行如下操作:CA按申请消息的要求产生密钥对,签发密钥管理证书; 申请消息使用临时RSA密钥; CA产生对称密钥;利用对称密钥加密新产生的私钥; 使用临时RSA公钥加密对称密钥; f产生和返回cp(certiicate response证书响应)消息给证书持有者。cp消息中包括了新生成的证书和加密后的私钥,或者是事务失败的代码。 a)集中产生密钥对申请证书持有者产生证书申请消息: PKIMessage消息中的PKIBody部分是cr元素。PKIHeader 包括了如下信息:pvno是1; messageTi me是当前时间,精确到秒;sender是证书持有者的可辨别名; reci pient是CA的可辨别名; protectionAlg是用于保护消息签名算法ID.消息体是Cer tRegMessages,是一个或者多个CertRegMessage组成的序列。对于集中产生密 钥对申请和密钥管理证书事务,CertRegMessages只能是包括了一个CertRegMessage的序列。在消息CertRegMessage中包括了如下信息: c ertReq包含了申请者要求包括在证书中的各种信息。GB/T 19771-2005 certReq是CertRequest, CertRequest是由一个certRegID、一个certTemplate和controls所组成的序列。对于集中产生密钥对申请和密钥管理证书事务: c ertRegID是任意整数;certTempl ate是一个CertTemplate;control s包含了protocolEncrKey控制。protocolEncrKey registration control的值是临 时公钥的值和参数(如果需要),以及算法OID.Ce rtTemplate包含了如下信息:versi on必须是v3(2); publicKey指明了算法和可选的参数,说明了所申请的密钥。Cer tTemplate中可能包括了如下信息: signingAlg指明了首选的签名算法。如果没有si gningAlg,则CA应该使用protectionAlg中说明的签名算法。申请消息里面不应该包括如下信息: i ssuerUID; subjectUID,PKIProtecti on域是使用当前有效证书的对应私钥对消息头和消息体的DER编码信息的签名 结果。b)集中产生密钥对回应CA返回密钥更新(PKI Message, PKIBody是cp元素)消息给证书持有者。PKIHeader包括了如下信息: pvno是1; messageTime是当前时间,精度到秒;s ender是CA的可辨别名;reci pient是证书持有者的可辨别名,也就是cr消息的sender;pr otectionAlg是用于保护消息签名算法IDo如果在cr消息中具有‘ ranstionID,则CA回应消息的消息头中包括同样的transtionID。如果在senderN once消息中具有senderN once,则CA回应消息的消息头中应该包括同样的recip-Nonce oPKI Body是cp元素。也就是CertRepMessage格式。如果CA签发了新证书,在消息体中应包括如下信息: status是granted或者是grantedWithMods;cert ificate包括了新签发的GB/T 16264. 8-2005证书;c ertifiedKeyPai:必须存在。 certifiedKeyPai:将在certOrEncCert域中包括证书,在privateKey域中包括加密过的私钥。申请者使用临时RSA公钥, privateKey域应该包括symmAlg,encSymmKey和encValuea symmAlg应该包括tDEA-ecb的OID, keying0ption应该是option-2(表示K1和K2是独立产生的,K3=K1); enc SymmKey是对CA产生的对称密钥的加密计算结果,使用临时RSA公钥进行加密;对称密钥K1和K2,应串接为TwoKeys,见(6. 2. 2. 5) ; TwoKeys应该按照RFC 2313说明的RSA加密方法进行加密;加密结果编码为e ncSymmKey。加密结果编码为BIT STRING, BIT STRING的最高位就是加密结果的最高位。 新的用户证书应该包括如下扩展: GB/T 19771-2005 subjectKeyIdentifier域;在cert ificatePolicies字段中至少包含一个证书策略OID;在Keyl dentifie:域中有一个机构密钥标识符。CA应该对证书公钥信息计算低96bi t的SHA-1摘要值,并将其作为subjectKeyIdentifier的 值。摘要值是对证书中的主体公钥进行计算得到的,不包括标签和长度。如果。r消息中包含了扩展, CA有可能修改或者忽略其扩展。 如果issuer的证书和CRL不能够从已知的X. 500目录中得到,则新证书中应该在issuerAlt-Name中包括URLs信息,在CRLDi stributionPoints控制中包括distributionPoint域。 如果status是granted或者grantedWithMods,则failInfo域不存在。如果CA拒绝用户的申请,消息体包括如下信息: st atus是rejected;f aillnfo包括了合适的代码,可以是: 令badAlg表示CA不支持或者不认识kr指定的签名算法,今badPop表示popoSi gningKey域中的签名有误,令badMes sageCheck表示PKIProtection域中的签名有误,.badReques t表示回应者不支持或者不允许该事务,.badTi me表示消息头中的messageTime的时间和回应者的系统时间相差太大,令badCe rtld表示证书序号不能是serial域中所填的非零值;如果st atus是rejected, certifcate域不存在。PKI Protection域包含了CA对于消息头和消息体的DER编码的签名。c)确认消息 收到cp的时候,证书持有者应该产生PKIConfirm消息。PKIHeader中的信息和利用RA向CA申请证书的情况下的PKIHeader一致,除了messageTi me是当前时间。PKIProtect ion是证书持有者使用当前有效证书的对应私钥,对于消息头和消息体的DER编码的签名。 6.6.9组合证书申请 签名密钥证书和密钥管理密钥证书的申请可以由一次事务完成。RA发起的注册请求和自我注册请求(见6. 6. 2,6. 6. 3,6. 6. 4 )可以和加密证书申请组合在一起(见6.6.9)。在这样的情况下,Cer-tRegMessages包括了两个CertRegMessage的序列。一个CertRegMessage等同于RA发起的注册请求和自我注册请求的情况,另一个CertRegMessage等同于加密证书申请的情况。消息使用了签名证书申请的方式来加以保护。如果组合申请中包括的是自我注册请求, 则要么签名密钥证书申请成功,要么两个证书的申请都不成功。如果还需要额外的信息来提供POP,申请者则使用自我注册请求中的私钥来对消息做签名。签名密钥的pop将使用pop域来实现(见6.6.2, 6.6.3和6. 6. 6 )。集中产生密钥对申请,私钥应该使用6. 6. 8中描述的方式进行加密。CA的响应按照响应部分的说明。CA响应可以是组成一个CertRepMessage,或者是分开。申请者使用CertRegID来区分CA的响应。响应消息的PKI FreeText域可以用来提供额外的信息。 收到kp的时候,证书持有者应该产生PKIConfirm消息。PKIHeader中的信息和利用RA向CA申请证书的情况下的PKIHeader一致,除了messageTime是当前时间。如果签名证书申请成功, PKIProtection是证书持有者使用新的签名证书的对应私钥,对于消息头和消息体的DER编码的签名。如果申请被拒绝,PKIProtection包含了对于消息头和消息体的DER编码的mac,该mac由认证证书请求的共享秘密产生。(如果申请因为badMessageCheck被拒绝,则PKIConfirm消息不需要再产生了。)GB/T 19771-20056.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.D-istributionPoints扩展中的distributionPoint字段)。GB/T 19771-2005附录A (规范性附录) X. 509 v3证书ASN. 1AuthenticationFramework {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.IMPORTSid-at,informationFramework, upperBounds selectedAttributeTypes, basicAccessControlFROM UsefulDefinitions {joint-iso-ccitt ds(5) modules(1)usefulDefinitions(O 2}Name, ATTRIBUTEFROM InformationFramework informationFrameworkub-user-passwordFROM UpperBounds upperBoundsAuthenticationLevelFROM BasicAccessControl basicAccessControlUniqueIdentifierFROM 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] IMPLICIT Unique] dentifier OPTIONAL,---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