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

चल रहा है इस खिड़कियों पर त्रुटि पैदा करता है लेकिन लिनक्स में नहीं।क्यों खिड़कियों पर openssl त्रुटि लेकिन centos पर नहीं पैदा करता है: PKCS12_parse: मैक की पुष्टि की विफलता (OpenSSL :: PKCS12 :: PKCS12Error)

त्रुटि:

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

अपने जवाब के आधार पर हल करती है, तो आप रूबी परियोजना के साथ एक बग फाइल करना चाहिए। अगर यह आपको मिला, तो यह दूसरों को मिलेगा। रुबी इसे तब तक ठीक नहीं कर सकता जब तक कि वे इसके बारे में नहीं जानते। [रूबी अंक ट्रैकिंग सिस्टम] देखें (https://bugs.ruby-lang.org/)। – jww

उत्तर

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

समस्या थी डिफ़ॉल्ट रूप से गहरे लाल रंग का पाठ के रूप में फ़ाइल को पढ़ने और द्विआधारी के रूप में फ़ाइल को पढ़ने के लिए मजबूर करने की जरूरत है, यह समस्या

+1

यह मेरे लिए काफी काम नहीं करता था, लेकिन निम्नलिखित ने 'file.binread (' UserCert.p12 ') ' – jmccure

+0

किया है, यह निर्भर करता है कि आप किस रूबी संस्करण का उपयोग कर रहे हैं, क्या यह रूबी 1.9.2 हो रहा है? –

+0

मैं रूबी 2.0.0p353 – jmccure