X.509是# 公钥证书的格式标准, 广泛用于TLS/SSL安全通信或者其他需要认证的环境中。X.509证书可以由# CA颁发,也可以自签名产生。

1 Overview {#1-overview}

X.509证书中主要含有公钥身份信息签名信息有效性信息等信息。这些信息用于构建一个验证公钥的体系,用来保证客户端得到的公钥正是它期望的公钥。

  1. 公钥 : 非对称密码中的公钥。公钥证书的目的就是为了在互联网上分发公钥。
  2. 身份信息 : 公钥对应的私钥持有者的信息,域名以及用途等。
  3. 签名信息 : 对公钥进行签名的信息,提供公钥的验证链。可以是CA的签名或者是自签名,不同之处在于CA证书的根证书大都内置于操作系统或者浏览器中,而自签名证书的公钥验证链则需要自己维护(手动导入到操作系统中或者再验证流程中单独提供自签名的根证书)。
  4. 有效性信息:证书的有效时间区间,以及# CRL等相关信息。

X.509证书的标准规范RFC5280中详细描述了证书的# 1.1 Encoding Format和# 1.2 Structure。

1.1 Encoding Format {#1-1-encoding-format}

  1. # DER格式 : 二进制格式。
  2. # PEM格式 : ASCII文本格式。在DER格式或者其他二进制数据的基础上,使用base64编码为ASCII文本,以便于在仅支持ASCII的环境中使用二进制的DER编码的数据

1.2 Structure {#1-2-structure}

一个具体的X.509 v3数字证书结构大致如下 :

CertificateVersion NumberSerial NumberSignature Algorithm IDIssuer NameValidity periodNot BeforeNot AfterSubject nameSubject Public Key InfoPublic Key AlgorithmSubject Public KeyIssuer Unique Identifier (optional)Subject Unique Identifier (optional)Extensions (optional)
...
Certificate Signature Algorithm
Certificate Signature

2 File Extension {#2-file-extension}

X.509有很多种常用的扩展名。不过这些扩展名有时候也是其他类型文件的扩展名,也就是说具有这个扩展名的文件并不一定是X.509证书。也可能只是保存了私钥的文件。

  1. .pem : PEM格式。
  2. .key : PEM格式的私钥文件。
  3. .pub : PEM格式的公钥文件。
  4. .crt : PEM格式的# 公钥证书文件,也可能是DER。
  5. .cer : DER格式的# 公钥证书文件,也可能是PEM。
  6. .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 1label 2可以有1~N个。常用的label有(https://tools.ietf.org/html/rfc7468#section-4):

  1. CERTIFICATE : 公钥证书文件 。
  2. CERTIFICATE REQUEST : CSR请求证书文件。
  3. PRIVATE KEY : 私钥文件。
  4. PUBLIC KEY : 公钥文件。
  5. X509 CRL : X509证书吊销列表文件。

下面的文件是上面的google.com.der.cer的PEM编码形式 :
{{}}

参考资料 :

  1. https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail
  2. https://tools.ietf.org/html/rfc7468

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

[信息安全] 05 X.509 公钥证书的格式标准相关推荐

  1. PKI/CA (5)X.509公钥证书

    1. 定义 1.1. 公钥证书 既是对某个公钥加上一个签名,形式为:KeyPub + ca_Info + enc_ca_Hash+ addInfo KeyPub 欲签名的公钥 ca_Info身份信息 ...

  2. 数字证书X509格式标准简介

    证书的标准规范,其中使用最广泛的是由ITU(International TelecommumcationUnion,国际电信联盟)和ISO(IntemationalOrganizationforSta ...

  3. 密钥格式标准PKCS,X.509

    ASN.1 Abstract Syntax Notation One,抽象语法标记 ASN.1是一种 ISO/ITU-T 标准,用于描述对数据进行表示.编码.传输和解码.它提供了一整套正规的格式用于描 ...

  4. 【Http】加解密 生成 X.509格式,DER编码,后缀名.cer 加密公钥证书

    1. 背景 因为遇到了问题:参考 [Https]keytool 导入证书到 本地 Exception: Input not an X.509 certificate 然后就想查查这个怎么解决搜到了如下 ...

  5. RFC2459 Internet X.509 公钥基础设施:证书和CRL简介

    组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook ...

  6. rfc2459:Internet X.509 公钥基础设施:证书和 CRL 简介

    组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook ...

  7. pem格式证书编码 x509_公钥证书编码解读

    一.文件编码 PEM (Privacy Enhancement Message),定义见 结构组成 == {header} body {tail} 示例 -----BEGIN PUBLIC KEY-- ...

  8. android 使用crt/cer/pem格式的公钥证书

    问题:android在网络各种教程里面,都是只有BKS的格式,但是一般后端给我们的公钥证书都是crt/cer/pem格式的,这种时候,常用的做法就是用keytools转换成bks格式.    个人感觉 ...

  9. X.509 数字证书结构和实例

    http://www.cppblog.com/sleepwom/archive/2010/07/08/119746.html 一. X.509数字证书的编码 X.509证书的结构是用ASN1(Abst ...

  10. x.509数字证书编码详解

    转自:http://blog.sina.com.cn/s/blog_49b531af0102eahs.html x.509数字证书编码详解 一. X.509数字证书的编码 X.509证书的结构是用AS ...

最新文章

  1. python的切片和索引是什么_NumPy 切片和索引
  2. linux 到我的电脑的命令,Linux你都是如何背命令的 -电脑资料
  3. linux下VNC配置详解
  4. 1.25亿用户以后,Netflix总结的系统高可用经验
  5. 注解不自动导包_玩转SpringBoot2.X:SpringBoot自动配置原理大揭秘
  6. SAP OData batch request的并行处理实现原理
  7. OpenCV--cvThreshold() 阈值化【转载】
  8. 题目264-国王的魔镜
  9. 北大计算机专业毕业论文,北京大学毕业论文格式范本
  10. 如何生成网站地图(Sitemap)
  11. 在ubuntu18.04系统上使用ROS跑ORB-SLAM3时遇到的问题总结
  12. 拒绝从入门到入土:初识C语言
  13. Android修行手册 - ConstraintLayout示例
  14. Android手机听筒和扬声器切换
  15. 【PHPWord】PHPOffice 套件之PHPWord快速入门
  16. 作业:自行录制轻音、浊音、爆破音并使用Audacity分析其时域和频域的特性
  17. 一年中的某周转换成当前周星期一和星期日的日期
  18. 整合支付-alipay
  19. BeanDefinition
  20. excel中右键单元格没有显示菜单选项

热门文章

  1. EXCEL 分组取前十的数据
  2. 项目市场调查报告的撰写要则
  3. c语言写股票交易软件,写股票软件
  4. 解决spring-data-jpa 级联添加时,主表放弃对外键维护时外键字段为null
  5. IT30:30岁IT男未来10年规划第1篇(2009-2020)
  6. Android:获取当前的锁屏壁纸或桌面壁纸
  7. and no properties discovered to create BeanSerializer 问题解决
  8. AD软件解决 Unknown Pin 和Failed to add class member 问题
  9. VC++两万字总结Windows系统中的Layered分层窗口技术(附源码)
  10. stm32内部基准电压