news 2026/7/18 5:34:12

【2018-03-27】TLS简单概念笔记-X509证书和PKCS

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【2018-03-27】TLS简单概念笔记-X509证书和PKCS

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2018-03-27| 标题:TLS简单概念笔记-X509证书和PKCS分类:编程 |标签:tls


TLS简单笔记-X509和PKCS

参考链接
《 https://blog.csdn.net/eaglet/article/details/1685737 》
《 https://baike.baidu.com/item/x509/1240109 》
《 https://www.cnblogs.com/jtlgb/p/6762050.html 》

服务器SSL数字证书和客户端单位数字证书的格式遵循 X.509 标准。 X.509 是由国际电信联盟(ITU-T)制定的数字证书标准。为了提供公用网络用户目录信息服务, ITU 于 1988 年制定了 X.500 系列标准。其中 X.500 和 X.509 是安全认证系统的核心, X.500 定义了一种区别命名规则,以命名树来确保用户名称的唯一性; X.509 则为 X.500 用户名称提供了通信实体鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口, X.509 称之为证书。
X.509 给出的鉴别框架是一种基于公开密钥体制的鉴别业务密钥管理。一个用户有两把密钥:一把是用户的专用密钥(简称为:私钥),另一把是其他用户都可得到和利用的公共密钥(简称为:公钥)。用户可用常规加密算法(如 DES)为信息加密,然后再用接收者的公共密钥对 DES 进行加密并将之附于信息之上,这样接收者可用对应的专用密钥打开 DES 密锁,并对信息解密。该鉴别框架允许用户将其公开密钥存放在CA的目录项中。一个用户如果想与另一个用户交换秘密信息,就可以直接从对方的目录项中获得相应的公开密钥,用于各种安全服务。

所有的X.509证书包含以下数据:

  1. X.509版本号:指出该证书使用了哪种版本的X.509标准,版本号会影响证书中的一些特定信息。目前的版本是3。
  2. 证书持有人的公钥:包括证书持有人的公钥、算法(指明密钥属于哪种密码系统)的标识符和其他相关的密钥参数。
  3. 证书的序列号:由CA给予每一个证书分配的唯一的数字型编号,当证书被取消时,实际上是将此证书序列号放入由CA签发的CRL(Certificate Revocation List证书作废表,或证书黑名单表)中。这也是序列号唯一的原因。
  4. 主题信息:证书持有人唯一的标识符(或称DN-distinguished name)这个名字在 Internet上应该是唯一的。DN由许多部分组成,看起来象这样:
    CN=Bob Allen, OU=Total Network Security Division
    O=Network Associates, Inc.
    C=US
    这些信息指出该科目的通用名、组织单位、组织和国家或者证书持有人的姓名、服务处所等信息。
  5. 证书的有效期:证书起始日期和时间以及终止日期和时间;指明证书在这两个时间内有效。
  6. 认证机构:证书发布者,是签发该证书的实体唯一的CA的X.509名字。使用该证书意味着信任签发证书的实体。(注意:在某些情况下,比如根或顶级CA证书,发布者自己签发证书)
  7. 发布者的数字签名:这是使用发布者私钥生成的签名,以确保这个证书在发放之后没有被撰改过。
  8. 签名算法标识符:用来指定CA签署证书时所使用的签名算法。算法标识符用来指定CA签发证书时所使用的公开密钥算法和HASH算法。

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准。
PKCS 目前共发布过 15 个标准:
(1)PKCS#1:RSA加密标准。PKCS#1定义了RSA公钥函数的基本格式标准,特别是数字签名。它定义了数字签名如何计算,包括待签名数据和签名本身的格式;它也定义了PSA公/私钥的语法。
(2)PKCS#2:涉及了RSA的消息摘要加密,这已被并入PKCS#1中。
(3)PKCS#3:Diffie-Hellman密钥协议标准。PKCS#3描述了一种实现Diffie- Hellman密钥协议的方法。
(4)PKCS#4:最初是规定RSA密钥语法的,现已经被包含进PKCS#1中。
(5)PKCS#5:基于口令的加密标准。PKCS#5描述了使用由口令生成的密钥来加密8位位组串并产生一个加密的8位位组串的方法。PKCS#5可以用于加密私钥,以便于密钥的安全传输(这在PKCS#8中描述)。
(6)PKCS#6:扩展证书语法标准。PKCS#6定义了提供附加实体信息的X.509证书属性扩展的语法(当PKCS#6第一次发布时,X.509还不支持扩展。这些扩展因此被包括在X.509中)。
(7)PKCS#7:密码消息语法标准。PKCS#7为使用密码算法的数据规定了通用语法,比如数字签名和数字信封。PKCS#7提供了许多格式选项,包括未加密或签名的格式化消息、已封装(加密)消息、已签名消息和既经过签名又经过加密的消息。
(8)PKCS#8:私钥信息语法标准。PKCS#8定义了私钥信息语法和加密私钥语法,其中私钥加密使用了PKCS#5标准。
(9)PKCS#9:可选属性类型。PKCS#9定义了PKCS#6扩展证书、PKCS#7数字签名消息、PKCS#8私钥信息和PKCS#10证书签名请求中要用到的可选属性类型。已定义的证书属性包括E-mail地址、无格式姓名、内容类型、消息摘要、签名时间、签名副本(counter signature)、质询口令字和扩展证书属性。
(10)PKCS#10:证书请求语法标准。PKCS#10定义了证书请求的语法。证书请求包含了一个唯一识别名、公钥和可选的一组属性,它们一起被请求证书的实体签名(证书管理协议中的PKIX证书请求消息就是一个PKCS#10)。
(11)PKCS#11:密码令牌接口标准。PKCS#11或“Cryptoki”为拥有密码信息(如加密密钥和证书)和执行密码学函数的单用户设备定义了一个应用程序接口(API)。智能卡就是实现Cryptoki的典型设备。注意:Cryptoki定义了密码函数接口,但并未指明设备具体如何实现这些函数。而且Cryptoki只说明了密码接口,并未定义对设备来说可能有用的其他接口,如访问设备的文件系统接口。
(12)PKCS#12:个人信息交换语法标准。PKCS#12定义了个人身份信息(包括私钥、证书、各种秘密和扩展字段)的格式。PKCS#12有助于传输证书及对应的私钥,于是用户可以在不同设备间移动他们的个人身份信息。
(13)PKCS#13:椭圆曲线密码标准。PKCS#13标准当前正在完善之中。它包括椭圆曲线参数的生成和验证、密钥生成和验证、数字签名和公钥加密,还有密钥协定,以及参数、密钥和方案标识的ASN.1语法。
(14)PKCS#14:伪随机数产生标准。PKCS#14标准当前正在完善之中。为什么随机数生成也需要建立自己的标准呢?PKI中用到的许多基本的密码学函数,如密钥生成和Diffie-Hellman共享密钥协商,都需要使用随机数。然而,如果“随机数”不是随机的,而是取自一个可预测的取值集合,那么密码学函数就不再是绝对安全了,因为它的取值被限于一个缩小了的值域中。因此,安全伪随机数的生成对于PKI的安全极为关键。
(15)PKCS#15:密码令牌信息语法标准。PKCS#15通过定义令牌上存储的密码对象的通用格式来增进密码令牌的互操作性。在实现PKCS#15的设备上存储的数据对于使用该设备的所有应用程序来说都是一样的,尽管实际上在内部实现时可能所用的格式不同。PKCS#15的实现扮演了翻译家的角色,它在卡的内部格式与应用程序支持的数据格式间进行转换。

