我有一个用PEM编码生成的授权证书。这是否意味着我可以同时命名为ca.pem
和ca.crt
? .crt
和.pem
可以表示同一意思吗?还是它们实际上是不同的格式?
答案 0 :(得分:1)
对于文件,文件名和扩展名无关紧要。
Windows确实维护了ftype
/ assoc
系统的语义类型(以及该做什么的语义类型)的扩展名。
C:\>assoc .cer
.cer=CERFile
C:\>ftype CERFile
CERFile=%SystemRoot%\system32\rundll32.exe cryptext.dll,CryptExtOpenCER %1
我们还可以问“所有关联是什么?”,然后进行过滤:
C:\>assoc | findstr CERFile
.cer=CERFile
.crt=CERFile
.der=CERFile
因此Windows将.cer
,.crt
和.der
中的任何一个视为相同。
PEM不是默认关联:
C:\>assoc .pem
File association not found for extension .pem
通常,“。pem”表示某些数据是“隐私增强邮件”(PEM)格式,
单词标识数据格式,然后供阅读器使用。例如,对于证书,该证书为“ BEGIN CERTIFICATE”。
证书实际上是用一种称为DER(可分辨编码规则(用于ASN.1数据)的二进制编码)定义的。证书处理器最终需要二进制数据(经过base64编码的二进制数据),但是它们在期望DER还是PEM数据方面可能有所不同。对于许多Windows API而言,证书都可以以任何一种形式出现,并且底层系统内容可以通过嗅探确定数据的格式。
对于.cer
,.crt
或.der
是PEM或DER数据,没有真正的标准或启发式;尽管有些人会期望.der
是DER :)。 (但是很多东西都是DER编码的;不仅仅是证书)
这是否意味着我可以同时命名为ca.pem和ca.crt?
如果按文件名加载内容,则可能没有关系。如果您使用的是OpenSSL命令行工具,那绝对没关系(但是他们希望数据默认情况下是经过PEM编码的。)
如果您使用的是Windows,并且希望双击运行,则需要.cer
或.crt
。