Как я могу преобразовать OpenS SH publi c ключ в OpenSSL в Ruby (или Rails) - PullRequest
0 голосов
/ 25 января 2020

У меня есть публичные c ключи в базе данных, и они нужны мне для проверки токенов JWT. Ключи представлены в формате ключей OpenS SH publi c, поэтому мне нужно преобразовать их в формат PEM следующим образом:

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAx9jNrkPwjH12qVhmpKs/MLfvsYy5uob+jx68Mdsv5tmZG5HVq6nm
sYKkcDdwLseShWREIOmB0lC/bhaaihuAvs4ZZcDRKnrq2FX+WQz9/mHScr1kQTgB
adRdQWzG3KXeOJJiKSBfNHVn3Iixdba/IX5rYhARbDMqPQfwz08gKHbFLuNogNN0
hm5yTFQU1z0bhR87dHFJgfwQSVloeNKTsXleoGZqGBNbjMdF0HOEvQaWzenQHJde
dTaF39Ok6q0k4QsSHyuzmoXy30O3oe31D7mu4QQOk/Lj61zVZrR25YvGYpn0ym+d
cWxKFyeVX/McstRhu7wD1iu0kj74A2VhrwIDAQAB
-----END RSA PUBLIC KEY-----

Есть ли способ конвертировать OpenS SH publi c ключ к OpenSSL с Ruby (не с openssl)?

Я уже нашел это: https://gist.github.com/tombh/f66de84fd3a63e670ad9 Но, к сожалению, он выдает ошибку в последних Ruby версиях. Смотрите последний комментарий, который я также получил:

undefined method `e=' for #<OpenSSL::PKey::RSA:0x00007ff593ba87c8>

Я получаю это в Ruby 2.4.9

Я также нашел гем SSHKey, но, похоже, он не предлагает такую ​​функциональность .

1 Ответ

0 голосов
/ 06 февраля 2020

Используя gem:

gem 'net-ssh'

Вы можете сделать следующее:

converted_key = Net::SSH::KeyFactory.load_public_key('~/.ssh/id_rsa.pub')

или если из памяти:

converted_key = Net::SSH::KeyFactory.load_data_public_key(public_key)
...