6
require 'openssl'

if ARGV.length == 2
    pkcs12 = OpenSSL::PKCS12.new(File.read(ARGV[0]), ARGV[1])
    p pkcs12.certificate
else
    puts "Usage: load_cert.rb <path_to_cert> <cert_password>"
end

これを実行すると、Windows ではエラーが発生しますが、Linux では発生しません。

エラー:

OpenSSL::PKCS12::PKCS12Error: PKCS12_parse: mac 検証エラー
from (irb):21:in initialize
from (irb):21:in new
from (irb):21
from C:/Ruby192/bin/irb:12:in<main>

4

1 に答える 1

8
File.read("UserCert.p12", "rb")

問題はルビーがデフォルトでファイルをテキストとして読み取り、ファイルをバイナリとして強制的に読み取る必要があることでした。これで問題が解決します

于 2012-04-26T02:38:24.373 に答える