Answers:
加密证书的文件扩展名并没有像您期望的那样标准化。Windows默认情况下将双击.crt
文件视为将证书导入Windows根证书存储.cer
的请求,但将文件视为仅查看证书的请求。因此,它们在某种意义上是不同的,因为Windows双击每种类型的文件时会产生一些固有的不同含义。
但是,当您双击它们时Windows处理它们的方式大约是两者之间的唯一区别。这两个扩展名仅表示它包含一个公共证书。您可以重命名证书文件,以在我所看到的任何系统或配置文件中使用一个扩展名代替另一个扩展名。在非Windows平台(甚至Windows)上,人们对使用的扩展名不是特别小心,并且可以将它们互换使用,因为只要文件内容正确,它们之间就没有区别。
使事情更令人困惑的是,有两种标准的方式将证书数据存储在文件中:一种是“二进制” X.509编码,另一种是通常以“ -----BEGIN CERTIFICATE-----
” 开头的“文本” base64编码。这些编码相同的数据,但是方式不同。大多数系统都接受两种格式,但是,如果需要,可以通过openssl或其他工具将其转换为另一种格式。证书文件中的编码实际上与某人给该文件的扩展名无关。
根据文档mod_ssl:
SSLCertificateFile:
Name: SSLCertificateFile
Description: Server PEM-encoded X.509 certificate file
证书文件应为PEM编码的X.509证书文件:
openssl x509 -inform DER -in certificate.cer -out certificate.pem
zscaler
,运行vagrant
在win
(vbox
homestead
),通过安装我们的受信任的根证书到无业游民盒子?我找到了scp
它们,然后使用您的转换并将它们符号链接到其中,并且在重新配置之前/etc/ssl/certs
将其内容复制到了ca-certificates.crt
文件中,并且仍然在dev框上google-recaptcha
tls
ssl
出现错误file_get_contents
。
基本上有两种CER证书编码类型,即DER和Base64。当DER类型返回错误加载证书(asn1编码例程)时,请尝试PEM,它将起作用。
openssl x509 -inform DER -in certificate.cer -out certificate.crt
openssl x509 -inform PEM -in certificate.cer -out certificate.crt
我假设您有一个.cer文件,其中包含PKCS#7编码的证书数据,并且想要将其转换为PEM编码的证书数据(通常是.crt或.pem文件)。例如,一个包含PKCS#7编码数据的.cer文件如下所示:
----- BEGIN PKCS7 ----- MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH ... POI9n9cd2cNgQ4xYDiKWL2KjLB + 6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G + bKhADEA -----结束PKCS7 -----
PEM证书数据如下所示:
----- BEGIN证书----- MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm ... nv72c / OV4nlyrvBLPoaS5JFUJvFUG8RfAEY = -----结束证书-----
有一个OpenSSL命令可以将.cer文件(带有PKCS#7数据)转换为您可能会遇到的PEM数据(BEGIN CERTIFICATE
上面示例中的块)。您可以通过以下命令将PKCS#7数据强制转换为PEM格式,将其称为certfile.cer:
openssl pkcs7 -text -in certfile.cer -print_certs -outform PEM -out certfile.pem
请注意,.cer或.pem文件可能包含一个或多个证书(可能是整个证书链)。
CER是DER编码的二进制形式的X.509证书。
CRT是二进制X.509证书,封装在文本(base-64)编码中。
它不是相同的编码。
如何将.cer文件转换为.crt文件(它们的编码方式不同!)的问题的答案是:
openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt
openssl x509 -inform der -in certificate.cer -out certificate.pem
unable to load PKCS7 object
我使用命令:
openssl x509 -inform PEM -in certificate.cer -out certificate.crt
但是CER是DER编码的二进制形式的X.509证书。CRT是二进制X.509证书,封装在文本(base-64)编码中。
因此,您可能应该使用:
openssl x509 -inform DER -in certificate.cer -out certificate.crt
然后导入您的证书:
将您的CA复制到目录:
/usr/local/share/ca-certificates/
使用命令:
sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
更新CA存储:
sudo update-ca-certificates
如果您的cer文件为二进制格式,则必须通过
openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt
.cer和.crt文件应可互换,只要将它们导入密钥库即可。
看一下.cer文件的内容。删除-----BEGIN CERTIFICATE-----
行前和行后的所有内容-----END CERTIFICATE-----
。您将剩下BEGIN / END行,它们之间有一堆Base64编码的内容。
-----BEGIN CERTIFICATE-----
MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
...
pfDACIDHTrwCk5OefMwArfEkSBo/
-----END CERTIFICATE-----
然后,只需使用keytool将其导入您的密钥文件即可。
keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer
做就是了
openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt
CER
和CRT
扩展意味着什么。不同的PKI供应商对同一事物使用不同的扩展名。如果文件是二进制文件,则可能是ASN.1 / DER编码的。如果该文件是人类可读的-----BEGIN CERTIFICATE-----
,则使用PEM编码。您有什么(DER或PEM),以及什么(DER或PEM)?