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

X509数字证书格式相关推荐

  1. 数字证书格式详细说明【转】

    数字证书格式 常见的数字证书格式 cer后缀的证书文件有两种编码 DER二进制编码 BASE64编码(也就是.pem) p7b一般是证书链,里面包括1到多个证书 pfx是指以pkcs#12格式存储的证 ...

  2. x509数字证书介绍

    x509数字证书介绍 感谢:http://www.blogjava.net/kapok/archive/2005/09/29/14378.html 一.什么是数字证书 数字证书就是互联网通讯中标志通讯 ...

  3. X509数字证书学习

    文章目录 1 背景 2 介绍 3 X509证书 3.1 证书组成结构 3.2 证书编码格式和扩展名 3.2.1 编码格式 3.2.2 扩展名 4 浏览器证书导出(示例) 4.1 查看证书详细信息 4. ...

  4. x509数字证书详解

    数字证书 小明和小花进行通信,小花要在网络中验证发来消息的人到底是不是小明,是不是被其他人篡改,就需要数字证书来验证.CA机构先核实小明身份,再给小明颁发一个数字证书,证书中包含了小明的身份信息和公钥 ...

  5. 利用x509数字证书实现数据渗透

    数据泄露可能是内部人员和黑客的主要目标.因此,你就需要思考如何发送这些数据. 大多数公司对这方面的问题几乎没有什么防护措施(例如,中间人代理和TLS拦截),检测通常也少的可怜--但有时,这可能是一个挑 ...

  6. openssl数字证书常见格式与协议介绍

    原文地址:http://blog.csdn.net/anxuegang/article/details/6157927 证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.K ...

  7. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)

    引言 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件.为现实网络安全化标准如今大部分的 B2B.B2C.P2P.O2O 等商业网站含有重要企业资料个人资料的信息资信网站 ...

  8. 数字证书在密改项目中的作用与应用实现

    摘要: 本文从政策法规和技术标准方面,梳理了信息系统密码应用的必要性及要达到的目标,并重点从技术要求入手,说明数字证书在保障身份真实性.数据机密性.数据完整性.不可否认性方面的技术实现.希望能为密码应 ...

  9. 网络电话服务器安全认证管理系统,CA 数字证书认证系统建设解决方案

    方案介绍 CA数字证书认证系统是信息系统安全基础设施,在企业内部建设CA数字证书认证系统后,签发的数字证书可作为业务系统用户的身份认证凭证,并能对关键交易进行签名,实现防抵赖和防篡改.同时制定统一的安 ...

  10. 数字证书与实现双向SSL认证

    数字证书与实现双向SSL认证一:数字证书 什么是证书? 既然叫证书,肯定是用来证明什么东西的,比如身份,学历,能力等级.数字证书简单理解就是证明你在互联网中的身份.证书一般都需要有一个权威颁发机构,而 ...

最新文章

  1. MongoDB代码——Python篇
  2. 架构师速成6.6-知识的收集整理学习
  3. 新思路等级考二级c语言题答案,2017计算机二级C语言考试强化习题及答案
  4. android源码下载方式
  5. 834. Sum of Distances in Tree
  6. 转:IOS开发之----Xcode非ARC项目中设置部分文件ARC支持
  7. 打通钉钉+WebHook:日志服务告警升级
  8. 10kv电压互感器型号_电流互感器结构及原理
  9. luogu_1984 [SDOI2008]烧水问题
  10. .Net给图片添加水印效果
  11. SQL Server 2000中数据库质疑的恢复方法
  12. 简易python爬虫 - 爬取站长论坛信息
  13. Linux使文件变成二进制,linux 二进制文件显示方法
  14. mac php fpm.pid,php-fpm的常用配置和优化
  15. 快速画圆切线lisp_autolisp中画两圆公切线的程序怎么写?
  16. SudaMod-81.0 / crDroidAndroid-8.1(android-8.1.0_r20)红米3 2018年5月3日更新
  17. 饱和气压与温度的关系_饱和水蒸汽的压力与温度的关系介绍
  18. R语言下载GEOquery包
  19. Android wms粗略介绍
  20. matlab使用hough变换函数进行车道检测

热门文章

  1. IPv6技术精要--第14-16章 IPv6路由选择
  2. 积木报表VS睿思BI报表
  3. ps后期调色教程,ps怎么后期调色步骤图
  4. Ubuntu交叉编译U-boot
  5. ORACLE归档日志增大的原因
  6. 2022 CNCC 中国计算机大会参会总结
  7. 天池龙珠训练营Python_Task2: 数据结构_(4)字典
  8. uni-app 点击生成海报
  9. 网站代码sql注入攻击漏洞修复加固防护措施
  10. 黑莓android系统,黑莓Passport的手机系统是什么?能升级安卓5.0吗?