为什么openssl在Windows上产生错误而不是在centos上:PKCS12_parse:mac验证失败(OpenSSL :: PKCS12 :: PKCS12Error)

Nau*_*nvi 6 ruby openssl

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:in initialize
from(irb):21:in new
from(irb):21
from C:/ Ruby192/bin/irb:12:in<main>

Nau*_*nvi 8

File.read("UserCert.p12", "rb")
Run Code Online (Sandbox Code Playgroud)

问题是ruby默认读取文件为文本,需要强制读取文件为二进制文件,它解决了问题

  • 这对我来说不太有用,但是下面做了`File.binread('UserCert.p12')` (2认同)