Apache с SSL - как конвертировать сертификаты 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