У меня проблема с генерацией открытого ключа, который PEM_read_bio_RSA_PUBKEY()
может использовать функция openssl . Я продолжаю получать ошибки.
Очевидно, что я не могу просто использовать строку ASCII в ssh-keygen <>.pub
файле ключей, так как она находится в формате файла SSH, или я, возможно, SubjectPublicKeyInfo
структурирую.
Вот ключевой ген код: ssh-keygen -t rsa -b 1024 -C "Test Key"
В интернете я нашел конвертер в php, который преобразует содержимое открытого ключа в формат строки PEM ASCII base64. Однако функция по-прежнему не нравится.
Документация Openssl гласит:
- «Функция RSA_PUBKEY (), которая обрабатывает открытый ключ, используя структуру EVP_PKEY»
- «Функции RSA_PUBKEY также обрабатывают открытый ключ RSA с использованием структуры RSA»
Как получить открытый ключ OpenSSH в любом формате, который будет использовать функция OpenSSL?
Ответы:
ХОРОШО!
Так что я вошел в это мышление "Легко, я получил это". Оказывается, это намного больше, чем я думал.
Итак, первая проблема заключается в том, что (согласно страницам руководства для OpenSSL (man 3 pem)), OpenSSL ожидает, что ключ RSA будет в формате PKCS # 1. Очевидно, это не то, с чем работает ssh-keygen. У вас есть два варианта (от поиска вокруг).
Если у вас OpenSSH v. 5.6 или более поздней версии (у меня не было на моем ноутбуке), вы можете запустить это:
Более длинный способ сделать это состоит в том, чтобы разбить ваш ключ SSH на его различные компоненты ( запись в блоге, в которой я нашел кое-что из этого, обвиняет OpenSSH в «проприетарности», я предпочитаю называть его «уникальным»), а затем использовать библиотеку ASN1. обменять вещи вокруг.
К счастью для вас, кто-то написал код для этого:
https://gist.github.com/1024558
источник
ssh-keygen
Похоже, что этот метод работает в Linux, но не в Mac OS X.ssh -V
.OpenSSH_6.2p2
. Работает вOpenSSH_6.6p1
.-m
не работает для меня ... что обходится?Предполагая, что у вас есть закрытый ключ SSH
id_rsa
, вы можете извлечь из него открытый ключ следующим образом:Я понимаю, что ОП спросил о преобразовании открытого ключа, так что это не совсем отвечает на вопрос, однако я подумал, что это будет полезно для некоторых в любом случае.
Также обратите внимание, что эта команда приводит к формату открытого ключа PEM, который, как правило, ожидает OpenSSL. Ответ Брайана, с другой стороны, приводит к файлу в формате RSAPublicKey, который не является нормальным форматом, ожидаемым OpenSSL (хотя более поздние версии, очевидно, могут читать его через
-RSAPublicKey_in
флаг). Для конвертации вы можете сделать это:источник
openssl rsa -in id_rsa.pem -pubout -out id_rsa.pub.pem
также работает (то есть ввод является закрытым ключом формата pem). Хороший ответ.-m pkcs8
несмотря на то, что ребята из OpenSSH, использующие неправильное имя, действительно выдают X.509 'PUBKEY'. Кроме того, начиная с OpenSSH 6.5 в 2014-01 годах, если создатель указал «новый формат»-o
для большей безопасности, этот метод не будет работать, и с 7.8 в 2018-08 «новый формат» теперь используется по умолчанию, то же самое.Формат, который вы хотите, это то, что
ssh-keygen
звонитPKCS8
. Поэтому следующая команда выдаст желаемый результат:Со
ssh-keygen
страницы руководства :источник
Подобно методу Амаль Чаудхури ниже, это то, что мне помогло. Мне нужно было создать файл pem из открытого ключа ssh, который я сгенерировал для своего SFTP-клиента (Cyberduck).
источник
id_rsa
уже в правильном формате, вы можете проверить это самостоятельно, результатid_rsa.pem
на 100% идентичен.Еще один способ сделать это с другого сайта. Отправьте это на тот случай, если вам нужен другой метод. Работает очень хорошо. http://www.chatur.com.np/2011/01/convert-openssh-rsa-key-to-pem-format.html
источник
id_rsa
не является открытым ключом. Неверный ответ.