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

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

У меня *.ключевой файл, но мой эмитент сертификата предоставил мне *.файл cer.

во всех документах по сети они предназначены для *.сертификаты ЭЛТ.

пожалуйста, дайте мне знать,*.cer то же, что и *.ЭЛТ.

Если сейчас, как конвертировать CER в формат CRT?

10 ответов


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

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

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

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


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

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

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


Я предполагаю, что у вас есть .файл cer, содержащий PKCS#7-кодированные данные сертификата, и вы хотите преобразовать его в PEM-кодированные данные сертификата (обычно a .ЭЛТ или .файл 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

обратите внимание, что a .cer or .PEM-файл может содержать один или несколько сертификатов (возможно, всю цепочку сертификатов).


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


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

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

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

взгляните на содержимое .файл cer. Стереть что-нибудь перед -----BEGIN CERTIFICATE----- строка и после -----END CERTIFICATE----- линии. Вы останетесь с начальными / конечными строками с кучей закодированных в 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 -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 в dir:

/usr/local/share/ca-certificates/

используйте команду:

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

обновить CA магазин:

sudo update-ca-certificates


просто делать

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