X.509 证书文件的不同后缀PEM DER CRT CER其实对应两种编码方案

  • Base64编码
  • ASN1.1 DER编码

1  PEM( “Privacy Enhanced Mail”)是最常用的X.509 证书文件后缀

PEM 文件是一个文本文件,采用了Base64 ASCII 编码;所以打开文件口看到(e.g. -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----).

一个PEM文件可以包含公钥证书/私钥/或者能形成证书链的多个证书

-----BEGIN CERTIFICATE-----MIICADCCAaOgAwIBAgIGAXKoPs9DMAwGCCqBHM9VAYN1BQAwSzELMAkGA1UEBhMCQ04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kvU00yMRowGAYDVQQDExFN........省略

-----END CERTIFICATE-----

PEM文件的后缀可以是:.crt.pem.cer, and .key

使用openSSL命令可以解码base64,显示可读的明文:

openssl x509 -in CERTIFICATE.pem -text -noout 

例子输出:

Certificate:Data:Version: 3 (0x2)Serial Number: 1591960588099 (0x172a83ecf43)Signature Algorithm: 1.2.156.10197.1.501Issuer: C = CN, O = GMSSL, OU = PKI/SM2, CN = MiddleCA for TestValidityNot Before: Dec 31 16:00:00 2015 GMTNot After : Dec 30 16:00:00 2035 GMTSubject: C = CN, O = GMSSL, OU = PKI/SM2, CN = demo1.gmssl.cnSubject Public Key Info:Public Key Algorithm: id-ecPublicKeyPublic-Key: (256 bit)pub:04:de:8a:c0:d2:d5:91:6e:17:8c:9c:ef:02:92:94:40:90:57:2f:f4:4e:a1:94:21:fb:50:19:98:81:07:14:19:c1:0d:7b:5c:05:10:44:8c:d6:ca:ad:c6:73:44:18:2d:14:99:2f:96:70:1f:e1:c2:32:b8:4b:2c:50:65:88:44:64ASN1 OID: SM2X509v3 extensions:X509v3 Authority Key Identifier: keyid:F9:7F:55:B4:27:94:33:62:A6:56:CA:6F:CC:5D:1A:FFX509v3 Subject Alternative Name: DNS:demo1.gmssl.cnX509v3 Subject Key Identifier: 1F:E8:22:1B:5C:7A:45:94:CE:F4:B2:88:72:2A:10:E3X509v3 Basic Constraints: CA:FALSEX509v3 Key Usage: criticalKey Encipherment, Data Encipherment, Key AgreementSignature Algorithm: 1.2.156.10197.1.50130:46:02:21:00:b5:ee:4b:37:56:f9:01:c9:f4:84:91:04:17:1d:d5:51:f1:76:01:a6:a8:8c:14:80:3d:f2:c2:ea:7f:ed:fe:38:02:21:00:8a:69:ed:84:2c:6c:42:4d:8d:5a:fc:b8:cd:c4:7e:8e:80:31:60:af:7b:a7:03:48:39:4e:b1:d5:43:72:a0:fb

也可以将PEM文件转换为DER文件:

openssl x509 -outform der -in CERTIFICATE.pem -out CERTIFICATE.der

也可以将PEM文件转为 PKCS#7文件,后缀为p7b,

  • PKCS#7文件是含有多个证书,形成证书链。
  • -certfile MORE.pem用来指定链接的 ntermediate 或 root 证书;
  • KCS#7文件不含私钥。
  • PKCS#7文件通常用于Windows and Java server contexts
openssl crl2pkcs7 -nocrl -certfile CERTIFICATE.pem -certfile MORE.pem -out CERTIFICATE.p7b

也可以将PEM文件转换为PKCS#12文件

  • PKCS#12文件是含有多个证书,形成证书链
  • PKCS#12文件含有私钥
  • 后缀为.p12或者 pfx
  • -inkey PRIVATEKEY.key 用来增加私钥
  • -certfile MORE.pem用来指定链接的 ntermediate 或 root 证书;
  • 运行命令过程中会提示设置password来保护PKCS#12文件
openssl pkcs12 -export -out CERTIFICATE.pfx -inkey PRIVATEKEY.key -in CERTIFICATE.crt -certfile MORE.crt

二 DER(Distinguished Encoding Rules)

DER 文件是公钥证书或者私钥通过DER编码以后生成的二进制文件;

  • 常用于Java contexts
  • DER文件通常后缀为der或cer

3082 07fd 3082 05e5 a003 0201 0202 1068
1604 dff3 34f1 71d8 0a73 5599 c141 7230
0d06 092a 8648 86f7 0d01 010b 0500 3072
310b 3009 0603 5504 0613 0255 5331 0e30
0c06 0355 0408 0c05 5465 7861 7331 1030
0e06 0355 0407 0c07 486f 7573 746f 6e31
1130 0f06 0355 040a 0c08 5353 4c20 436f
7270 312e 302c 0603 5504 030c 2553 534c
2e63 6f6d 2045 5620 5353 4c20 496e 7465
726d 6564 6961 7465 2043 4120 5253 4120

