CA基本常识:X.509标准

简介:
      在和CA进行一些接触时,我们常常会听到一个名词: X.509。它是一种行业标准或者行业解决方案,在X.509方案中,默认的加密体制是公钥密码体制。为进行身份认证,X.509标准及公共密钥加密系统提供了数字签名的方案。用户可生成一段信息及其摘要(亦称作信息"指纹")。用户用专用密钥对摘要加密以形成签名,接收者用发送者的公共密钥对签名解密,并将之与收到的信息"指纹"进行比较,以确定其真实性。
  此问题的解决方案即X.509标准与公共密钥证书。本质上,证书由公共密钥加密钥拥有者的用户标识组成,整个字块有可信赖的第三方签名。典型的第三方即大型用户群体(如政府机关或金融机构)所信赖的CA。
  此外,X.509标准还提供了一种标准格式CRL,下面我们就来看一看 X.509标准下的证书格式极其扩展。
  目前X.509有不同的版本,例如 X.509 V2和x.509 v3都是目前比较新的版本,但是都在原有版本(X.509 V1)的基础上进行功能的扩充,其中每一版本必须包含下列信息: 
  (1) 版本号
  (2) 序列号;
  (3) 签名算法标识符
  (4) 认证机构
  (5) 有效期限
  (6) 主题信息
  (7) 认证机构的数字签名
  (8) 公钥信息
1、版本号:
用来区分X.509的不同版本号
2、序列号;
由CA给予每一个证书的分配唯一的数字型编号,当证书被取消时,实际上是将此证书的序列号放入由CA签发的CRL中;这也是序列号唯一的原因。
3、签名算法标识符:
用来指定用CA签发证书时所使用的签名算法。算法标识符用来指定CA签发证书时所使用的公开密钥算法和HASH算法,须向国际指明标准组织(如ISO)注册。
4、认证机构:
即发出该证书的机构唯一的CA的x.500名字;
5、有效期限:
证书有效的时间包括两个日期:证书开始生效期和证书失效的日期和时间。在所指定的这两个时间之间有效;
6、主题信息:
证书持有人的姓名、服务处所等信息;
7、认证机构的数字签名:
以确保这个证书在发放之后没有被撰改过;
8、公钥信息:
包括被证明有效的公钥值和加上使用这个公钥的方法名称;
  X.509的扩展(V3)
  X.509标准第三版在V2的基础上进行了扩展,V3引进一种机制。这种机制允许通过标准化和类的方式将证书进行扩展包括额外的信息,从而适应下面的一些要求一: 
  (1)一个证书主体可以有多个证书;
  (2)证书主体可以被多个组织或社团的其他用户识别;
  (3)可按特定的应用名(不是X.500名)识别用户,如将公钥同EMAIL地址联系起来;
  (4)在不同证书政策和实用下会发放不同的证书,这就要求公钥用户要信赖证书;证书并不限于这些标准扩展,任何人都可以向适当的权利机构注册一种扩展。将来会有更多的适于应用的扩展列入标准扩展集中。值得注意的是这种扩展机制应该是完全可以继承的。 
  每一种扩展包括三个域:类型、可否缺省、值
类型字段定义了扩展值字段中的数据类型。这个类型可以是简单的字符串,数值,日期,图片或一个复杂的数据类型。为便于交互,所有的数据类型都应该在国际知名组织进行注册。
  是否可缺省字段是一比特标识位。当一扩展标识为不可缺省时,说明相应的扩展值非常重要,应用程序不能忽略这个信息。如果使用一特殊证书的应用程序不能处理该字段的内容,就应该拒绝此证书。 
扩展值字段包含了这个扩展实际的数据。 
公开密钥证书的标准扩展可以分为以下几组: 
  · 密钥和政策信息,包括机构密钥识别符、主体密钥识别符、密钥用途(如数字签字,不可否认性   、密钥加密、数据加密、密钥协商、证书签字、CRL签字等),密钥使用期限等; 
  · 主体和发证人属性,包括主体代用名、发证者代用名、主体检索属性等; 
  · 证书通路约束,包括基本约束,指明是否可以做证书机构。 
  · 与CRL有关的补充;
  X.509是国际标准化组织CCITT建议作为X.500目录检索的一部分提供安全目录检索服务。一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息一种非常通用的证书格式,所有的证书都符合X.509 国际标准。目前X.509有不同的版本,例如 X.509 V2和x.509 v3都是目前比较新的版本,但是都在原有版本基础上进行功能的扩充,其中每一版本必须包含下列信息:
(1) 用来区分X.509的不同版本号既版本号
(2) 由CA给予每一个证书的分配的编号即序列号;
(3) 用于产生证书所用的方法以及一切参数即签名算法
(4) CA的x.500名字即发出该证书的认证机构
(5) 证书有效的时间包括两个日期,在所指定的两个时间之 间有效即有效期限
(6) 证书持有人的姓名、服务处所等信息即主题信息
(7) 认证机构的数字签名
(8) 被证明的公钥值,加上使用这个公钥的方法名称即公钥信息
  PKI (Public-Key Infrastructure) 公钥体系基础框架。
