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
Run Code Online (Sandbox Code Playgroud)
运行它会在Windows上产生错误,但在linux中不会产生错误
错误:
OpenSSL :: PKCS12 :: PKCS12Error:PKCS12_parse:mac验证失败
来自(irb):21:ininitialize
from(irb):21:innew
from(irb):21
from C:/ Ruby192/bin/irb:12:in<main>
File.read("UserCert.p12", "rb")
Run Code Online (Sandbox Code Playgroud)
问题是ruby默认读取文件为文本,需要强制读取文件为二进制文件,它解决了问题