我有来自 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/