PKIX (Public-Key Infrastructure Using X.509)使用X.509的公钥体系基础框架。
X.500 由ISO和ITU提出的用于为大型网络提供目录服务的标准体系。
X.509 为X.500提供验证(Authenticating)体系的标准。
PKCS(Public Key Cryptography Standards)公钥加密标准,为PKI提供一套完善的标准体系。 
对于任何基于公钥体系的安全应用,必须确立其PKI。而电子签证机关(CA)是PKI中的一个关键的组成部分,它主要涉及两方面的内容,即公钥证书的发放和公钥证书的有效性证明。在PKIX中,CA遵循  X.509标准规范。
X.509最早的版本X.509v1是在1988年提出的,到现在已升级到X.509v3,现将其涉及到的主要内容以及与前版本的比较列于下表。
X.509 PKI国际标准更新版本对照表
X.509 PKI 主要特性
X.509 v1 & 2 X.509 v3
证书信息 只有X.500 实体名,包括CA、证主(subject)名,证主公钥及其有效期。 充分扩展,可包含任何信息。
CA 规范 CA体系鼓励带交叉的层状树型结构,无信任限制规范。 CA体系鼓励带交叉的层状树型结构,有信任限制规范。
CA "证主 " 用户 CA、证主、用户在概念上严格区分
CA "证主" 用户信任关系 认为每个用户至少信任一个CA。CA无法操纵与其它CA、证主及用户间的信任关系。 认为每个用户至少信任一个CA。CA可以规范与其它CA及证主间的信任关系。
证书有效性验证方式 离线方式,通过检查证书有效期及是否出现在最近的CRL(证书吊销表)上。 支持离线与在线方式。
证书吊销方法 简单CRL。 复杂的CRL,通过功能扩展支持在线方式。
证书形式特点 身份形式的证书。 主要还是身份形式的证书,但支持信任委托形式的证书。 
匿名性 匿名程度依赖于 X.500 条目的匿名程度。 扩展功能支持彻底的匿名服务。
X.509证书格式 
X.509是另一种非常通用的证书格式。所有的证书都符合ITU-T X.509国际标准;因此(理论上)为一种应用创建的证书可以用于任何其他符合X.509标准的应用。但实际上,不同的公司对X.509证书进行了不同的扩展,不是所有的证书都彼此兼容。在一份证书中,必须证明公钥及其所有者的姓名是一致的。对PGP证书来说,任何人都可以扮演认证者的角色。对X.509证书来说,认证者总是 CA或由CA指定的人(其实PGP证书也完全支持使用CA来确认证书的体系结构),一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。X.509标准定义了证书中应该包含哪些信息,并描述了这些信息是如何编码的(即数据格式),所有的X.509证书包含以下数据:
<>X.509版本号:指出该证书使用了哪种版本的X.509标准,版本号会影响证书中的一些特定信息。目前的版本是3。 
<>证书持有人的公钥:包括证书持有人的公钥,算法(指明密钥属于哪种密码系统)的标示符和其他相关的密钥参数。
<>证书的序列号:创建证书的实体(组织或个人)有责任为该证书指定一个独一无二的序列号,以区别于该实体发布的其他证书。序列号信息有许多用途;比如当一份证书被回收以后,它的序列号就被放入证书回收列表(CRL)之中。
<>证书持有人唯一的标示符:(或称DN-distinguished name)这个名字在 Internet上应该是唯一的。DN由许多部分组成,看起来象这样: 
CN=Bob Allen, OU=Total Network Security Division, 
O=Network Associates, Inc., C=US 
这些信息指出该科目的通用名,组织单位,组织和国家 
<>证书的有效期:证书起始日期和时间以及终止日期和时间;指明证书何时失效。 
<>证书发布者的唯一名字:这是签发该证书的实体的唯一名字。通常是CA。.使用该证书意味着信任签发证书的实体。(注意:在某些情况下,比如根或顶级CA证书,发布者自己签发证书) 
<>发布者的数字签名:这是使用发布者私钥生成的签名。 
<>签名算法的标示符:指明CA签署证书所使用的算法。 
X.509证书和PGP证书之间有许多不同,最明显的如下所述: 
<>用户可以创建自己的PGP证书,但是必须向CA请求才能得到一份X.509证书。 
<>X.509证书天生只支持密钥拥有者的一个名字。
<>X.509证书只支持证明密钥合法性的一个数字签名。
要获得一份X.509证书,必须请求CA发给你证书。用户提供自己的公钥,证明自己拥有相应的私钥,并提供有关自己的某些特定信息。然后在这些信息上数字签名,并将整个数据包(称为证书请求)发给CA。CA做一些努力来验证用户提供的信息是正确的,然后就生成证书并返回给用户。 
一份X.509证书看起来很象一份带公钥的标准书面证书(类似于基础急救班的结业证书)。证书中包含名字和一些有关的个人信息,加上颁发证书人的签名。
当前X.509证书最广泛的使用大概是在Web浏览器之中。




