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

时间:2009-03-13 11:40:01

标签: apache ssl

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

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

在网络的所有文档中,它们都是* .crt证书。

请告诉我,* .cer与* .crt。

相同

如果没有,我如何将CER转换为CRT格式?

11 个答案:

答案 0 :(得分:84)

加密证书的文件扩展名并不像您期望的那样标准化。默认情况下,Windows会将.crt文件双击作为将证书导入Windows根证书存储区的请求,但会将.cer文件视为仅查看证书的请求。因此,它们在这个意义上是不同的,至少,Windows对于双击每种类型的文件时发生的情况有一些固有的不同含义。

但是当你双击它们时,Windows处理它们的方式是两者之间的唯一区别。这两个扩展只表示它包含公共证书。您可以在我见过的任何系统或配置文件中重命名文件或使用一个文件代替另一个文件。在非Windows平台上(甚至在Windows上),人们并不特别注意他们使用哪种扩展,并且可以互换地对待它们,因为只要文件内容正确,它们之间就没有区别。

让事情更加混乱的是,有两种标准方法可以将证书数据存储在一个文件中:一种是“二进制”X.509编码,另一种是“text”base64编码,通常以“{{ 1}}”。它们以不同的方式编码相同的数据。大多数系统都接受这两种格式,但如果需要,可以通过openssl或其他工具将其转换为另一种格式。但是证书文件中的编码实际上与某人给予该文件的扩展名无关。

如果您对特定程序使用特定类型文件时遇到困难有特定问题,最好发一个单独的问题,说明您拥有哪种文件以及您的应用程序期望的内容。

答案 1 :(得分:50)

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

答案 2 :(得分:34)

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

编码不一样。

答案 3 :(得分:32)

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

ng-repeat

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

答案 4 :(得分:28)

我假设您有一个包含PKCS#7编码的证书数据的.cer文件,并且您希望将其转换为PEM编码的证书数据(通常是.crt或.pem文件)。例如,包含PKCS#7编码数据的.cer文件如下所示:

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

PEM证书数据如下所示:

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

有一个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文件可能包含一个或多个证书(可能是整个证书链)。

答案 5 :(得分:14)

如何将.cer文件转换为.crt文件(它们的编码方式不同!)的问题的答案是:

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

答案 6 :(得分:5)

如果您的cer文件具有二进制格式,则必须通过

进行转换
openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt

答案 7 :(得分:5)

我使用命令:

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

答案 8 :(得分:3)

.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

答案 9 :(得分:0)

如果我们需要将 .cer 转换为 .crt,这是一个对我有用的案例,尽管它们在上下文上是相同的

openssl pkcs12 -in identity.p12 -nokeys -out mycertificate.crt

我们应该有一个有效的私钥 (identity.p12) PKCS 12 格式,这是我从创建我的证书的 CA(认证机构)提供的密钥库(.jks 文件)生成的。

答案 10 :(得分:-1)

只做

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