http证书相关的文件格式、编码、概念比较偏多。这里对文件的各种文件后缀和格式做了统一的整理和解释说明
我在国密实验室申请下载了一个证书,解压后如下图,起初我是比较懵的,各种的文件让我一头雾水。下面我们将讲解一个各种文件格式后缀。
结论
.pem
文件一种可阅读格式的文件(文本文件),文件内容可能代表的是证书、可能代表私钥等
.oca.pem
: (中间)证书文件
.rca.pem
:(根部)证书文件
.pfx
: 一种归档文件,可以同时存储证书、私钥等内容,就比如上面的both.pfx
其实就是其他所有文件的总和。
.cer
:二进制格式的证书文件
crt.pem
: PEM格式的证书文件,文本文件可阅读
.key
: 二进制密钥文件,上图为私钥文件
.key.pem
:PEM格式的密钥文件,上图中对应的文件为pkcs
#1格式的PEM私钥文件
.key.p8
:PEM格式的私钥文件,上图中对应的文件为pkcs
#8格式的PEM私钥文件
区分上面两种格式的私钥文件很简单。
如果PEM格式指明是算法的私钥,那么就是pkcs
#1格式,比如下面
-----BEGIN RSA PRIVATE KEY-----
....
-----END RSA PRIVATE KEY-----
如果没有指明那就是pkcs
#8格式,比如下面的
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
因为国密是双证书体系,一个终端需要两份证书,一封是签名证书
,一封是加密证书
,所以在图片里面出现了两份终端证书
enc
代表加密相关的,sig
代表签名相关的。
比如上面的enc.key
代表加密证书对应的私钥文件,enc.cer
就是加密证书。
还有一点需要注意,文件名字由人而定,叫什么都不一定,我们就是以上图文件为例来说明我们证书相关的文件有哪些。
ASN.1
全称为 Abstract Syntax Notation One (ASN.1) ,抽象语言,可用来描述数据结构,多用于描述加密方面的数据结构。这种ASN1描述的数据结构可以序列化和反序列化,进而来实现跨平台的传输。
ASN.1描述数据结构对于人来说是有可阅读性的,可以编码成二进制文件,对于机器来说也是可以读取的。
Foo
协议描述例子:
FooProtocol DEFINITIONS ::= BEGIN
FooQuestion ::= SEQUENCE {
trackingNumber INTEGER,
question IA5String
}
FooAnswer ::= SEQUENCE {
questionNumber INTEGER,
answer BOOLEAN
}
END
ANS.1可以编码成二进制数据, 有多种编码规则 BER
(Basic Encoding Rules) 、DER
(Distinguished Encoding Rules)、CER(Canonical Encoding Rules)等
PEM
PEM 全称为 Privacy-Enhanced Mail ,是一种用于密码学相关的文件的格式。
由于许多密码学相关的标准都是由 ASN.1 定义数据结构,然后用 Distinguished Encoding Rules (DER) 去序列化这些结构,序列的结果为二进制文件,比如证书、密钥等。纯二进制文件不易在网络中传输,在很多情况下也不套容易展示出来。一般我们通过Base64 或者HEX来编码二进制文件。PEM就使用了Base64编码了二进制文件。
PEM是把二进制数据通过Base64进行编码,然后再头部添加header -----BEGIN XXX-----
尾部添加footer -----END XXX-----
。 header 和footer之间的数据就是被Base64编码的二进制数据。XXX
是要编码的数据内容类型,可以是 CERTIFICATE
、CERTIFICATE REQUEST
、 PRIVATE KEY
、X509 CRL
。
例:
-----BEGIN CERTIFICATE-----
MIIBzTCCAXCgAwIBAgIGAXKnMKNyMAwGCCqBHM9VAYN1BQAwSTELMAkGA1UEBhMC
Q04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kvU00yMRgwFgYDVQQDEw9S
b290Q0EgZm9yIFRlc3QwIhgPMjAxNTEyMzExNjAwMDBaGA8yMDM1MTIzMDE2MDAw
MFowSTELMAkGA1UEBhMCQ04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kv
U00yMRgwFgYDVQQDEw9Sb290Q0EgZm9yIFRlc3QwWTATBgcqhkjOPQIBBggqgRzP
VQGCLQNCAATj+apYlL+ddWXZ7+mFZXZJGbcJFXUN+Fszz6humeyWZP4qEEr2N0+a
Zdwo/21ft232yo0jPLzdscKB261zSQXSoz4wPDAZBgNVHQ4EEgQQnGnsD7oaOcWv
6CTrspwSBDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIAxjAMBggqgRzP
VQGDdQUAA0kAMEYCIQCEnW5BlQh0vmsOLxSoXYc/7zs++wWyFc1tnBHENR4ElwIh
AI1Lwu6in1ruflZhzseWulXwcITf3bm/Y5X1g1XFWQUH
-----END CERTIFICATE-----
一般PEM编码的数据会出现在 后缀为.pem
的文件中。也可能出现在其他后缀文件中,比如.cer
(PEM编码的证书数据,有时候也不用PEM编码,直接就是二进制数据)、.crt
(PEM编码的证书数据)文件。
还有一点就是,可以存放不同的内容类型的内容到同一个PEM文件。如下
a.pem
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
我们可以通过PEM的头部和尾部去推到文件内容是什么,但是如果碰见这种文件后缀.key.pem
、.crt.pem
、.cer.pem
。一般文件内容就很容易推导出了
.key.pem
密钥PEM编码数据。 crt.pem
:证书的PEM编码数据 。 .cer.pem
:证书的PEM编码数据。另外pem
文件直接打开看header就可以知道它存储的是什么。
.pfx
介绍
个人认为pfx
文件不是证书,pfx
是一种PKCS#12
归档文件格式的一种后缀,PKCS #12文件格式的后缀为 :.p12
或者 .pfx
PKCS
的意思为 Public-Key Cryptography Standards
,也就是公钥加密标准(非对称加密标准) 。 PKCS#12
为PKCS 的12号标准,它的名字为个人信息交换语法标准
(Personal Information Exchange Syntax Standard
)
PKCS#12
规定了 一种归档文件格式,PKCS #12
格式文件的前身是微软的PFX
格式文件。PKCS #12
格式文件可以存储证书(X509证书),私钥、废弃证书列表(CRL)、和一些可以自定义的信息(由实现者决定)。此文件可以被加密或者签名的,要想读取此文件可能需要解密。由此可见大家可以把此文件想象成一个存储数据的数据库,存储证书、私钥、CRL、自定义信息的数据,有特定的结构格式。
应用
它通常被存储一个私钥和这个私钥相关的证书或者证书链
java9以后就会PCKS# 12 作为默认的keystore
格式。
.p12
同上
.p8
.p8是 PKCS #8的文件格式后缀,PKCS #8格式的名字为私钥信息语法标准(Private-Key Information Syntax Standard)。
存储的私钥可以被加密,支持多密码加密。存储的内容是PEM 编码的格式。下图的文件其实就是PKCS #8
格式的私钥PEM文件
-----BEGIN PRIVATE KEY-----
MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAq7BFUpkGp3+LQmlQ
.....
PkaxlEECIQCNymjsoI7GldtujVnr1qT+3yedLfHK
srDVjIT3LsvTqw==
-----END PRIVATE KEY-----
还有一些私钥文件指明了具体的算法,比如下面。EC
代表数据Elliptic Curve
,就是椭圆曲线的意思。 指明算法的其实就是 PKCS #1格式的私钥
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIOUO8Ie5zWSXVvUMZPea9YuMNmPYLwbWYW.....
fOAH5brAl/HgLBhyQMwG7jMwNRN7CO+fwA==
-----END EC PRIVATE KEY-----
还有以 -----BEGIN RSA PRIVATE KEY-----
开头的文件,这就代表的是私钥类型是RSA的私钥。如果只是以-----BEGIN PRIVATE KEY-----
开头的话,私钥类型就包含在数据里面。
.cer
存储X.509证书的文件,文件内容可以是 ASN.1- DER编码的二进制数据 也可以是ASN.1- DER编码的二进制数据再被PEM编码的数据。
.crt
存储X.509证书的文件,文件内容是ASN.1- DER编码的二进制数据然后再被PEM编码的数据。
X.509
书写中…文章来源:https://www.toymoban.com/news/detail-404100.html
参考
百科文章来源地址https://www.toymoban.com/news/detail-404100.html
到了这里,关于搞懂 PEM、ANS、PFX、P12、p8、CER、X509 等证书相关文件格式 后缀的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!