与SSL的Apache – 如何将CER转换为CRT证书?

我需要使用SSL来设置Apache 2服务器。

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

在networking的所有文件中,它们都是* .crt证书。

请让我知道,* .cer与* .crt相同。

如果现在,我如何将CER转换成CRT格式?

密码证书的文件扩展名并不像您预期​​的那样标准化。 Windows默认将双击.crt文件作为将证书导入Windows根证书存储区的请求,但将.cer文件作为仅查看证书的请求处理。 因此,至less在这种意义上,它们是不同的,即当你双击每种types的文件时,Windows会有一些固有的不同含义。

但是当你双击它们时,Windows处理它们的方式是两者之间的唯一区别。 这两个扩展只是表示它包含一个公共证书。 你可以重新命名一个文件,或者在我看到的任何系统或configuration文件中使用一个文件。 在非Windows平台上(甚至在Windows上),人们对于使用哪种扩展并不特别小心,并且可以互换处理,因为只要文件内容正确,它们之间没有任何区别。

让事情更加混乱的是有两种标准的方式来存储证书数据:一个是“二进制”X.509编码,另一个是“文本”base64编码,通常以“ -----BEGIN CERTIFICATE----- “。 这些编码相同的数据,但以不同的方式。 大多数系统接受这两种格式,但如果你需要,你可以通过openssl或其他工具转换成另一种。 但是,证书文件中的编码实际上与某人给文件的扩展名无关。

如果您对特定程序使用特定types的文件有困难,最好发表一个单独的问题来描述您拥有的文件types以及您的应用程序所期待的内容。

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

这是不一样的编码。

根据文档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 

我假设你有一个包含PKCS#7编码证书数据的.cer文件,并且你想把它转换成PEM编码的证书数据(通常是.crt或.pem文件)。 例如,包含PKCS#7编码数据的.cer文件如下所示:

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

PEM证书数据如下所示:

 ----- BEGIN CERTIFICATE -----
 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文件转换为.crt文件(编码方式不同)的问题的答案是:

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

基本上有两种CER证书编码types,DER和Base64。 当typesDER返回错误加载证书(asn1编码例程)时,请尝试PEM,它应该工作。

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

openssl x509 -inform PEM -in certificate.cer -out 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 

如果您的cer文件是二进制格式,您必须将其转换

 openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt 

做就是了

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