У меня есть сертификат в der
формате, из него с помощью этой команды я генерирую открытый ключ:
openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Что приводит к следующему:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Как я могу получить такой открытый ключ? Либо из сертификата, либо из этого открытого ключа?
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Это было получено с помощью этой команды:
ssh-keygen -y -f private_key1.pem > public_key1.pub
ssh-keygen -y -f private_key1.pem > public_key1.pub
отлично поработала для меня.ssh-keygen -i -m PKCS8 -f public-key.pem
-m
отличается для-i
/-e
. Итак, друзья мои, пожалуйста, убедитесь, что вы знаете, чего хотите и что у вас есть . :-)Ответы:
Не нужно компилировать. Вы можете сделать то же самое с
ssh-keygen
:будет читать открытый ключ в формате openssl
pub1key.pub
и выводить его в формате OpenSSH.Примечание . В некоторых случаях потребуется указать формат ввода:
Из документации ssh-keygen (От человека ssh-keygen):
источник
-m PKCS8
было необходимо$ ssh-keygen -f mykey.pub -i
key_from_blob: invalid format
decode blob failed.
Никаких скриптов и других «уловок»:
openssl
и этогоssh-keygen
достаточно. Я не предполагаю, что пароль для ключей (что плохо).Создайте пару RSA
Все следующие методы дают пару ключей RSA в том же формате.
С openssl ( man genrsa )
В OpenSSL v1.0.1
genrsa
заменен наgenpkey
так это новый способ сделать это ( человек genpkey ):С ssh-keygen
Преобразование DER в PEM
Если у вас есть пара ключей RSA в формате DER, вы можете преобразовать ее в PEM, чтобы разрешить преобразование формата ниже:
Поколение:
Конверсия:
Извлеките открытый ключ из пары RSA в формате PEM
в формате PEM:
в формате OpenSSH v2 см . :
Примечания
Версия ОС и ПО:
Ссылки:
источник
ssh-rsa
формате? Хорошая ссылка, кстати.ssh-keygen -y -f dummy-xxx.pem
производитssh-rsa AAAA[...]==
подгонку для SSH вauthorized_keys
файл.Чтобы ответить на свой вопрос, после публикации в списке рассылки openssl получил следующее:
Вот код C для преобразования открытого ключа OpenSSL в открытый ключ OpenSSH. Вы можете взять код по этой ссылке и скомпилировать его самостоятельно:
источник
источник
do_convert_from_pkcs8: TEST.pem is not a recognised public key format
openssl genrsa -out newkey.pem 2048
иopenssl rsa -in newkey.pem -outform PEM -pubout -out newkeypublic.pem
источник
Я сделал с
Кредит идет сюда
источник
Следующий скрипт получит сертификат открытого ключа ci.jenkins-ci.org в формате DER в кодировке base64 и преобразует его в файл открытого ключа OpenSSH. Этот код предполагает, что используется 2048-битный ключ RSA, и многое заимствует из этого ответа Яна Бойда . Я объяснил немного больше, как это работает, в комментариях к этой статье в вики Jenkins.
источник
FWIW, этот сценарий BASH примет сертификат X.509 в формате PEM или DER или файл открытого ключа OpenSSL (также формат PEM) в качестве первого аргумента и выдаст открытый ключ OpenSSH RSA. Это расширяет ответ @mkalkov выше. Требования
cat
,grep
,tr
,dd
,xxd
,sed
,xargs
,file
,uuidgen
,base64
,openssl
(1.0+), и, конечно жеbash
. Все, кромеopenssl
(containsbase64
), в значительной степени гарантированно будут частью базовой установки в любой современной системе Linux, за исключением, возможно,xxd
(который Fedora показывает вvim-common
пакете). Если кто-то хочет очистить его и сделать лучше, будьте осторожны, lector.источник