可以通过openssl命令来显示可读格式:

openssl x509 -inform der -in CERTIFICATE.der -text -noout

也可以将DER文件转换为PEM

openssl x509 -inform der -in CERTIFICATE.der -out CERTIFICATE.pem

总结:

其实证书或者私钥,都是先根据规范给ASN.1描述,然后进行DER编码,生成二进制文件(DER),然后对二进制文件再Base64编码,即可以生成ASCII码文件(PEM)。

所以DER到PEM转换,其实就是Base64编码,反之,则是Base64解码。

一文搞懂X509证书PEM DER CRT CER的区别相关推荐

  1. [笔记] 如何从不同扩展名的数字证书中提取明文信息? *.pem *.der *.crt *.cer *.key之间的区别是什么?...

    副标题:PEM, DER, CRT, CER, KEY, CSR, PFX/P12 等文件格式讲解 本文整理自网络,相关内容版权归原作者所有, (如有雷同绝非巧合) 作者博客:http://www.c ...

  2. 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)

    转自:http://www.cnblogs.com/guogangj/p/4118605.html 之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像 ...

  3. 证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12)

    之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂 ...

  4. 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)【CSR文件 和 PEM 文件什么区别】

    之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂 ...

  5. 关于PEM, DER, CRT, CER,KEY等各类证书与密钥文件后缀的解释

    文章目录 1. PEM文件 2. DER文件 PEM与DER的相互转换 3. 各种密钥证书文件解释 3.1 [ .csr ] 3.2 [ .key ] 3.3 [ .crt ] [ .cert ] [ ...

  6. 一文搞懂 Promise、Genarator、 Async 三者的区别和联系

    非985/211大学毕业,软件工程专业,前端,坐标:北京 工作三年多,第一家人数 30 多人的创业公司,1 年多. 第二家属于前端技术不错的公司,2 年多. 01 我是一个喜欢在技术领域"折 ...

  7. 服务器千兆网卡接百兆交换机不通_一文搞懂监控工程中百兆交换机和千兆交换机的区别在哪?...

    安防监控系统工程现在都是用的网络摄像机,那么就肯定会经常和网络设备--交换机打交道,很多人在做监控方案的时候犯难,多少台摄像机该选用百兆交换机还是千兆交换机呢?关于这个问题除了需要掌握理论知识还是结合 ...

  8. 一文搞懂 Service Mesh 和 API Gateway 关系和区别

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 关于Service Mesh和API Gateway之间的关系,这个问题过去两年间经常被问起,社区也有不少文章和资 ...

  9. 一文搞懂VOS费率前缀、地区前缀的区别和使用

    登录VOS3000客户端 进入费率管理 "VOS费率前缀"和"地区前缀"的主要区别如下:  VOS费率前缀:VOS(Voice Over Service)费率前 ...

  10. 一文搞懂 Traefik2.1 的使用

    原文链接:一文搞懂 Traefik2.1 的使用 一文搞懂 Traefik2.1 的使用 核心概念 安装 ACME 中间件 灰度发布 流量复制 TCP 简单 TCP 服务 带 TLS 证书的 TCP ...

最新文章

  1. python/pandas数据分析(十五)-聚合与分组运算实例
  2. 【转】gcc 编译使用动态链接库和静态链接库
  3. 【Flask】项目中使用请求钩子的妙处有那些?
  4. centos 7上ambari安装试用
  5. .net中如何发送HTTP请求网络资源
  6. 大公司里怎样开发和部署前端代码
  7. JavaScript 真值和假值
  8. Web Hacking 101 中文版 十三、子域劫持
  9. id长度 雪花算法_分布式系统中唯一ID算法之雪花算法
  10. Kafka ACL使用实战
  11. java视频生成缩略图_Java中使用ffmpeg生成视频缩略图
  12. zyf sql语句
  13. centos7 防火墙
  14. Java写入磁盘阵列_磁盘阵列方案
  15. unity旗帜飘动shader
  16. 极致体验,解密微信背后的音视频通话技术
  17. 高强度间歇训练(HIIT)
  18. bootstrap-table+bootstrap+font-awesome+layui+jquery+popper+sweetalert2+layer综合应用+图+代码
  19. 利用php的GD库封装的海报demo
  20. latext配置 vscode_VSCode配置LaTeX编辑器

热门文章

  1. HEW3工程链接错误(L2330 (E) Relocation size overflow )及解决
  2. 宝塔+云锁nginx自编译web防护 防御CC效果极佳
  3. forge不能用java打开_我玩我的世界把java更新了以后,就再也进不了加了forge的版本了,启动器,游戏,forge都重...
  4. 用完加速器国内的网址打不开了?
  5. 微软商店上架WindowsOffice破解工具,并获5星好评?
  6. 双11,一大波建站优惠,你还不来网站建设吗?
  7. 前端大作业之淘宝页面设计
  8. 沃尔玛承压,TJX、唯品会稳健,折扣零售是行业“抗压”能手?
  9. AHU HuffmanTree编码数据结构实验
  10. AHU-2017校赛现场赛 B 下一个幸运数