[信息安全] 05 X.509 公钥证书的格式标准
X.509是# 公钥证书的格式标准, 广泛用于TLS/SSL安全通信或者其他需要认证的环境中。X.509证书可以由# CA颁发,也可以自签名产生。
1 Overview {#1-overview}
X.509证书中主要含有公钥、身份信息、签名信息和有效性信息等信息。这些信息用于构建一个验证公钥的体系,用来保证客户端得到的公钥正是它期望的公钥。
公钥: 非对称密码中的公钥。公钥证书的目的就是为了在互联网上分发公钥。身份信息: 公钥对应的私钥持有者的信息,域名以及用途等。签名信息: 对公钥进行签名的信息,提供公钥的验证链。可以是CA的签名或者是自签名,不同之处在于CA证书的根证书大都内置于操作系统或者浏览器中,而自签名证书的公钥验证链则需要自己维护(手动导入到操作系统中或者再验证流程中单独提供自签名的根证书)。有效性信息:证书的有效时间区间,以及# CRL等相关信息。
X.509证书的标准规范RFC5280中详细描述了证书的# 1.1 Encoding Format和# 1.2 Structure。
1.1 Encoding Format {#1-1-encoding-format}
- # DER格式 :
二进制格式。 - # PEM格式 :
ASCII文本格式。在DER格式或者其他二进制数据的基础上,使用base64编码为ASCII文本,以便于在仅支持ASCII的环境中使用二进制的DER编码的数据。
1.2 Structure {#1-2-structure}
一个具体的X.509 v3数字证书结构大致如下 :
Certificate
Version Number
Serial Number
Signature Algorithm ID
Issuer Name
Validity period
Not Before
Not After
Subject name
Subject Public Key Info
Public Key Algorithm
Subject Public Key
Issuer Unique Identifier (optional)
Subject Unique Identifier (optional)
Extensions (optional)
...
Certificate Signature Algorithm
Certificate Signature
2 File Extension {#2-file-extension}
X.509有很多种常用的扩展名。不过这些扩展名有时候也是其他类型文件的扩展名,也就是说具有这个扩展名的文件并不一定是X.509证书。也可能只是保存了私钥的文件。
.pem: PEM格式。.key: PEM格式的私钥文件。.pub: PEM格式的公钥文件。.crt: PEM格式的# 公钥证书文件,也可能是DER。.cer: DER格式的# 公钥证书文件,也可能是PEM。.crs: PEM格式的# CSR文件,也可能是DER。
3 Reference {#reference}
3.1 公钥证书 {#public-key-certificate}
Public Key Certificate=公钥证书。
参考资料 : https://en.wikipedia.org/wiki/Public_key_certificate
3.2 CA {#certificate-authority}
CA=Certificate Authority=证书颁发机构。
参考资料 : https://en.wikipedia.org/wiki/Certificate_authority
3.3 DER {#distinguished-encoding-rules}
DER=Distinguished Encoding Rules是# X.690标准中的一种二进制编码格式。
下面的文件是https://google.com所使用的DER编码的二进制公钥证书文件(由于是二进制,故而显示乱码)。
{{}}
参考资料 : https://en.wikipedia.org/wiki/X.690#DER_encoding。
3.4 PEM {#privacy-enhanced-mail}
PEM=Privacy Enhanced Mail=隐私增强邮件。
PEM是一种事实上的标准文件格式,采用base64来编码密钥或证书等其他二进制数据,以便在仅支持ASCII文本的环境中使用二进制数据。PEM在RFC7468中被正式标准化。具体格式如下:
-----BEGIN label 1-----
base64 string...
-----END label 1-----
-----BEGIN label 2-----
base64 string...
-----END label 2-----
其中label 1和label 2可以有1~N个。常用的label有(https://tools.ietf.org/html/rfc7468#section-4):
CERTIFICATE: 公钥证书文件 。CERTIFICATE REQUEST: CSR请求证书文件。PRIVATE KEY: 私钥文件。PUBLIC KEY: 公钥文件。X509 CRL: X509证书吊销列表文件。
下面的文件是上面的google.com.der.cer的PEM编码形式 :
{{}}
参考资料 :
3.5 CSR {#certificate-signing-request}
CSR=Certificate Signing Request=证书签名请求。
-----BEGIN CERTIFICATE REQUEST-----
MIIBWDCCAQcCAQAwTjELMAkGA1UEBhMCU0UxJzAlBgNVBAoTHlNpbW9uIEpvc2Vm
c3NvbiBEYXRha29uc3VsdCBBQjEWMBQGA1UEAxMNam9zZWZzc29uLm9yZzBOMBAG
ByqGSM49AgEGBSuBBAAhAzoABLLPSkuXY0l66MbxVJ3Mot5FCFuqQfn6dTs+9/CM
EOlSwVej77tj56kj9R/j9Q+LfysX8FO9I5p3oGIwYAYJKoZIhvcNAQkOMVMwUTAY
BgNVHREEETAPgg1qb3NlZnNzb24ub3JnMAwGA1UdEwEB/wQCMAAwDwYDVR0PAQH/
BAUDAwegADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDATAKBggqhkjOPQQDAgM/ADA8
AhxBvfhxPFfbBbsE1NoFmCUczOFApEuQVUw3ZP69AhwWXk3dgSUsKnuwL5g/ftAY
dEQc8B8jAcnuOrfU
-----END CERTIFICATE REQUEST-----
参考资料 : https://en.wikipedia.org/wiki/Certificate_signing_request
3.6 CRL {#certificate-revocation-list}
CRL=Certificate Revocation List=证书吊销列表。
-----BEGIN X509 CRL-----
MIIB9DCCAV8CAQEwCwYJKoZIhvcNAQEFMIIBCDEXMBUGA1UEChMOVmVyaVNpZ24s
IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsT
PXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5jb3JwLiBieSBSZWYu
LExJQUIuTFREKGMpOTgxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDEm
MCQGA1UECxMdRGlnaXRhbCBJRCBDbGFzcyAxIC0gTmV0c2NhcGUxGDAWBgNVBAMU
D1NpbW9uIEpvc2Vmc3NvbjEiMCAGCSqGSIb3DQEJARYTc2ltb25Aam9zZWZzc29u
Lm9yZxcNMDYxMjI3MDgwMjM0WhcNMDcwMjA3MDgwMjM1WjAjMCECEC4QNwPfRoWd
elUNpllhhTgXDTA2MTIyNzA4MDIzNFowCwYJKoZIhvcNAQEFA4GBAD0zX+J2hkcc
Nbrq1Dn5IKL8nXLgPGcHv1I/le1MNo9t1ohGQxB5HnFUkRPAY82fR6Epor4aHgVy
b+5y+neKN9Kn2mPF4iiun+a4o26CjJ0pArojCL1p8T0yyi9Xxvyc/ezaZ98HiIyP
c3DGMNR+oUmSjKZ0jIhAYmeLxaPHfQwR
-----END X509 CRL-----
参考资料 : https://en.wikipedia.org/wiki/Certificate_revocation_list
3.7 X.690 {#x690}
X.690是一个ITU-T标准,规定了几种ASN.1编码格式:
BER=Basic Encoding Rules : https://en.wikipedia.org/wiki/X.690#BER_encoding
CER=Canonical Encoding Rules : https://en.wikipedia.org/wiki/X.690#CER_encoding
DER=Distinguished Encoding Rules : https://en.wikipedia.org/wiki/X.690#DER_encoding
参考资料 : https://en.wikipedia.org/wiki/X.690
3.8 ASN.1 {#abstract-syntax-notation-1}
ASN.1=Abstract Syntax Notation 1=抽象标记语法1。
参考资料 : https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One
4 参考
本文首发于:https://linianhui.github.io/information-security/05-x.509/
[信息安全] 05 X.509 公钥证书的格式标准的更多相关文章
- SSL公钥证书传递进行隐匿传输数据
title: 使用X.509公钥证书传递进行隐匿传输数据 date: 2018-02-11 17:47:50 tags: --- 使用X.509公钥证书传递进行隐匿传输数据 看到国外一篇有关于在ssl ...
- X.509 数字证书结构和实例
http://www.cppblog.com/sleepwom/archive/2010/07/08/119746.html 一. X.509数字证书的编码 X.509证书的结构是用ASN1(Abst ...
- openssl数字证书常见格式与协议介绍
原文地址:http://blog.csdn.net/anxuegang/article/details/6157927 证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.K ...
- openssl数字证书常见格式 协议
证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.KEY.CSR.CRT.CRL .OCSP.SCEP等. PEM – Openssl使用 PEM(Privacy Enha ...
- C#RSA算法实现+如何将公钥为XML格式转为PEM格式,给object-C使用
.net中,处于安全的考虑,RSACryptoServiceProvider类,解密时只有同时拥有公钥和私钥才可以.原因是公钥是公开的,会被多人持有.这样的数据传输是不安全的.C#RSA私钥加密,公钥 ...
- EMVTag系列10《发卡行公钥证书》
Ø 90 发卡行公钥(IPK)证书 L: NCA -C(有条件):如果支持SDA,DDA CA认证过的发卡行公钥.用于脱机数据认证 Ø 9F32 发卡行公钥指数 L: 1 or 3 -C( ...
- EMVTag系列8《IC卡公钥证书》
Ø 9F46 IC卡公钥证书 L: NI -C(有条件):如果支持DDA 发卡行认证过的IC 卡公钥 Ø 9F47 IC卡公钥指数 F: b T: 9F47 L: 1 or 3 C:如 ...
- 从PFX文件中获取私钥、公钥证书、公钥
https://blog.csdn.net/ZuoYanYouYan/article/details/77868584 该类具体功能:根据pfx证书得到私钥.根据私钥字节数组获取私钥对象.根据公钥字节 ...
- C# .NET “公钥证书” (.cer .pem)转换为 RSACryptoServiceProvider 对象。导出“公钥”
“公钥证书” .cer 文件是直接可以用X509Certificate2 对象来读取的,但 .cer 文件 不便于存储. “公钥证书” .pem 文件内容如下: -----BEGIN CERTIFIC ...
随机推荐
- Spring MVC系列之模型绑定(SpringBoot)(七)
前言 上一节我们在SpringBoot中启用了Spring MVC最终输出了HelloWorld,本节我们来讲讲Spring MVC中的模型绑定,这个名称来源于.NET或.NET Core,不知是否恰 ...
- js字符数组转化为数字数组
先谈一谈需求,我有一个字符串数组,数组内容是字符类型的数字,需要把字符类型的数字转换为数字类型,找了找资料,发现牛人真是多,把前辈的经验总结一下. 例子 ['1','2','3'] => [1, ...
- 第三篇python用户登录程序实现
需求: 1.通过注册输入用户名和密码 2.能够验证用户名和密码是否正确 3.限制输入一定错误次数后退出程序 4.利用格式化输出方式输出信息 分析: 使用username=input()和passwor ...
- 【PCIE-3】---PCIE设备的枚举扫描(经典好文)
前面两个小节大致总结了下PCIE的基本知识,算是扫盲篇吧.本文主要总结PCIE设备的枚举扫描过程,此部分才是PCIE模块的重点,无论是在BIOS下还是系统驱动下都会用到. 按照国际惯例,先列问题: 1 ...
- eclipse git导入的项目 让修改后的文件带有黑色星标记样式
操作方式:Window——>Preferences——>Team——>Git——>Label Decorations——>Icon Decorations 将 Dirty ...
- 用ModelAndView返回视图结果返回的是对应RequestMapping拼接的路径
今天,遇到一个贼坑的问题,就是我明明可以将逻辑视图名视图存入ModelAndView,结果返回的页面信息是RequestMapping拼接的视图解析路径,最后经过检查多遍代码,发现原来是ModelAn ...
- java常量 数据类型
一.常量 概念:程序运行期间,内容不发生改变的量 1.字符串常量 双引号 2.整数常量 3.浮点数常量 4.字符常量 单引号 一个字符 必须要有一个字符 不能为空 5.布尔常量 true false ...
- 为什么在留言处插入<script>alert(1)</script>不弹框
对于新手来说,往往会在留言地方插入<script>alert(1)</script>来检测是否有存储xss,事实是基本上不会弹框的,为啥? 通过查看源码,可知道<> ...
- RChain的一键形式化验证:关于RCast 33 – LADL话题的讨论摘要
作者/Atticbee 在这一集,Greg和RChain的研究人员Isaac,Christian讨论了TLA(Temporal Logic of Actions)和RChain的LADL(Logic ...
- 代码写不对队-Beta冲刺版本
代码写不对队:Beta冲刺版本 这个作业属于哪个课程 http://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/homework ...