others - Apache SSL - 如何将CER转换为CRT证书?

我的Apache 2服务器需要设置SSL。

我有*.key文件,但是我的证书颁发者提供了一个*.cer文件。

如何将CER转换为CRT格式?

时间:

我认为CRT与CER相同,但扩展表明它是 root 授权机构的公共证书。 它们应该是可以互换的。

如果你在尝试使用它时遇到了特定问题,也许你可以发布有关问题的信息?

我假设你有.cer文件包含PKCS#7-encoded证书数据,并且你想将它转换为PEM-encoded证书数据(典型的.crt或.pem文件),例如,包含PKCS#7-encoded数据的.cer文件如下所示:

-----BEGIN PKCS7-----
MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH
...
POI9n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G
+bKhADEA
-----END PKCS7-----

PEM证书数据如下所示:

-----BEGIN CERTIFICATE-----
MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm
...
nv72c/OV4nlyrvBLPoaS5JFUJvFUG8RfAEY=
-----END CERTIFICATE-----

通过此命令在称为certfile cer的文件上将PKCS 7数据强制转换为PEM格式:

openssl pkcs7 -text -in certfile.cer -print_certs -outform PEM -out certfile.pem

请注意,.cer或.pem文件可能包含一个或多个证书(可能是整个证书链)。

CER是二进制形式的X.509证书,DER编码,
CRT是一个二进制X.509证书,封装在文本(base-64 )编码中。

这不是同一个编码。

如何将.cer文件转换为.crt文件(它们的编码方式不同):


openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt

cer和crt文件应该可以互换,只要将它们导入密钥库即可。

查看.cer文件的内容,在-----BEGIN CERTIFICATE-----行之前和-----END CERTIFICATE-----行之后清除内容,


-----BEGIN CERTIFICATE-----
MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
...
pfDACIDHTrwCk5OefMwArfEkSBo/
-----END CERTIFICATE-----

然后使用keytool将它导入你的密钥文件中。


keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer

根据文档mod_ssl


SSLCertificateFile: 
 Name: SSLCertificateFile
 Description: Server PEM-encoded X.509 certificate file

证书文件应该是PEM-encoded X.509证书文件:


openssl x509 -inform DER -in certificate.cer -out certificate.pem


openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt

...