2012-01-04 6 views
6

でファイル私はルビー1.8.7(または1.9.2)、どちらも同じ結果とIRBからシンプル OpenSSL::X509::Certificate.new(File.read("testuser.p12")) をやろうとしています。返されるエラーはOpenSSL::X509::CertificateError: nested asn1 errorRubyのエラーは、OpenSSL

ルビーの問題ですか、それとも証明書そのものが不正であることを示唆していますか?私はこのようなエラーを示すamazonの証明書の周りを回っているいくつかの同様のレポートを見つけました。これは証明書そのものであることが判明しました。しかし、それはブラウザで動作します。これを解決する方法に関する提案?

答えて

10

"testuser.p12"は、postfixに従ってPKCS#12ファイルのようです。 PKCS#12形式をX.509証明書形式として読み取ると、ASN.1の復号化エラーが発生します。

代わりにOpenSSL::PKCS12.new(File.read("testuser.p12"))を実行してください。ファイルが(それは普通のことだ)パスフレーズで保護されている場合は、OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")

ようPKCS12.newのための2番目のパラメータとしてパスフレーズを与えるあなたはPKCS12#certificatePKCS12#ca_certs方法により証明書とCA証明書を抽出することができます。

p12 = OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass") 
p p12.certificate 
p p12.ca_certs 
+0

ありがとうございました!それは問題のようでした。私は証明書をあまり扱わなければならず、明らかに悪い例に従っていました。あなたの投稿と[この1つ](http://stackoverflow.com/questions/8167579/connect-to-web-server-via-phonegap-with-ssl-and-certificate)は大いに助けました – yodafan86

+0

更新:私は理由を理解できません。それは文字通り裁判の実行の間に爆破されました。そして現在はirbでも、p12 = OpenSSLの行は4つのパラメータを必要としていると主張していますか? net/httpsを要求する際にいくつかの依存した変更がありましたか?他に2つのパラメータが必要ですか?どんな助けも大いにありがとう、この1つは私に困惑している! – yodafan86

+0

あなたはそれを解決できましたか? – shailesh

関連する問題