PKCS#7 常用的后缀是: .P7B .P7C .SPC
PKCS#12 常用的后缀有: .P12 .PFX
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT
X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 5:34:10

【项目编号:project49965】SpringBoot高校垃圾分类回收管理系统:分类知识、回收预约、积分兑换一体化

高校环保回收场景 SpringBoot 毕设项目 前后台完整演示SpringBoot垃圾分类回收预约积分兑换后台管理本项目围绕高校垃圾分类与可回收物管理场景展开,前台面向学生提供分类知识浏览、回收信息查看、回收预约与积分兑换等功能;后台面向管理员提供用户、分…

作者头像 李华
网站建设 2026/7/18 5:33:50

Android登录态管理:Token续期与安全存储实践

1. Android登录态保持的核心挑战在移动应用开发中,登录态管理是最基础也最容易被忽视的环节。我见过太多应用因为登录态处理不当导致用户体验灾难——频繁要求重复登录、多设备登录冲突、会话突然失效等问题层出不穷。这些问题的本质,都是开发者没有深入…

作者头像 李华
网站建设 2026/7/18 5:33:13

LeRobot So-Arm Max机械臂Physical AI系统搭建与实操指南

1. 项目概述:为你的LeRobot So-Arm Max注入灵魂如果你已经完成了LeRobot So-Arm Max机械臂的主体组装,那么恭喜你,你的机器人已经拥有了健壮的“骨骼”和“肌肉”。但要让这台机械臂真正活过来,成为一个能够感知、学习并执行任务的…

作者头像 李华
网站建设 2026/7/18 5:32:22

芯片测试中的OCC时钟控制技术解析与应用

1. 芯片时钟控制(OCC)基础概念解析在VLSI测试领域,On-Chip Clocking(OCC)是一个至关重要的DFT(Design for Testability)模块。简单来说,OCC就是一个位于芯片内部的时钟控制单元&…

作者头像 李华
网站建设 2026/7/18 5:32:17

Unity多点触控开发实战:TouchScript核心机制、常见问题与性能优化全解析

1. 项目概述:Unity多触控的“甜蜜”与“烦恼”在移动应用和交互式大屏项目里,多指触控几乎是现代用户体验的标配。从双指缩放图片、旋转模型,到复杂的手势识别和多人协作交互,它极大地拓展了应用的交互维度。Unity作为主流的实时内…

作者头像 李华
网站建设 2026/7/18 5:31:16

Codex设计助理:自动化灵感检索与参考管理工具

1. 项目概述:这不是又一个AI聊天框,而是一个会自己找灵感、筛参考、写brief的“设计助理” “我用GPT造了个设计师灵感工具!3 步让Codex把找参考变成全自动”——这个标题里藏着一个被绝大多数人忽略的关键事实:它没说“用GPT写提…

作者头像 李华