[信息安全] 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 ...
随机推荐
- 为云而生,腾讯云服务器操作系统TencentOS内核正式开源
1月9日,腾讯云宣布将开源其服务器操作系统TencentOS内核.相比业内其它版本Linux 内核,腾讯云 TencentOS 内核在资源调度弹性.容器支持.系统性能及安全等层面极具竞争力,特别适合 ...
- 【转】C#中protected用法详解
https://www.cnblogs.com/wangyt223/archive/2012/08/08/2627801.html 在c#的可访问性级别中,public和private算是最容易理解的 ...
- 侠说java8--Stream流操作学习笔记,都在这里了
前言 首次接触到Stream的时候以为它是和InputStream.OutputStream这样的输入输出流的统称. 流和集合的前世今生 概念的差异 在开发中,我们使用最多的类库之一就是集合.集合是一 ...
- 基于redis有序集合,实现简单的延时任务
基于redis有序集合,实现简单的延时任务 延时任务的场景很多,开发过程中我们经常会遇到,比如说: 1.订单未付款,5分钟后自动取消,这是电商网站非常普遍的需求: 2.用户创建订单不付款,3分钟后自动 ...
- C# WPF 嵌入网页版WebGL油田三维可视化监控
0x00 楔子 最近做的一个项目,是一个油田三维可视化监控的场景编辑和监控的系统,和三维组态有些类似,不过主要用于油田上. 效果如下图所示: 首先当然是上模型,设计人员跟进. 有了相关的模型,使用我们 ...
- python关系(比较)运算符
关系运算符 就是 比较运算符 a.对象的值进行比较 数字间的比较运算符连着使用: 数字与True.False的比较True 表示 1 , False 表示 0 数字与字符串的比较(不能比较) 字符串间 ...
- 1、AutoMapper简单介绍
官网:http://automapper.org/ 源码:https://github.com/AutoMapper/AutoMapper NUGET安装: PM> Install-Packag ...
- 用Kolla在阿里云部署10节点高可用OpenStack
为展现 Kolla 的真正实力,我在阿里云使用 Ansible 自动创建 10 台虚机,部署一套多节点高可用 OpenStack 集群! 前言 上次 Kolla 已经表示了要打 10 个的愿望,这次我 ...
- Kindle Unlimited 上线的最热书单
Kindle 也给出了一份,到现在为止,在 Kindle Unlimited 上线的最热书单: 1.岛上书店2.一个人的朝圣3.自控力4.嫌疑人 X 的献身5.沉默的大多数(王小波文集)6.跟任何人都 ...
- Apache Hudi 0.5.1版本重磅发布
历经大约3个月时间,Apache Hudi 社区终于发布了0.5.1版本,这是Apache Hudi发布的第二个Apache版本,该版本中一些关键点如下 版本升级 将Spark版本从2.1.0升级到2 ...