В чем разница между .pem, .cer и .der?

86

В чем разница между .pem,.cer и .der?

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

LiangWang
источник
2
Я думаю, что это всего лишь форматы файлов, в которых можно хранить любой ключ; есть инструменты, которые могут свободно конвертировать между ними.
IMSoP
1
@IMSoP Правильно, но для .cer to .der cpможет подойти команда :)
Maarten Bodewes
Я удалил часть, относящуюся к iOS, кажется, есть много примеров, таких как этот и другой, использующие .pem.
Maarten Bodewes

Ответы:

93

.pem, .cerи .derвсе расширения файлов для файлов, которые могут содержать сертификат X.509 v3.

.derрасширение

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

Структура сертификата описывается с использованием языка представления данных ASN.1. BER и DER - это методы двоичного кодирования данных, описанных в ASN.1.

.pemрасширение

PEM - это метод кодирования двоичных данных в виде строки (броня ASCII). Он содержит верхний и нижний колонтитулы (с указанием типа данных, которые закодированы, и с указанием начала / конца, если данные объединены в цепочку), а данные в середине являются данными base 64. В случае, если он кодирует сертификат, он будет просто содержать кодировку base 64 сертификата DER. PEM расшифровывается как Privacy Enhanced Mail; mail не может напрямую содержать незашифрованные двоичные значения, такие как DER.

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

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----

Обратите внимание, что файл PEM также может содержать полную цепочку сертификатов, где цепочка начинается с конечного / конечного сертификата службы, за которым следует сертификат, который ее подписал, обычно до, но не включая доверенный корневой сертификат. Поэтому, если вам не хватает сертификатов, вы можете взглянуть на первый.

.cerИли .crtрасширение

.cerпросто означает сертификат. Обычно это данные в кодировке DER, но Windows также может принимать данные в кодировке PEM. Вам необходимо взглянуть на содержимое (например, с помощью fileутилиты в системах posix), чтобы увидеть, что находится в файле, чтобы быть уверенным на 100%.

Другие форматы OpenSSL

Взгляните на этот ответ, чтобы увидеть более обширный список того, что поддерживается OpenSSL.


Чтобы использовать открытый ключ, содержащийся в сертификате (и подписанный подписью в сертификате), вы должны использовать любую библиотеку, которая анализирует сертификаты X.509 и выполняет шифрование RSA. Вы можете использовать инструмент, который обнаруживает / обрабатывает кодировку PEM, или вы можете сначала преобразовать сертификат в DER, удалив кодировку PEM.

Командная строка OpenSSL содержит множество параметров для преобразования между PEM и DER, распечатки информации сертификата высокого уровня или анализа ASN.1, чтобы получить низкоуровневое представление о том, что там находится.

Детали

Как и большинство структур ASN.1, сертификат в кодировке DER всегда начинается с байта, 30который является кодировкой тега ASN.1 SEQUENCE. Если вы видите много повторений в файле, это нормально; это просто структура , которая строго определена.

Аналогичным образом, база 64 в файле, закодированном с помощью PEM, всегда начинается с буквы, Mпоскольку ASN.1 SEQUENCEначинается с байта 30, поэтому первые 6 битов 001100преобразуются в число 12, которое является индексом буквы M, тринадцатая буква алфавита.

Maarten Bodewes
источник