2012-04-18 8 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 

L'esecuzione di questo produce errore sulle finestre, ma non in Linux.Perché OpenSSL su Windows genera l'errore, ma non su CentOS: PKCS12_parse: mac verificare fallimento (OpenSSL :: :: PKCS12 PKCS12Error)

Errore:

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

Basato sulla vostra risposta, dovrebbe presentare un bug con il progetto Ruby. Se ti prende, ne prenderà altri. Ruby non può aggiustarlo a meno che non lo sappiano. Vedi [Ruby Issue Tracking System] (https://bugs.ruby-lang.org/). – jww

risposta

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

problema è stato rubino di default leggere il file come testo e la necessità di forzare leggere il file come binario, si risolve il problema

+1

Questo non ha funzionato per me, ma quanto segue ha fatto 'File.binread ('UserCert.p12')' – jmccure

+0

dipende da quale versione ruby ​​stai usando, sta succedendo ruby ​​1.9.2? –

+0

sto usando ruby ​​2.0.0p353 – jmccure

Problemi correlati