Как конвертировать DER в PEM
- Перетащите в поле файл
.der,.cerили.crt. Двоичный ввод читается как байты. Вместо файла можно вставить однострочный DER в Base64 или hex вроде30 82 01 b7 …. - Оставьте в поле Конвертировать в вариант PEM (64 колонки).
- Оставьте в поле Метка PEM значение Автоопределение. Конвертер читает ASN.1 и пишет
CERTIFICATE,CERTIFICATE REQUEST,PUBLIC KEY,PRIVATE KEYи так далее. Выбирайте метку сами, только если какой-то инструмент требует конкретную. - При необходимости отметьте Окончания строк Windows (CRLF), затем Скопировать результат или Скачать .pem.
Чтобы проверить, что вы сконвертировали, переключитесь на Разобрать: субъект, срок действия и отпечатки будут на карточке.
Откуда берутся файлы DER и Base64 без заголовков
| Источник | Что вы получаете |
|---|---|
| Экспорт сертификата в Windows, «Файлы X.509 (.CER) в кодировке DER» | Двоичный DER |
Java keytool -exportcert без -rfc | Двоичный DER |
| URL CA Issuers в сертификате (расширение AIA) | Обычно .cer в DER |
x5c в JWK или JWKS | Однострочный DER в Base64 на каждый сертификат |
<ds:X509Certificate> в метаданных SAML | DER в Base64, иногда с переносами строк |
| Дампы трафика, инструменты для HSM и смарт-карт | Hex-дампы |
Из всего этого получается одинаковый PEM. Сертификат DER размером 443 байта превращается в PEM размером 656 байтов: 592 символа Base64 в десяти строках плюс строки BEGIN и END.
Коротко о формате PEM
RFC 7468 описывает, чего ждут парсеры, и результат ему следует:
-----BEGIN CERTIFICATE-----
MIIBtzCCAV2gAwIBAgIUfX6gOa1S96OttEsj3WbuIdu0cE0wCgYIKoZIzj0EAwIw
...64 characters per line, the last line shorter...
-----END CERTIFICATE-----
- Метка в BEGIN и END должна совпадать в точности.
- Строки тела содержат по 64 символа стандартного Base64 с дополнением
=. Ввод в URL-safe алфавите (-и_) или без дополнения принимается и записывается в стандартной форме. - Несколько сертификатов в одном файле записываются просто склеенными блоками. Так устроены
fullchain.pemи бандлы CA. Чтобы собрать такой файл, сконвертируйте каждый сертификат DER и вставьте блоки друг за другом, начиная с конечного.
DER в PEM через OpenSSL, Python и shell
openssl x509 -inform der -in cert.cer -out cert.pem
openssl pkey -inform der -in key.der -out key.pem
openssl req -inform der -in app.der -out app.csr
Старые сборки OpenSSL падают с unable to load certificate, если забыть -inform der; свежие определяют DER сами. Для однострочной строки Base64, например записи x5c:
{ echo '-----BEGIN CERTIFICATE-----'; echo "$B64" | fold -w 64; echo '-----END CERTIFICATE-----'; } > cert.pem
В Python это встроено: ssl.DER_cert_to_PEM_cert(open("cert.der", "rb").read()). Больше рецептов собрано на страницах OpenSSL и Python.
Частые проблемы
- «Это не PEM и не корректный DER в Base64» или «Некорректный DER/ASN.1 в байте …»: Base64 повреждён, обрезан или это не DER. Файл
.p12или.pfxтоже содержит DER, но его содержимое зашифровано, поэтому конвертируйте его черезopenssl pkcs12. - Метка показывает
DATA: структура не распознана как сертификат, ключ или запрос. Байты всё равно конвертируются; если знаете, что это, задайте метку сами. - Файл с самого начала был PEM: некоторые файлы
.cerсодержат PEM, несмотря на расширение. Тогда на выходе будет тот же сертификат, заново разбитый на строки: конвертировать его было не нужно. Что внутри, покажет декодер сертификатов. - Нужно в обратную сторону: PEM в DER даёт файл
.der, однострочный Base64 или hex.
Вопросы и ответы
Как понять, DER или PEM в моём файле .cer?
Откройте его в текстовом редакторе. Если виден читаемый текст -----BEGIN CERTIFICATE-----, перед вами PEM; если же видны нечитаемые двоичные данные, то это DER, и его первый байт равен 0x30. Команда file в Linux и macOS выводит для этих случаев PEM certificate или Certificate, Version=3.
Как превратить значение X509Certificate из метаданных SAML в файл PEM?
Вставьте в поле текст Base64 из <ds:X509Certificate>. Это DER без заголовков, так что конвертер добавит -----BEGIN CERTIFICATE-----, разобьёт строку по 64 символа и закроет блок.
Можно здесь сконвертировать закрытый ключ DER в PEM?
Да. Ключи PKCS#8, PKCS#1 RSA и SEC1 EC распознаются и получают подходящую метку, например PRIVATE KEY или EC PRIVATE KEY. Конвертация локальная, а значения ключа на странице не показываются.
Когда ставить флажок «Окончания строк Windows (CRLF)»?
Только если файл отвергает инструмент Windows или строгий парсер. Большинство программ принимают оба варианта, а RFC 7468 допускает в PEM любые окончания строк.