Как преобразовать открытый ключ ssh-keygen в формат, который открывает функцию PEM_read_bio_RSA_PUBKEY ()?

У меня возникла проблема с созданием открытого ключа, который может использовать функция openssl PEM_read_bio_RSA_PUBKEY() . Я продолжаю получать ошибки.

Очевидно, я не могу просто использовать строку ASCII в файле ключа ssh-keygen <>.pub SubjectPublicKeyInfo как это есть в формате файла SSH, или, возможно, в структуре SubjectPublicKeyInfo .

Вот код кода ключа: ssh-keygen -t rsa -b 1024 -C "Test Key"

Я нашел конвертер в php в Интернете, который преобразует содержимое открытого ключа в формат строки base64 PEM ASCII. Однако функция все еще не нравится.

Документация Openssl гласит:

  1. «RSA_PUBKEY (), которая обрабатывает открытый ключ с использованием структуры EVP_PKEY"
  2. «Функции RSA_PUBKEY также обрабатывают открытый ключ RSA с использованием структуры RSA»

Как получить открытый ключ OpenSSH в любом формате, который будет использовать функция OpenSSL?

  • Включить шифрование 3DES для openssl 1.0.1t на Debian 7
  • Неизвестный протокол mutt SSL - невозможно подключиться
  • «Ошибка получения подписи сертификата сертификата ошибки» при объединении сертификатов в хранилище ключей PKCS12
  • Как подключить вывод ffmpeg?
  • Отправить письмо с помощью OpenSSL
  • Получите номер версии модуля OpenSSL FIPS
  • Декодирование сообщений ASN.1 с помощью инструмента Openssl asn1parse
  • Запуск скрипта travis, дешифрование ssh-ключа, запрос пароля и пароля
  • 5 Solutions collect form web for “Как преобразовать открытый ключ ssh-keygen в формат, который открывает функцию PEM_read_bio_RSA_PUBKEY ()?”

    ОК!

    Поэтому я вошел в это мышление «Легко, я получил это». Оказывается, это намного больше, чем я думал.

    Итак, первая проблема заключается в том, что (согласно man-страницам OpenSSL (man 3 pem)), OpenSSL ожидает, что ключ RSA будет в формате PKCS # 1. Очевидно, что это не то, с чем работает ssh-keygen. У вас есть два варианта (от поиска).

    Если у вас есть OpenSSH v 5.6 или новее (я не на своем ноутбуке), вы можете запустить это:

     ssh-keygen -f key.pub -e -m pem 

    Более длинный способ сделать это состоит в том, чтобы разбить ваш SSH-ключ на его различные компоненты ( запись в блоге, в которой я нашел некоторые из них, обвиняет OpenSSH в том, что он «проприетарный», я предпочитаю называть его «уникальным»), а затем использовать библиотеку ASN1 поменять местами.

    К счастью для вас, кто-то написал код, чтобы сделать это:

    https://gist.github.com/1024558

    Подобно методу Амала Чаудхури ниже, это то, что сработало для меня. Мне нужно было создать файл pem из открытого ключа ssh, который я создал для моего SFTP-клиента (Cyberduck).

     openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem 

    Предполагая, что у вас есть закрытый ключ SSH id_rsa , вы можете извлечь из него открытый ключ следующим образом:

     openssl rsa -in id_rsa -pubout -out id_rsa.pub.pem 

    Я понимаю, что ОП задал вопрос о преобразовании открытого ключа, так что это не совсем ответит на вопрос, однако я подумал, что это будет полезно для кого-то в любом случае.

    Также обратите внимание, что эта команда приводит к формату открытого ключа PEM, который, как правило, ожидает OpenSSL. С другой стороны, ответ Брайана приводит к файлу в формате RSAPublicKey, который не является нормальным форматом, ожидаемым OpenSSL (хотя более поздние версии могут, по-видимому, читать его через флаг -RSAPublicKey_in ). Для преобразования вы можете сделать это:

     openssl rsa -RSAPublicKey_in -in id_rsa.rsapub.pem -pubout -out id_rsa.pub.pem 

    Формат, который вы хотите, это то, что ssh-keygen вызывает PKCS8 . Таким образом, следующая команда выдаст желаемый результат:

     ssh-keygen -f key.pub -e -m pkcs8 

    Другой способ сделать это с другого сайта. Проводя это, если вам нужен другой метод. Работает очень хорошо. http://www.chatur.com.np/2011/01/convert-openssh-rsa-key-to-pem-format.html

     openssl dsa -in ~/.ssh/id_dsa -outform pem > id_dsa.pem 
    Interesting Posts

    Один ПК, несколько пользователей, Gnome 3 и Awesome. Как легко переключаться между пользователями через GDM

    Инструмент, который позволяет вам рисовать прямоугольник на экране, дает размеры + XY?

    Меню правой кнопки мыши в Nemo отсутствует «создать ярлык» и «скопировать / переместить в»

    Как ввести n повторений цифры в bash, в интерактивном режиме

    Замените% 20 пробелом в именах файлов?

    Почему Вим иногда показывает эти странные персонажи?

    Loop до тех пор, пока grep не найдет текст в файле

    Как мне заставить «sudo ll» работать?

    Где находится информационный файл

    Предотвратите прерывание вызова функции SIGINT и дочерних процессов

    Отправить факс через SIP

    Почему мой процессор перегревается, когда я использую i3wm?

    Автоматический ответ на вызов с модемом Huawei

    Утверждение awk sed if

    Как настроить «максимальные открытые файлы» и жесткий лимит для определенного процесса?

    Linux и Unix - лучшая ОС в мире.