X.509证书有几种常用的文件扩展名,但要注意:其中一些扩展名也有其它用途,就是说具有这个扩展名的文件可能并不是证书,比如说可能只是保存了私钥。
● .pem:(隐私增强型电子邮件),DER编码的证书再进行Base64编码,数据存放于“--- BEGIN CERTIFICATE ---”和“ --- END CERTIFICATE ---”之间
● .cer,.crt,.der:通常采用二进制DER形式,但Base64编码也很常见
● .p7b,.p7c-PKC#7:SignedData结构,没有数据,仅有证书或CRL
● .p12-PKCS#12:可以包含证书(公钥),也可同时包含受密码保护的私钥
● .pfx :PKCS#12的前身(通常用PKCS#12格式,例如IIS产生的PFX文件)
PKCS#7是签名或加密数据的格式标准,官方称之为容器。由于证书是可验真的签名数据,所以可以用SignedData结构表述。.P7C文件是退化的SignedData结构,没有包括签名的数据。
X.509证书包含三个文件:key,csr,crt。
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。
jks(java key store) 是一个容器,java用的存储密钥的容器。可以同时容纳n个公钥或私钥,后缀一般是.jks或者.keystore或.truststore等,千奇百怪。
比较常见的一种格式(共有5种,JKS, JCEKS, PKCS12, BKS,UBER),是JAVA的keytools证书工具支持的证书私钥格式。