与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