2012-04-18 7 views
5
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 

Ausführen dieser Fehler auf Windows erzeugt, aber nicht in Linux.Warum openssl auf Windows erzeugt Fehler, aber nicht auf CentOS: PKCS12_parse: mac überprüfen Fehler (OpenSSL :: PKCS12 :: PKCS12Error)

Fehler:

OpenSSL::PKCS12::PKCS12Error: PKCS12_parse: mac verify failure
from (irb):21:in initialize
from (irb):21:in new
from (irb):21
from C:/Ruby192/bin/irb:12:in <main>

+0

auf Ihre Antwort Basierend, Sie sollte einen Bug mit dem Ruby-Projekt einreichen. Wenn es dich hat, wird es andere bekommen. Ruby kann es nur reparieren, wenn sie davon wissen. Siehe [Ruby Issue Tracking System] (https://bugs.ruby-lang.org/). – jww

Antwort

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

Problem wurde Rubin von Standarddatei als Text lesen und müssen zwingen Datei als binär zu lesen, löst es das Problem

+1

Dies funktionierte nicht ganz für mich, aber das folgende 'File.binread ('UserCert.p12')' – jmccure

+0

es hängt davon ab, welche Ruby-Version verwenden Sie, ist es ruby ​​1.9.2 passiert? –

+0

Ich benutze Ruby 2.0.0p353 – jmccure

Verwandte Themen