X509数字证书格式

X509C

X.509 协议:V3/V4版证书(建议改进版记作X.509C)

       证书格式

       (1)待签名部分

       1、版本号 V3                                                Version

       2、序列号                                                      Serial Number

       3、签名算法OID*                                          Signature Algorithm Identifier

       4、签发者                                                      Issuer(各项名字的集合)

       5、有效期                                                      Validity

                     生效期                                                NotBefore

                     失效期                                                 NotAfter

       6、申请者                                                      Subject (各项名字的集合)

       7、申请者公钥信息                                        Subject Public Key Info

                     算法*                                                  Algorithm

                     公钥PK                                               Subject Public Key

       8、签发者唯一ID                                    Unique ID of CA

       9、申请者唯一ID                                    Unique ID of Subject

       10、扩展项                                                 Extension

                     标准扩展项

                     自定义扩展项

       (2)签名算法部分

              签名算法OID*                                   Signature Algorithm Identifier

       (3)签名部分

              签名体

几点说明

(1)签名算法OID(一、(1)中带*的地方)

目前主要有:

md2WithRSAEncryption = { 9, "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x02"};

md5WithRSAEncryption = { 9, "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x04"};

shaWithRSAEncryption = { 5, "\x2B\x0E\x03\x02\x0F"};

sha1WithRSAEncryption ={ 9, "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05"};

dsaWithSHA ={ 5, "\x2B\x0E\x03\x02\x0D"};

dsaWithSHA1 ={ 7, "\x2A\x86\x48\xCE\x38\x04\x03"};

dsaWithSHA1_2 ={ 5, "\x2B\x0E\x03\x02\x1B"};

申请增加:

schWithRSAEncryption ={ 6, "\x2A\x56\x0B\x05x05\x03 "}; (1,2,86, 11,5,5,3)

schWithECCAEncryption ={ 6,"\x2A\x56\x0B\ x05\x05\x04"}; (1,2,86, 11,5,5,4)

(2)签发者和申请者

              目前主要有:

                     countryName                       //国名(二字节)

                     organizationName                 //组织名

                     organizationalUnitName    //部门名

                     stateOrProvinceName           //省名

                     commanName                      //通用名

                     localityName                       //所在地名

                     email                               //email地址

                     postalAddress                       //通信地址    

                     postalCode                           //邮政编码

                     postalOfficeBox                   //邮箱

                     telephoneNumber                 //电话号码

                     telexNumber                        //传真号码

                     title                                     //职务头衔

                     surName                              //姓0x550404

                     givenName                       //名

                     initials                     //

(3)有效期    

当时间采用UTCTime时,年份采用二字节(YY),当YY大于等于50,年将被认为是19YY;当YY不到50,年将被认为是20YY。而当时间采用GeneralizedTime时,年份采用四字节(YYYY)。

(4)签名体

              D=HashOID+(Hash结果),对D进行DER编码,再采用PKCS1标准进行私钥加密即签名。HashOID目前有:

                     md2 ={ 8, "\x2A\x86\x48\x86\xF7\x0D\x02\x02"};

                     md5 ={ 8, "\x2A\x86\x48\x86\xF7\x0D\x02\x05"};

                     sha ={ 5, "\x2B\x0E\x03\x02\x12"};

       sha1 ={ 5, "\x2B\x0E\x03\x02\x1A"};

申请增加:sch ={ 5, "\x2A\x56\x0B\ x05\x05"};  (1,2,86, 11,5,5)

(5)在KeyUsage类型中位(Bits)使用如下:

                     定义              比特位                       中文定义

              -------------------------------------------------------           

              digitalSignature        0x8000                     数字签名证书

              nonRepudiation        0x4000                     非抵赖证书

              keyEncipherment     0x2000                     密钥加密证书

              dataEncipherment   0x1000                      数据加密证书

              keyAgreement      0x0800                      密钥交换

              keyCertSign        0x0400                     签发证书

              crlSign            0x0200                      签发CRL文件

              encipherOnly       0x0100                     仅用于加密

       decipherOnly       0x0080                     仅用于解密

(6)标准扩展项

X.509C使用的标准扩展域如下:

权威密钥标识符(AuthorityKeyID)

主体密钥标识符(SubjiectKeyID)

密钥用法(KeyUsage)

私有密钥使用周期(PrivateKeyUsagePeriod)

证书策略(CertificatePolicies)

策略映射(PolicyMappings)

主体可替换名字(SubjectAlternativeName)

个人身份证号码

个人社会保险号

企业工商注册号

企业组织机构代码号

企业税号

发颁发者可替换名字(IssuerAlternativeName)

主体目录属性(SubjectDirectoryAttributes)

基本约束(BasicConstraints)

名字约束(NameConstraints)

策略约束扩大(PolicyConstraints)

扩大密钥使用领域(ExtendedKeyUsage)

CRL发布点(CRLDistributionPoints)

目前主要有:

         权威密钥标识符  

        主题密钥标识符  

 密钥使用 

 私有密钥使用周期

 证书策略 

 策略映射 

 主题可替换名字  

 发行者可替换名字

 主题目录服务系统属性   

 基本约束 

 名字约束 

 策略约束 

 扩大密钥使用领域

 CRL发布点

其中“权威密钥标识符”即AuthorityKeyIdentifier为必选项,且其结构中的可选项keyIdentifier 、authorityCertSerialNumber为必选。

    AuthorityKeyIdentifier ::= SEQUENCE {

      keyIdentifier           [0] KeyIdentifier            OPTIONAL,

      authorityCertIssuer      [1] GeneralNames            OPTIONAL,

      authorityCertSerialNumber[2]CertificateSerialNumber OPTIONAL  }

   KeyIdentifier ::= OCTET STRING,由两种从公开密钥产生密钥标识符的通用方法如下:

A: keyIdentifier由BIT STRING subjectPublicKey的值的160位SHA1哈希值组成(排除标签,长度和不在使用的bits数目)。

B: keyIdentifier 4 bit类型字段值为0100以及随后的由BIT STRING  subjectPublicKey的值SHA 1哈希的值中最后60 bits连接组成。

  

   统一采用A形式。

   

(7)自定义扩展项(扩展扩展项)

    自定义扩展项只要满足以下结构即可

    Extension  ::=  SEQUENCE  {

              extnID      OBJECT IDENTIFIER,       //OID

              critical      BOOLEAN DEFAULT FALSE, //是否是关键项

              extnValue   OCTET STRING              //扩展值

    }

    另外,Netscape证书、SET证书还有LDAP的一些自定义扩展可以直接引

8)CRL作废链

       为适应安全EMAIL等SSL应用的证书链频繁下载需要,建议链文件在4K之内。把每100或200个证书放在一条链中,在每份证书中指明它所在的链名、URL。

4.3.3.2证书撤消表结构

版本号version

签名算法标识signature

颁发者名称issuer

本次更新(日期/时间)thisUpdate

下次更新(日期/时间)nextUpdate

注销证书链

用户证书序列号 userCertificate

注销日期revocationDate

CRL条目扩展项crlEntryExtentions

    ……

CRL链长200个证书)

CRL扩展域crlExtentions

签名算法SignatureAlgorithm

签名signatureValue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值