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

<p>я отвечаю за обслуживание двух серверов debian. каждый раз, когда мне нужно что-то делать с сертификатами безопасности, я гугляю по учебникам и отбиваю, пока все не заработает.</p><p>однако в своих поисках я часто сталкиваюсь с разными форматами файлов (<code>.key</code>, <code>.csr</code>, <code>.pem</code>) но я так и не смог найти хорошее объяснение цели каждого формата файла.</p><p>мне было интересно, могут ли хорошие люди здесь в serverfault дать некоторые разъяснения по этому вопросу?</p>

<p>ssl существует достаточно долго, и вы думаете, что будут согласованы форматы контейнеров. и ты прав, есть. слишком много стандартов, как это происходит. так что это то, что я знаю, и я уверен, что другие будут вмешиваться.</p><ul> <li><strong>. csr </strong> - это запрос на подпись сертификата. некоторые приложения могут генерировать их для отправки в центры сертификации. фактический формат - pkcs10, который определен в <a href="https://tools.ietf.org/html/rfc2986">rfc 2986</a> . он включает в себя некоторые/все ключевые детали запрашиваемого сертификата, такие как субъект, организация, состояние, еще много чего, а также <em> открытый ключ</em> сертификата для подписи. они подписываются центром сертификации и возвращаются сертификаты. возвращенный сертификат является открытым <em> сертификат</em> (который включает в себя открытый ключ, но не закрытый ключ), который может быть в нескольких форматах.</li> <li><strong>. pem </strong> - определено в rfc <a href="https://tools.ietf.org/html/rfc1421">1421</a> - <a href="https://tools.ietf.org/html/rfc1424">1424</a> , это формат контейнера, который может включать только общедоступный сертификат (например, при установке apache и файлы сертификатов ca <code>/etc/ssl/certs</code>) или может включать в себя всю цепочку сертификатов, включая открытый ключ, закрытый ключ и корневые сертификаты. смущает, что он также может кодировать csr (например, как используется <a href="https://jamielinux.com/docs/openssl-certificate-authority/create-the-intermediate-pair.html">здесь</a> ), поскольку формат pkcs10 может быть переведен в pem. название от <a href="https://en.wikipedia.org/wiki/privacy-enhanced\_electronic\_mail">privacy enhanced mail (pem)</a> , неудачный метод для защищенной электронной почты, но формат контейнера, в котором он используется, является переводом base64 ключей asn.1 x509.</li> <li><strong>. key </strong> - это файл в формате pem, содержащий только закрытый ключ определенного сертификата и являющийся просто условным именем, а не стандартизированным. в установках apache это часто находится в <code>/etc/ssl/private</code>. права на эти файлы очень важны, и некоторые программы откажутся загружать эти сертификаты, если они установлены неправильно.</li> <li><strong>. pkcs12 .pfx .p12 </strong> - изначально определено rsa в <a href="https://en.wikipedia.org/wiki/pkcs">стандарты криптографии с открытым ключом</a> (сокращенно pkcs), " 12 "вариант был изначально улучшен microsoft, а затем представлен как <a href="https://tools.ietf.org/html/rfc7292">rfc 7292</a> . это формат контейнера с паролем, который содержит как открытые, так и частные пары сертификатов. в отличие от файлов .pem, этот контейнер полностью зашифрован. openssl может превратить это в файл .pem с открытым и закрытым ключами: <code>openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes</code></li> </ul><p>несколько других форматов, которые появляются время от времени:</p><ul> <li><strong>. der </strong> - способ кодировать синтаксис asn.1 в двоичном формате. файл .pem - это просто файл .der, закодированный в base64. openssl может преобразовать их в .pem (<code>openssl x509 -inform der -in to-convert.der -out converted.pem</code>). windows видит их как файлы сертификатов. по умолчанию windows экспортирует сертификаты как файлы в формате .der с другим расширением. подобно...</li> <li><strong>. cert .cer .crt </strong> - файл в формате .pem (или редко .der) с другим расширением, который распознается проводником windows как сертификат, которого нет .pem.</li> <li><strong>. p7b .keystore </strong> - определено в <a href="https://tools.ietf.org/html/rfc2315">rfc 2315</a> как pkcs номер 7, это формат, используемый windows для обмена сертификатами. java понимает их изначально и часто использует <code>.keystore</code> как расширение. в отличие от сертификатов стиля .pem, этот формат имеет способ <em> определен</em> для включения сертификатов пути сертификации.</li> <li><strong>. crl </strong> - список отзыва сертификатов. центры сертификации производят их как способ отмены авторизации сертификатов до истечения срока их действия. иногда вы можете скачать их с веб-сайтов ca.</li> </ul><hr><p>таким образом, существует четыре различных способа представления сертификатов и их компонентов:</p><ul> <li><strong> [~ # ~] pem [~ # ~] </strong> - управляется rfc, преимущественно используется программным обеспечением с открытым исходным кодом. он может иметь различные расширения (.pem, .key, .cer, .cert, другие)</li> <li><strong> pkcs7 </strong> - открытый стандарт, используемый java и поддерживаемый windows. не содержит материала закрытого ключа.</li> <li><strong> pkcs12 </strong> - частный стандарт microsoft, который был позже определен в rfc, который обеспечивает повышенную безопасность по сравнению с открытым текстом pem. это может содержать материал закрытого ключа. он используется преимущественно системами windows и может быть свободно преобразован в формат pem с помощью openssl.</li> <li><strong> [~ # ~] der [~ # ~] </strong> - родительский формат pem. полезно думать о нем как о двоичной версии файла pem в кодировке base64. обычно не используется за пределами windows.</li> </ul><p>надеюсь, это поможет.</p>

<p>pem сам по себе не является сертификатом, это просто способ кодирования данных. сертификаты x.509 - это один тип данных, который обычно кодируется с использованием pem.</p><p>pem является сертификатом x.509 (структура которого определяется с использованием asn.1), кодируется с использованием der asn.1 (отличительные правила кодирования), затем проходит через кодирование base64 и застревает между строками привязки простого текста (begin certificate и end certificate). ).</p><p>вы можете представлять одни и те же данные, используя представления pkcs # 7 или pkcs # 12, и для этого можно использовать утилиту командной строки openssl.</p><p>очевидное преимущество pem заключается в том, что его можно вставить в текст сообщения электронной почты безопасно, поскольку он имеет якорные строки и является 7-битным чистым.</p><p> <a href="https://tools.ietf.org/html/rfc1422">rfc1422</a> содержит более подробную информацию о стандарте pem в том, что касается ключей и сертификатов.</p>

<p>иногда <code>.crt</code> файл уже является <code>.pem</code>. смотрите: <a href="https://stackoverflow.com/questions/991758/openssl-pem-key">https://stackoverflow.com/questions/991758/openssl-pem-key</a> </p>