本文转自 fish_yy 51CTO博客,原文链接:http://blog.51cto.com/tester2test/138523,如需转载请自行联系原作者
目录
相关文章
|
存储 Java 开发者
Java变量命名规则
Java变量命名规则
825 0
|
芯片
译码器的介绍
译码器是一种常见的数字电路元件,它用于将输入的编码信号转换为输出的解码信号。在数字系统中,译码器起着非常重要的作用,它能够将编码的数字信号转换为可识别的输出信号,实现数字信号的解码和解析。本文将介绍译码器的原理、分类、应用以及未来的发展趋势。 一、译码器的原理 译码器的原理是基于布尔逻辑运算的。它根据输入的编码信号,通过内部的逻辑门电路进行运算,最终输出对应的解码信号。译码器的输入可以是二进制编码、BCD编码或格雷码等形式,输出可以是十进制数、BCD数或具体的控制信号等。 译码器的内部结构通常由多个逻辑门电路组成,例如AND门、OR门和NOT门等。通过这些逻辑门的组合,译码器可以实现各种不
1209 0
|
4月前
|
存储 弹性计算 缓存
阿里云服务器u2a和u1实例怎么选?性能价格和适用场景对比,选型对比参考
在阿里云服务器的实例规格中,前期推出的通用算力型u1实例广受企业青睐,尤其是阿里云推出的u1实例2核4G5M带宽仅需199元,深受广大初创企业用户喜欢。在此基础上,全新推出的u2a实例算力性能超u1实例40%,性能更好。对于用户来说,更为关心的是通用算力型u2a实例与u1实例相比,有什么不同,性能上有哪些提升?本文将从性能、适用场景、收费标准等多个角度对比通用算力型u2a实例与u1实例,以供大家了解他们之间的区别,从而做出选择参考。
|
6月前
|
存储 人工智能 数据库
构建有记忆的 AI Agent:SQLite 存储 + 向量检索完整方案示例
本文介绍如何为AI Agent构建记忆系统,通过SQLite存储交互历史、向量数据库实现语义检索,结合LLM反思与总结,赋予Agent跨会话记忆、自我反思和目标追踪能力,使其从被动应答工具进化为可长期协作的智能伙伴。
773 2
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
542 1
|
机器学习/深度学习 人工智能 算法
《C++与 BLAS、LAPACK:加速人工智能算法的线性代数秘籍》
本文探讨了线性代数在人工智能中的核心地位及其对算法性能的影响,重点介绍了 C++ 中的 BLAS 和 LAPACK 库。这些库通过高效的基础线性代数运算和高级矩阵操作,显著提升了神经网络、数据降维和推荐系统等算法的计算效率。文章还详细讲解了如何在 C++ 项目中集成和优化这些库,以实现更好的性能。
564 19
|
存储 网络安全
Curl error (60): SSL peer certificate or SSH remote key was not OK for https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/x86_64/repodata/repomd.xml [SSL: no alternative certificate subject name matches target host name 'update.cs2c.com.cn']
【10月更文挑战第30天】在尝试从麒麟软件仓库(ks10-adv-os)下载元数据时,遇到 SSL 证书验证问题。错误提示为:`Curl error (60): SSL peer certificate or SSH remote key was not OK`。可能原因包括证书不被信任、证书与域名不匹配或网络问题。解决方法包括检查网络连接、导入 SSL 证书、禁用 SSL 证书验证(不推荐)、联系仓库管理员、检查系统时间和尝试其他镜像。
4541 1
【Qt】Qt定时器类QTimer
【Qt】Qt定时器类QTimer
492 0
|
网络协议 程序员
为什么TCP需要三次握手?一文讲透!
**TCP三次握手摘要** TCP三次握手是建立可靠TCP连接的过程,包括: 1. 客户端发送SYN包,进入SYN_SENT状态。 2. 服务端回应SYN和ACK包,进入SYN_RCVD状态。 3. 客户端再次发送ACK包,双方进入ESTABLISHED状态,连接建立。 三次握手确保双方都能发送和接收数据,防止失效请求导致的资源浪费,并同步序列号以确保可靠性。
259 0
|
机器学习/深度学习 JSON 物联网
ORPO偏好优化:性能和DPO一样好并且更简单的对齐方法
ORPO是另一种新的LLM对齐方法,这种方法甚至不需要SFT模型。通过ORPO,LLM可以同时学习回答指令和满足人类偏好。
968 0