我是SSL / TLS的新手,我想使用OpenSSL工具包。

我不知道.pem.csr代表什么?

我知道.key是私钥,.crt是公钥。

评论

关于serverfault的相关问题:什么是Pem文件?它与其他OpenSSL生成的密钥文件格式有何不同? (感谢vantablack指出来)

同样类似的security.stackexchange.com/questions/73156/…

#1 楼

文件扩展名可以(非常)被视为类型系统。


它仅表示带有页眉和页脚行的base64编码。邮件传统上只处理文本,而不处理大多数密码数据所用的二进制文件,因此需要某种编码才能使内容本身成为邮件消息的一部分(而不是编码附件)。 PEM的内容在页眉和页脚行中进行了详细说明-.pem本身未指定数据类型-就像.pem.xml未指定文件内容一样,它们仅指定了特定的编码;

.html可以是任何种类的密钥,但通常是私钥-OpenSSL可以将通用算法和标准PKCS#8结构中的所有算法(RSA,DSA,EC)的私钥包装起来,但它也支持单独的密钥每种算法的“旧式”结构,尽管文档已将PKCS#8标记为具有近20年的卓越性能,但两者仍被广泛使用。两者都可以以DER(二进制)或PEM编码的形式存储,PEM和PKCS#8 DER都可以通过基于密码的加密来保护密钥,或者不加密;

.key.csr或有时.req用于PKCS#10中定义的证书签名请求;它包含诸如证书颁发机构为请求者创建和签名证书所需的公钥和公用名之类的信息,编码可以是PEM或DER(这是ASN.1指定结构的二进制编码);

.p10.crt仅表示证书,通常是X509v3证书,同样,编码可以是PEM或DER;证书包含公钥,但是包含更多信息(当然,最重要的是证书颁发机构对数据和公钥的签名)。

您还有很多其他扩展也会找到:


.cer.p8是私钥。 PKCS#8定义了一种使用例如密码。但是,通常只使用内部未加密的PKCS#8结构代替(它仅定义密钥的类型)。然后,内部结构可以例如。包含一个用于RSA的PKCS#1格式化的私钥或一个用于椭圆曲线的SEC1。私钥,尽管我不会花钱去验证;对于公钥和参数,SEC1引用X9.62,而rfc5480引用SEC1和X9.62,但是对于私钥,rfc5915仅引用SEC1,而没有引用。我还要说:通常不进行传输,但仍相当常用PEM编码,因为许多使用单独的密钥文件或节(通常通过OpenSSL库)的程序需要或喜欢PEM:Apache httpd,nginx,haproxy,nodejs,python, wget和一些卷曲;还取决于版本和选项的Apache tomcat。但是Java本机使用未加密的PKCS#8 DER。]


.pkcs8.p12是PKCS#12定义的密钥存储,通常受密码保护。它可以包含受信任的证书,私钥及其证书链,还可以包含其他信息,例如秘密密钥和(非常不常见)其他个人信息; .pfx通常是二进制/ DER编码的。 PKCS#12具有许多选项以及具有不同支持的扩展名(即属性OID),因此,不安全地假定每个P12文件都可以在使用(某些)P12文件的任何文件中使用。


.p12是在X.509v3证书规范内定义的证书吊销列表,通常也使用DER编码。


.crl.p7b是一种特殊的PKCS#7 / CMS消息:一种SignedData,它不包含数据且未签名,仅用于方便地处理一组证书和/或CRL。特别是,它通常用作处理将“链”或“捆绑”作为单个定义明确的单元的证书的方法。存在其他类型的PKCS#7 / CMS消息,但使用较少,并且可能具有.p7c.p7之类的扩展名,但在特殊情况下,分离的签名通常为.p7m。另外,S / MIME位于CMS之上:S / MIME消息实际上是以MIME格式包装的CMS消息,因此通常由消息中的MIME类型(也称为媒体类型)而不是文件扩展名标识。 。


请注意,并非每个人都可以使用相同的扩展名-没有正式注册或类似的名称。您最好先使用POSIX .p7s命令行实用程序。

还有一些相对通用的专有格式。


file代表Java Key商店。它可用于存储私钥及其证书链(根CA,中间CA,叶证书或仅一个自签名证书),其他方的证书(通常但不一定是CA)以形成信任库,或同时存储两者。 JKS格式(例如Java .jks API)在技术上是不可知的,可以使用已安装的加密提供程序为其提供KeyStore对象的任何类型的证书,但实际上,唯一实现的CertificateFactory是X.509(或PKIX),并且主要Java中用于密钥库的应用程序-代码签名,S / MIME,XML / SOAP和SSL / TLS-仅使用X.509。 CertificateFactory密钥库使用在弹药列表时代创建的专有(弱)密码进行密码保护,但自2017年以来已弃用,而支持PKCS#12,并提供过渡支持。

[dave_thompson:JSON格式,即JWS / JWE / JWT / JWK,现在用于通信(不是专有),但是IME很少存储在不同的文件中。