certificate – 什么是Pem文件,它与其他OpenSSL生成的密钥文件格式有何不同?

[ 2021-03-11 16:10:39 | 作者: admin ]
字号: | |
p.s. 复杂不统一的证书命名方式,很多时候都让人困惑。即便base64编码内容相同,正文前后的格式也可能不同,所以无法通用。

Openssl使用PEM(RFC 1421-1424)文档格式。PEM使用BASE64编码。BASE64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码和二进制码转来转去的。

一般.pem的格式如下所示:
----BEGIN CERTIFICATE----
block of base64 encoded data
----END CERTIFICATE----

举个具体例子
-----BEGIN DSA PRIVATE KEY-----
MIIBvAIBAAKBgQDkpLYWORME30eduO01gBMFeb72RNR6xUVcM7YKH427YTZVe8Rw
SK9ONFJgkwSTYVnmCT09+yuxjREvDTJAFz86ybNCT2V/4snWqasmJsg+hjV98df/
SY7wmtsHwINOwt/V+IALeF9dOmToklsKGH2+E1lF+D/Q2vw3Ux9jIy0M5QIVANhf
Pa988I+awtqgdk3/75/aAB+5AoGAJXQrjs5HQmbzJ3032U/qgopfIa0klJJsegcQ
gQnz5XXipsHIT3AqYy8MTQKCczAegYNAp/MwkH/CzUTpVRoMTRo3t8dMcWR0Ybwc
ScqZKEsME0+C0pG1mi7dE7BUSSl4Z8dyJ54G0BR+VssJ7ZZWA1G925J6W2dU1ERr
MYO+CuoCgYEA18aAQbH8Z0K+wxKU49RGayBch5xpxPwTytmy672I15Gb0snlBnLa
oKei6q2SRr9508BnlOw2160lqeTdq5LXcbuCQISf+UFe6olupOIftmZmiSxPS13E
2zrWGZuP8afgqndZhQMTHiB3Z+JLAwUfkTQZop9mRLmkNxTspLXeuNoCFQCXzAAb
qH8gqniQBSIkJ1lOk9YxiQ==
-----END DSA PRIVATE KEY-----



SSL已经存在了足够长的时间,您认为会有就容器格式达成一致意见.你是对的,有.发生的标准太多了.所以这就是我所知道的,我相信其他人也会参与其中.

> .csr – 这是证书签名请求.某些应用程序可以生成这些文件以提交给证书颁发机构实际格式是在RFC 2986中定义的PKCS10.它包括所请求证书的部分/全部关键细节,例如主题,组织,状态,诸如此类,以及要签名的证书的公钥.这些由CA签名并返回证书.返回的证书是公共证书(包括公钥但不包括私钥),它本身可以是几种格式.
> .pem – 在RFC 1421到1424中定义,这是一种容器格式,可能只包含公共证书(例如Apache安装和CA证书文件/ etc / ssl / certs),或者可能包含整个证书链,包括公钥,私钥和根证书.令人困惑的是,它还可以编码CSR(例如,使用here),因为PKCS10格式可以被翻译成PEM.该名称来自Privacy Enhanced Mail (PEM),这是一种安全电子邮件的失败方法,但它使用的容器格式仍然存在,并且是x509 ASN.1密钥的base64转换.
> .key – 这是一个PEM格式的文​​件,只包含特定证书的私钥,只是一个传统名称,而不是标准名称.在Apache安装中,它经常驻留在/ etc / ssl / private中.这些文件的权限非常重要,如果设置错误,某些程序将拒绝加载这些证书.
> .pkcs12 .pfx .p12 – 最初由RSA在Public-Key Cryptography Standards(缩写为PKCS)中定义,“12”变体最初由Microsoft增强,后来提交为RFC 7292.这是一种密码容器格式,包含公共和私有证书对.与.pem文件不同,此容器已完全加密. Openssl可以将其转换为包含公钥和私钥的.pem文件:openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

其他一些格式会不时出现:

> .der – 一种用二进制编码ASN.1语法的方法,.pem文件只是一个Base64编码的.der文件. OpenSSL可以将这些转换为.pem(openssl x509 -inform der -in to-convert.der -out converted.pem). Windows将这些视为证书文件.默认情况下,Windows将证书导出为具有不同扩展名的.DER格式文件.喜欢…
> .cert .cer .crt – 具有不同扩展名的.pem(或很少.der)格式化文件,Windows资源管理器将其识别为证书,但.pem不是.
> .p7b .keystore – 在RFC 2315中定义为PKCS编号7,这是Windows用于证书交换的格式. Java本身就理解这些,并且经常使用.keystore作为扩展.与.pem样式证书不同,此格式具有包含证书路径证书的已定义方式.
> .crl – 证书吊销列表.证书颁发机构将其作为在到期前取消授权证书的方式.您有时可以从CA网站下载它们.

总之,有四种不同的方式来呈现证书及其组件:

> PEM – 由RFC管理,优先使用开源软件.它可以有多种扩展名(.pem,.key,.cer,.cert,更多)
> PKCS7 – Java使用并由Windows支持的开放标准.不包含私钥材料.
> PKCS12 – 后来在RFC中定义的Microsoft私有标准,提供增强的安全性与纯文本PEM格式.这可以包含私钥材料.它优先使用Windows系统,可以通过openssl自由转换为PEM格式.
> DER – PEM的父格式.将它视为base64编码的PEM文件的二进制版本是有用的.在Windows之外并不经常使用.

我希望这有帮助.


来源:http://www.voidcn.com/article/p-bwnviieb-btw.html
[最后修改由 admin, 于 2021-03-11 16:16:42]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2768

这篇日志没有评论。

此日志不可发表评论。