Apache с SSL - Как конвертировать CER в сертификаты CRT? - PullRequest
97 голосов
/ 13 марта 2009

Мне нужно настроить сервер Apache 2 с SSL.

У меня есть файл * .key, но мой издатель сертификата предоставил мне файл * .cer.

Во всей документации по сети они предназначены для * .crt сертификатов.

Пожалуйста, дайте мне знать, * .cer такой же, как * .crt.

Если нет, как я могу конвертировать CER в формат CRT?

Ответы [ 10 ]

85 голосов
/ 13 марта 2009

Расширения файлов для криптографических сертификатов не так стандартизированы, как вы ожидаете. Windows по умолчанию обрабатывает двойной щелчок на файле .crt как запрос на импорт сертификата в хранилище корневых сертификатов Windows, но обрабатывает файл .cer как запрос только для просмотра сертификата. Таким образом, они различаются в том смысле, что, по крайней мере, Windows имеет какое-то присущее различное значение для того, что происходит, когда вы дважды щелкаете по каждому типу файла.

Но то, как Windows обрабатывает их, когда вы дважды щелкаете по ним, является единственной разницей между ними. Оба расширения просто представляют, что он содержит публичный сертификат. Вы можете переименовать файл или использовать один вместо другого в любой системе или файле конфигурации, которые я видел. А на платформах, отличных от Windows (и даже в Windows), люди не особенно заботятся о том, какое расширение они используют, и обращаются с ними обоими взаимозаменяемо, поскольку между ними нет разницы, если содержимое файла корректно.

Что еще более запутанно, так это то, что существует два стандартных способа хранения данных сертификата в файле: один - «двоичная» кодировка X.509, а другой - «текстовая» кодировка base64, которая обычно начинается с «* 1007». *». Они кодируют одни и те же данные, но по-разному. Большинство систем принимают оба формата, но если вам нужно, вы можете конвертировать один в другой с помощью openssl или других инструментов. Но кодировка в файле сертификата действительно не зависит от того, какое расширение кто-то дал файлу.

Если у вас есть конкретные вопросы о трудностях, связанных с использованием файлов определенного типа с определенной программой, было бы лучше опубликовать отдельный вопрос, описывающий, какой у вас файл и что ожидает ваше приложение.

50 голосов
/ 31 января 2015

Согласно документации 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
33 голосов
/ 16 мая 2016

В основном есть два типа кодировки сертификата CER, DER и Base64. Когда тип DER возвращает сертификат загрузки с ошибкой (процедуры кодирования asn1), попробуйте PEM, и он заработает.

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

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

33 голосов
/ 16 мая 2013

CER - это сертификат X.509 в двоичном виде, закодированный DER .
CRT - это двоичный сертификат X.509, инкапсулированный в текстовую ( base-64 ) кодировку.

Это не та же кодировка.

28 голосов
/ 30 марта 2011

Я предполагаю, что у вас есть файл .cer, содержащий данные сертификата в кодировке PKCS # 7, и вы хотите преобразовать его в данные сертификата в кодировке PEM (обычно это файл .crt или .pem). Например, файл .cer, содержащий данные в формате PKCS # 7, выглядит следующим образом:

-----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 может содержать один или несколько сертификатов (возможно, всю цепочку сертификатов).

14 голосов
/ 17 февраля 2014

Ответ на вопрос, как преобразовать файл .cer в файл .crt (они кодируются по-разному!):

openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt
5 голосов
/ 27 августа 2018

Я использую команду:

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

Но CER - это сертификат X.509 в двоичной форме, кодированный DER. 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

5 голосов
/ 05 мая 2016

Если ваш файл cer имеет двоичный формат, вы должны преобразовать его в

openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt
3 голосов
/ 13 марта 2009

Файлы .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
0 голосов
/ 09 декабря 2014

Просто сделай

openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...