#openssl
#openssl
Вопрос:
У меня есть закрытый ключ в формате PEM, и когда я запускаю для него openssl asn1parse, я получаю следующее:
0:d=0 hl=3 l= 159 cons: SEQUENCE
3:d=1 hl=2 l= 13 cons: SEQUENCE
5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
16:d=2 hl=2 l= 0 prim: NULL
18:d=1 hl=3 l= 141 prim: BIT STRING
Однако, если я преобразовываю этот PEM в DER и снова выполняю openssl asn1parse, я теряю эту оболочку, и результирующий размер файла немного меньше.
Как я могу преобразовать RSA PEM в DER, сохранив вышеуказанную оболочку?
Комментарии:
1. Как вы его конвертируете сейчас?
2. openssl rsa — сообщить ключ pem -in.pem -вывести ключ der -out.der
3. Можете ли вы показать нам заголовок PEM для входного файла?
4. Вы имеете в виду в шестнадцатеричном формате? Потому что, если нет, не является ли вышеуказанный заголовок заголовком?
5. Нет. Файл PEM представляет собой текстовый файл, содержащий верхний колонтитул, данные DER в кодировке base64 и нижний колонтитул. Команда asn1parse просто декодирует base64. Меня интересует заголовок PEM. Это строка, которая начинается с «——BEGIN», за которой следует еще какой-то текст. В зависимости от того, что именно содержат данные DER, этот текст будет меняться.
Ответ №1:
-----BEGIN PRIVATE KEY-----
Заголовок, который вы упоминаете в своем комментарии, указывает на то, что у вас есть закрытый ключ в формате PKCS8. Хотя мне это кажется немного странным. Я бы ожидал, что вывод asn1parse будет выглядеть примерно так:
0:d=0 hl=4 l=1213 cons: SEQUENCE
4:d=1 hl=2 l= 1 prim: INTEGER :00
7:d=1 hl=2 l= 13 cons: SEQUENCE
9:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
20:d=2 hl=2 l= 0 prim: NULL
22:d=1 hl=4 l=1191 prim: OCTET STRING
Обратите внимание, что в вашем выводе нет целочисленного поля.
Вы можете использовать утилиту openssl pkcs8
для преобразования файла PKCS8 из PEM в DER
openssl pkcs8 -topk8 -in rsakey.pem -out rsakey.der -outform DER -nocrypt