一文搞懂X509证书PEM DER CRT CER的区别

本文详细介绍了X.509证书的PEM和DER编码,PEM文件通常以Base64编码包含证书信息,而DER是二进制编码。PEM文件后缀包括.crt、.pem、.cer和.key,可以使用openssl命令进行解码、转换。DER文件常用于Java环境,后缀通常是der或cer。通过openssl工具,可以实现不同格式之间的相互转换,如PEM到DER,或者PEM到PKCS#7、PKCS#12文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.501
        Issuer: C = CN, O = GMSSL, OU = PKI/SM2, CN = MiddleCA for Test
        Validity
            Not Before: Dec 31 16:00:00 2015 GMT
            Not After : Dec 30 16:00:00 2035 GMT
        Subject: C = CN, O = GMSSL, OU = PKI/SM2, CN = demo1.gmssl.cn
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-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:64
                ASN1 OID: SM2
        X509v3 extensions:
            X509v3 Authority Key Identifier: 
                keyid:F9:7F:55:B4:27:94:33:62:A6:56:CA:6F:CC:5D:1A:FF

            X509v3 Subject Alternative Name: 
                DNS:demo1.gmssl.cn
            X509v3 Subject Key Identifier: 
                1F:E8:22:1B:5C:7A:45:94:CE:F4:B2:88:72:2A:10:E3
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: critical
                Key Encipherment, Data Encipherment, Key Agreement
    Signature Algorithm: 1.2.156.10197.1.501
         30: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解码。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值