Вопрос: Что такое Pem-файл и как он отличается от других форматов файлов Open Generated Key?


Я отвечаю за поддержку двух серверов Debian. Каждый раз, когда я должен что-либо делать с сертификатами безопасности, я Google для учебных пособий и отбивался, пока он, наконец, не работает.

Однако в моих поисках я часто сталкиваюсь с разными форматами файлов (.key, .csr, .pem), но я никогда не мог найти хорошее объяснение того, что представляет собой цель каждого файла.

Мне было интересно, могут ли хорошие люди здесь, в ServerFault, дать некоторые разъяснения по этому вопросу?


1127
2018-05-19 02:24


Источник


stackoverflow.com/a/45886431/1599699 - Andrew


Ответы:


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

  • .csr - Это запрос на подпись сертификата. Некоторые приложения могут генерировать их для отправки в органы сертификации. Фактический формат - PKCS10, который определен в RFC 2986, Он включает в себя некоторые / все ключевые данные запрашиваемого сертификата, такие как субъект, организация, состояние, еще что-то, а также открытый ключ сертификата для получения подписки. Они получают подписанный CA и сертификат возвращается. Возвращенный сертификат является общедоступным сертификат (который включает открытый ключ, но не закрытый ключ), который сам может быть в нескольких форматах.
  • .pem - Определено в RFC 1421 через 1424, это формат контейнера, который может включать только открытый сертификат (например, с установками Apache и файлы сертификатов CA). /etc/ssl/certs) или может включать целую цепочку сертификатов, включая открытый ключ, закрытый ключ и корневые сертификаты. Смутно, он может также кодировать CSR (например, как используется Вот), поскольку формат PKCS10 может быть переведен в PEM. Имя от Конфиденциальная почта (PEM), неудачный метод для защищенной электронной почты, но используемый в нем формат контейнера и является базовым преобразованием ключей x509 ASN.1.
  • .key - Это файл в формате PEM, содержащий только закрытый ключ конкретного сертификата, и является просто условным именем, а не стандартизированным. В установках Apache это часто находится в /etc/ssl/private, Права на эти файлы очень важны, и некоторые программы откажутся загружать эти сертификаты, если они установлены неправильно.
  • .pkcs12 .pfx .p12 - Первоначально определяемый RSA в Стандарты криптографии с открытым ключом (сокращенно PKCS), вариант «12» первоначально был усовершенствован Microsoft, а затем представлен как RFC 7292, Это парольный формат контейнера, который содержит как открытые, так и частные пары сертификатов. В отличие от файлов .pem, этот контейнер полностью зашифрован. Openssl может превратить это в файл .pem с открытыми и закрытыми ключами: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes 

Несколько других форматов, которые появляются время от времени:

  • .der - Способ кодирования синтаксиса ASN.1 в двоичном файле .pem - это только файл с кодировкой Base64. OpenSSL может преобразовать их в .pem (openssl x509 -inform der -in to-convert.der -out converted.pem). Windows рассматривает их как файлы сертификатов. По умолчанию Windows будет экспортировать сертификаты как файлы формата .DER с другим расширением. Подобно...
  • .cert .cer .crt - Файл с расширением .pem (или редко .der) с другим расширением, признанным проводником Windows в качестве сертификата, который не является .pem.
  • .p7b .keystore - Определено в RFC 2315 как PKCS номер 7, это формат, используемый Windows для обмена сертификатами. Java понимает это изначально и часто использует .keystore как расширение. В отличие от сертификатов стиля .pem, этот формат имеет определенный способ включения сертификатов сертификационного пути.
  • .crl - Список аннулирования сертификата. Органы сертификации выражают это как способ отмены авторизации сертификатов до истечения срока действия. Иногда вы можете загружать их с веб-сайтов CA.

Таким образом, существует четыре разных способа представления сертификатов и их компонентов:

  • PEM - Управляемый RFC, он используется преимущественно программным обеспечением с открытым исходным кодом. Он может иметь множество расширений (.pem, .key, .cer, .cert, more)
  • PKCS7 - Открытый стандарт, используемый Java и поддерживаемый Windows. Не содержит личный материал.
  • PKCS12 - частный стандарт Microsoft, который впоследствии был определен в RFC, который обеспечивает повышенную безопасность по сравнению с форматом PEM с открытым текстом. Это может содержать секретный ключевой материал. Он используется преимущественно системами Windows и может быть свободно преобразован в формат PEM с использованием openssl.
  • DER - Родительский формат PEM. Полезно подумать об этом как о двоичной версии файла PEM с кодировкой base64. Не всегда используется много за пределами Windows.

Надеюсь, это поможет.


1384
2018-05-19 02:49



Самое замечательное в стандартах, что есть так много на выбор ... - squillman
.crt - еще одно распространенное расширение для .cert и .cer - David Pashley
PEM - это формат файла, который может состоять из сертификата (или открытого ключа), закрытого ключа или даже объединенных вместе. Не уделяйте столько внимания расширению файла; это означает, что Privacy Enhanced Mail используется, но не используется, но формат файла застрял. - Dan Carley
Очень полезный ответ, но я не думаю, что вы рассмотрели формат .pub, созданный ssh-keygen, Было бы полезно знать, как это связано с остальными. - Jez
Не могу не заметить, что «Privacy Enhanced Email» предоставит аббревиатуру «PEE» в отличие от «PEM». RFC, как правило, используют фразу «Privacy Enhanced Mail» - aidan


PEM на своем собственном не является сертификатом, это всего лишь способ кодирования данных. Сертификаты X.509 - это один тип данных, который обычно кодируется с использованием PEM.

PEM является сертификатом X.509 (структура которого определена с использованием ASN.1), кодируется с использованием ASR.1 DER (выделенные правила кодирования), затем выполняется через кодировку Base64 и застряла между строками якорного текста (BEGIN CERTIFICATE и END CERTIFICATE ).

Вы можете представлять одни и те же данные с помощью представлений PKCS # 7 или PKCS # 12, и для этого можно использовать служебную программу командной строки openssl.

Очевидными преимуществами PEM является то, что безопасно вставлять в тело сообщения электронной почты, поскольку он имеет линии привязки и имеет 7-битную чистоту.

RFC1422 имеет более подробную информацию о стандарте PEM, относящемся к ключам и сертификатам.


119
2018-06-06 15:19



Как вы это делаете «используя командную строку openssl»? - Samik R
Чтобы преобразовать файл DER (.crt .cer .der) в PEM: openssl x509 -inform der -in cert.cer -out cert.pem, Чтобы преобразовать файл PEM в DER: openssl x509 -outform der -in cert.pem -out certi.der, Чтобы преобразовать файл PKCS # 12 (.pfx .p12), содержащий закрытый ключ и сертификаты для PEM: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes, Чтобы преобразовать файл сертификата PEM и закрытый ключ в PKCS # 12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt Из Вот - mpeac


Иногда .crt файл уже .pem, Видеть: https://stackoverflow.com/questions/991758/openssl-pem-key


49
2018-03-15 00:24



Действительно, я это заметил сегодня. Мне пришлось ввести сертификат PEM в loadloadancer rackspace, и мне было интересно, если сгенерированный crt был в этом формате. Но это сработало так, так что это был мой вывод, и большинство из них .crt пришли в формате PEM. - Glenn Plas