2017-02-21 5 views
0

Я получил открытый ключ RSA, который выглядит следующим образом:Как преобразовать Java сгенерированный открытый ключ формата PEM с OpenSSL

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelri 
LEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCu 
b3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB 

Мне нужно, чтобы преобразовать его в формат PEM, так что я могу написать мой собственный код на Python, используя этот открытый ключ, я вижу, что есть много ответов на противоположную операцию, но сейчас мне нужно преобразовать ее из JAVA-стиля в PEM, может ли кто-нибудь помочь?

+0

Как вы генерировать ключ? Java имеет несколько способов, которыми он может их представлять – Magnus

+0

Какой пакет python вы используете, что, по вашему мнению, нужен ключ в определенном формате? –

+0

Решение oliv работает, но спасибо вам все равно: P –

ответ

1

Просто конвертировать обратно в формате base64 ключ паб и бросить его в OpenSSL:

echo "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | base64 -d | openssl rsa -inform der -pubin -out rsakey.pub 

-inform der говорит на OpenSSL, чтобы взять ключ в двоичном виде (по умолчанию PEM)

-pubin говорит ожидать общественности (по умолчанию является частным)

-out должен написать ключ


Другой способ состоит в добавлении тегов OpenSSL до и после того, как base64 закодированного RSA открытого ключа:

sed 's/^/-----BEGIN PUBLIC KEY-----\n/;s/$/\n-----END PUBLIC KEY-----/' <<< "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | openssl rsa -pubin 
+0

Хорошее объяснение! – CraigR8806

+0

Работает для меня, спасибо! –

1

Вы можете создать Баш скрипт так:

#!/bin/bash 

# Loop through all the certs in the current folder that have the .cer extension 
for cert in *.cer 
do 

#get filename wihtout ext 
filename="${cert%.*}" 
#echo ${filename} 

#convert to PEM 
openssl x509 -inform der -in ${cert} -outform pem -out ${filename}.crt 

done 

Я использовал это, чтобы преобразовать сертификаты в формат PEM. Надеюсь, что это может помочь

+0

Привет, Craig, спасибо за ваш быстрый ответ, однако ключ, который я написал, не является DER, это JAVA сгенерированный, с openssl x509 -inform der -in $ { серт}, я только что получил следующее сообщение об ошибке: –

+0

не удалось загрузить сертификат 140258637911704: ошибка: 0D0680A8: ASN1 процедуры кодирования: ASN1_CHECK_TLEN: неправильный тег: tasn_dec.c: 1197: 140258637911704: ошибка: 0D07803A: ASN1 процедуры кодирования: ASN1_ITEM_EX_D2I: вложенный asn1 error: tasn_dec.c: 374: Тип = X509 –

+0

Что такое расширение на файл? – CraigR8806

Смежные вопросы