Назад | Перейти на главную страницу

Что такое файл Pem и чем он отличается от других форматов файлов сгенерированных ключей OpenSSL?

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

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

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

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

  • .csr - Это запрос на подпись сертификата. Некоторые приложения могут создавать их для отправки в центры сертификации. Фактический формат - PKCS10, который определен в RFC 2986. Он включает некоторые / все ключевые детали запрошенного сертификата, такие как субъект, организация, состояние и т. Д., А также открытый ключ сертификата для подписания. Они подписываются центром сертификации, и возвращается сертификат. Возвращенный сертификат является общедоступным свидетельство (который включает открытый ключ, но не закрытый ключ), который сам может быть в нескольких форматах.
  • .pem - Определено в RFC 1421 через 1424, это формат контейнера, который может включать только общедоступный сертификат (например, с установками Apache и файлы сертификатов CA /etc/ssl/certs) или может включать всю цепочку сертификатов, включая открытый ключ, закрытый ключ и корневые сертификаты. Как ни странно, он также может кодировать CSR (например, как используется Вот), поскольку формат PKCS10 может быть переведен в PEM. Имя от Почта с улучшенной конфиденциальностью (PEM), неудачный метод защиты электронной почты, но используемый контейнерный формат продолжает жить и представляет собой преобразование ключей x509 ASN.1 в формате base64.
  • .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 - это просто файл .der в кодировке 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 и др.)
  • PKCS7 - Открытый стандарт, используемый Java и поддерживаемый Windows. Не содержит закрытых ключей.
  • PKCS12 - Частный стандарт Microsoft, который позже был определен в RFC и обеспечивает повышенную безопасность по сравнению с обычным текстовым форматом PEM. Это может содержать материал закрытого ключа. Он используется преимущественно системами Windows и может быть свободно преобразован в формат PEM с помощью openssl.
  • DER - Родительский формат PEM. Полезно думать об этом как о двоичной версии файла PEM в кодировке base64. Обычно редко используется вне Windows.

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

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

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

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

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

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

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