Do I need to convert .CER to .CRT for Apache SSL certificates? If so, how?
我需要使用SSL设置Apache 2服务器。
我有我的* .key文件,但是我在网上找到了所有文档,指定了* .crt文件,而我的CA仅向我提供了* .cer文件。
* .cer文件与* .crt是否相同? 如果没有,如何将CER转换为CRT格式?
加密证书的文件扩展名并没有像您期望的那样标准化。 Windows默认情况下将双击
但是,当您双击它们时Windows处理它们的方式大约是两者之间的唯一区别。这两个扩展名仅表示它包含一个公共证书。您可以重命名证书文件,以在我所看到的任何系统或配置文件中使用一个扩展名代替另一个扩展名。在非Windows平台(甚至Windows)上,人们对使用的扩展名不是特别小心,并且可以将它们互换使用,因为只要文件内容正确,它们之间就没有区别。
使事情更加混乱的是,有两种标准的方法将证书数据存储在文件中:一种是"二进制" X.509编码,另一种是通常以"
根据文档mod_ssl:
1 2 3 | SSLCertificateFile: Name: SSLCertificateFile Description: Server PEM-encoded X.509 certificate file |
证书文件应为PEM编码的X.509证书文件:
1 | openssl x509 -inform DER -in certificate.cer -out certificate.pem |
基本上有两种CER证书编码类型,即DER和Base64。当DER类型返回错误加载证书(asn1编码例程)时,请尝试PEM,它应能工作。
我假设您有一个.cer文件,其中包含PKCS#7编码的证书数据,并且想要将其转换为PEM编码的证书数据(通常是.crt或.pem文件)。例如,一个包含PKCS#7编码数据的.cer文件如下所示:
1 2 3 4 5 6 | -----BEGIN PKCS7----- MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH ... POI9n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G +bKhADEA -----END PKCS7----- |
PEM证书数据如下所示:
1 2 3 4 5 | -----BEGIN CERTIFICATE----- MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm ... nv72c/OV4nlyrvBLPoaS5JFUJvFUG8RfAEY= -----END CERTIFICATE----- |
有一个OpenSSL命令可以将.cer文件(带有PKCS#7数据)转换为您可能会遇到的PEM数据(上例中的
请注意,.cer或.pem文件可能包含一个或多个证书(可能是整个证书链)。
CER是DER编码的二进制形式的X.509证书。
CRT是二进制X.509证书,封装在文本(基本64)编码中。
它不是相同的编码。
如何将.cer文件转换为.crt文件(它们的编码方式不同!)的问题的答案是:
1 | openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt |
我使用命令:
但是CER是DER编码的二进制形式的X.509证书。
CRT是二进制X.509证书,封装在文本(基本64)编码中。
因此,您可能应该使用:
然后导入您的证书:
将您的CA复制到目录:
使用命令:
更新CA存储:
如果您的cer文件为二进制格式,则必须通过
1 | openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt |
.cer和.crt文件应该可以互换,只要将它们导入密钥库即可。
看一下.cer文件的内容。擦除
1 2 3 4 5 | -----BEGIN CERTIFICATE----- MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD ... pfDACIDHTrwCk5OefMwArfEkSBo/ -----END CERTIFICATE----- |
然后,只需使用keytool将其导入到您的密钥文件中即可。
1 | keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer |
做就是了
1 | openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt |