Apache с SSL - Как конвертировать сертификаты CER в CRT?

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

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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

Согласно документации 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

Ответ 4

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

Ответ 5

Ответ на вопрос, как преобразовать файл .cer в файл .crt(они закодированы иначе!):

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

Ответ 6

В основном существуют два типа кодирования сертификата 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

Ответ 7

Файл .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

Ответ 8

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

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

Ответ 9

Эта команда помогает мне:

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

Благодаря @Liibo

Ответ 10

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

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