Что не вызывает “Ни ключа ПАБА, ни ключа PRIV:: вложенная asn1 ошибка” при создании открытого ключа в рубине?

При создании открытого ключа с помощью OpenSSL:: PKey:: модуль RSA путем передачи его .pem файл, что является причиной для ответа:

OpenSSL::PKey::RSAError: Neither PUB key nor PRIV key:: nested asn1 error
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `initialize'
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `new'
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `open'
from (irb):1

Вот источник:

cert = File.join(rails_root, 'config', 'apns', 'sandbox-cert.pem')
APN_CONFIG = { :delivery => { 
                              :host => 'gateway.sandbox.push.apple.com', 
                              :cert => cert,
                              :passphrase => "",
                              :port => 2195 },
               :feedback => {  
                              :host => 'feedback.sandbox.push.apple.com',
                              :port => 2196,
                              :passphrase => "",
                              :cert => cert} }


options = APN_CONFIG[:delivery].merge(options)
cert = File.read(options[:cert])
ctx = OpenSSL::SSL::SSLContext.new
ctx.key = OpenSSL::PKey::RSA.new(cert, options[:passphrase])
ctx.cert = OpenSSL::X509::Certificate.new(cert)

sock = TCPSocket.new(options[:host], options[:port])
ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
ssl.sync = true
ssl.connect
35
задан Matthew 19 February 2010 в 01:58
поделиться

1 ответ

Файл pem - это не открытый ключ, это base64-кодированный сертификат X509, который содержит, среди многих полей, открытый ключ. Я не знаю ни Ruby, ни модуля OpenSSL ruby, но я бы поискал какую-нибудь функцию, которая читает PEM-файлы и выдает сертификат X509, а затем другую функцию для извлечения открытого ключа из сертификата.

14
ответ дан 27 November 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: