ruby - 在 Ruby 上获取 OpenSSL::X509::CertificateError 嵌套 asn1 错误

标签 ruby apple-push-notifications

我有来自 Apple 的 .p12 文件,并尝试使用以下命令将其转换为 .pem 文件:

openssl pkcs12 -in cert.p12 -out apple_push_notification_development.pem -nodes -clcerts

尝试创建新的 OpenSSL::X509::Certificate 对象时

OpenSSL::X509::Certificate.new(File.read('apple_push_notification_development.pem'))

我收到以下错误:

OpenSSL::X509::CertificateError: nested asn1 error
    from (irb):9:in `initialize'
    from (irb):9:in `new'
    ...

我做错了什么吗?被卡住了,求助。 谢谢

最佳答案

请注意,这与您的情况不完全相同,但我试图在我的实例中读取 PEM 文件 (PKCS7)。 OpenSSL CLI 可以很好地解码它,但是当我试图将它加载到一个对象中时,ruby 一直抛出你描述的相同的嵌套 asn1 错误。

在我的例子中,它需要一个新行,即 PEM 文件末尾的 '\n' 来接受它。

只有当我创建一个空对象并将生成的 PEM 输出与我尝试加载的文件进行比较时,我才算出来。

所以使用 X509 证书可以尝试:

cert = OpenSSL::X509::Certificate.new
cert.to_pem
=> "-----BEGIN CERTIFICATE-----\nMCUwGwIAMAMGAQAwADAEHwAfADAAMAgwAwYBAAMBADADBgEAAwEA\n-----END CERTIFICATE-----\n"

并将其与您的 PEM 文件进行比较

如您所见,它以换行符结尾,而我尝试导入的文件中缺少这一行。

关于ruby - 在 Ruby 上获取 OpenSSL::X509::CertificateError 嵌套 asn1 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24263835/

相关文章:

ruby - 服务器定期无响应,OOM Killer 不活动?

ruby-on-rails - 使用 Prawn 自定义下划线

ruby - 我如何让 RMagick 将图像环绕在圆柱体周围?

ruby - 如何在纯 Ruby(无 Rails)中为 IE8 使用 Capybara?

ios - 为什么 registerForRemoteNotificationTypes 有时会失败?

ruby-on-rails - Rails - Mina - 无法在 database.yml 文件中加载环境变量

iphone - 生成新证书后推送通知不起作用

ios - 远程通知的自定义声音

android - 使用 WebSockets 在移动应用程序上推送通知?(没有 APN 和 GCM)

iphone - iOS - 推送通知对话框从哪里引用应用程序名称