OpenSSL в ruby: формат PKCS # 8 для закрытого ключа - PullRequest
3 голосов
/ 21 февраля 2010

Я создал закрытый ключ RSA в ruby ​​с помощью:

require 'openssl'
key = OpenSSL::PKey::RSA.generate(1024)

Я могу получить ключ в форматах PEM или DER:

key.to_pem
key.to_der

Но, похоже, нет способа перевести его в формат PKCS # 8. Лучшее, что я придумал, - это вызов openssl в другом процессе:

require 'open3'
Open3.popen3('openssl pkcs8 -topk8 -inform PEM -outform PEM -passout pass:password') do |stdin,  stdout, stderr|
  stdin.write(key.to_pem)
  unless (err = stderr.read).empty? then raise err end
  stdout.read
end

Должен быть лучший способ, который я просто не могу найти. Есть ли в библиотеке классов OpenSSL в ruby ​​механизм для этого?

1 Ответ

0 голосов
/ 17 января 2012

Я думаю, что нашел способ сделать это, взломав новый метод для класса OpenSSL :: PKey :: RSA, который выводит в формате PKCS # 8. Это довольно уродливо и может использовать некоторую очистку, но удается создать действительные записи:

key = OpenSSL::PKey::RSA.new(1024)

key.to_pem_pkcs8
# => "-----BEGIN PRIVATE KEY----- ..."

Этот метод работает как обычный to_pem, но вызывает другой метод экспорта OpenSSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...