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

67

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

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

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

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

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

  • 8
    Расширения CER и CRT ничего не значат. Различные поставщики PKI используют разные расширения для одной и той же вещи. Если файл является двоичным, то, вероятно, он закодирован в формате ASN.1 / DER. Если файл читается человеком с -----BEGIN CERTIFICATE----- , то его кодируется PEM. Что у вас есть (DER или PEM) и что вам нужно (DER или PEM)?
Теги:
ssl

10 ответов

58
Лучший ответ

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

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

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

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

31

Согласно документации 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
  • 13
    Это должен быть принятый ответ
  • 0
    Будет ли это решить ошибки CERT Ssl, когда за zscaler , бег vagrant на win ( vbox homestead ), устанавливая наши доверенные корневые сертификаты в бродячей коробке? Я scp «d их, чтобы затем использовать ваши преобразования и слинкован их в /etc/ssl/certs и ca-certificates.crt google-recaptcha tls ssl file_get_contents /etc/ssl/certs , а также скопировали содержимое в ca-certificates.crt файла перед reprovisioning, и до сих пор им получать google-recaptcha tls ssl ошибку на file_get_contents на коробка разработчика.
31

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

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

  • 9
    Этот ответ просто неверен. И .CER, и .CRT могут использовать либо кодировку DER, либо PEM (текст). Расширения .pem и .der отражают кодировку, а .cer и .crt - нет. Подробнее
  • 1
    На самом деле, все должно быть наоборот. Но все эти расширения были запутаны в течение длительного времени, поэтому вы не должны полагаться на них.
24

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

  • 0
    Было бы удобно, если бы у вас был источник этого предположения. Я думаю, что люди используют (возможно, неправильно) .cer, .crt, .pem взаимозаменяемо), поэтому наличие источника правды исправило бы неправильные представления.
11

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

openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt
  • 4
    Это не сработало для меня! Я использовал: ** openssl x509 -inform der -in Certificate.cer -out Certificate.pem **
  • 0
    Я получаю это сообщение об ошибке: unable to load PKCS7 object
Показать ещё 3 комментария
10

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

  • 2
    Формат DER работал, когда мой файл cer выглядел как двоичный файл, когда я пытался его отредактировать ... спасибо!
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
  • 0
    Что мне помогло, так это ваш комментарий по кодированию BASE-64. Обычный сертификат, по-видимому, имеет специальную кодировку, а не простой текст для чтения. Благодарю.
2

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

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

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

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

Благодаря @Liibo

0

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

openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt
  • 7
    Не могли бы вы уточнить, что именно делает эта строка и почему именно вы используете эти параметры? Этот ответ довольно короткий и может быть трудным для понимания людьми с меньшим опытом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню