Я не уверен, что это вообще возможно. Кроме того, OpenSSL - уродливая мать-любительница утилит: /
Мне нужно загрузить сертификат и закрытый ключ в качестве DER в ESET Security Management Center (ESMC), по крайней мере, согласно их технической поддержке.
Я использую XCA для этого небольшого развертывания, и нет возможности экспортировать общедоступный + частный как DER, только PEM (или несколько других форматов). Итак, вопрос: как преобразовать PEM private + public в DER?
Разница между PEM и DER только в том, как они хранятся. DER - это двоичная форма, а PEM - файл в кодировке base64 (с «заголовком»). Поскольку DER представляет собой более или менее сырую форму, вы можете хранить только один объект в файле.
Если вам нужно больше объектов (например, ключ и сертификат), вам нужна форма в кодировке PEM, где на основе «заголовка» можно различать объекты (в файле объекты следуют друг за другом) или какой-то конкретный формат контейнера, такой как PKCS12 (также поддерживается по openssl).
Для openssl вы можете использовать параметры inform
и outform
чтобы указать, интересует ли вас PEM (по умолчанию используется, если вы не запрашиваете DER) или DER.
Для ключа (допустим, rsa) - поскольку по умолчанию используется PEM, следующие команды равны:
openssl rsa -in <file_with_key> -out <new_der_key_file> -outform DER
openssl rsa -in <file_with_key> -inform PEM -out <new_der_key_file> -outform DER
Для справки - тоже две равные формы:
openssl x509 -in <cert_file> -out <new_der_cert> -outform DER
openssl x509 -in <cert_file> -inform PEM -out <new_der_cert> -outform DER
В случае контейнера pkcs12 (если поддерживается, при необходимости преобразование будет выполнено во время импорта):
openssl pkcs12 -export -in <cert_file> -inkey <key_file> -out <pkcs12_file>.p12
Насколько мне известно, вы не можете хранить ключ и сертификат в формате DER в одном файле. Вам нужно экспортировать ключ и сертификат отдельно. Используя XCA, вы можете сделать это, выбрав опцию «DER» при экспорте.
Если вы используете OpenSSL, вам нужно указать outform
переключатель, который определяет формат, который OpenSSL должен использовать при записи файлов (pem
или der
):
openssl rsa -in /the/cert/and/the/key.pem -out key_in_der.key -outform der
openssl x509 -in /the/cert/and/the/key.pem -out cert_in_der.crt -outform der
Если вам нужно загрузить один файл, то вам нужно использовать какой-то контейнер (например, PKCS12).