2012-08-28 59 views
1

我已經使用Adobe X生成了一個自簽名證書,並導出了一個pfx文件(用於我的私鑰)和一個.cer文件(用於證書)。OpenSSL沒有足夠的數據

然後我嘗試蒐集證書,與密鑰一起,但由於某些原因,OpenSSL是給錯誤

OpenSSL::X509::CertificateError: not enough data 

這裏是我的代碼

require 'openssl' 

CERTFILE = "test.cer" 
RSAKEYFILE = "test.pfx" 

# Open certificate files 

cert = OpenSSL::X509::Certificate.new(File.read CERTFILE) 
key = OpenSSL::PKey::RSA.new(File.read RSAKEYFILE) 

我的證書是用生成Adobe X閱讀器,並且是自簽名證書。它正在正常工作,簽署pdf文件...

我可以做什麼使這項工作?

回答

3

顯然OpenSSL直接從.cer文件讀取時遇到了一些問題,對於密鑰,我們應該只使用private_key,並且pfx同時具有privatekey和cert。

所以,我安裝了OpenSSL在本地,並且第一converted我.cer證書與下面的命令.PEM:

C:\OpenSSL-Win32\bin>openssl x509 -inform der -in "c:\mydir\test.cer" -out "C:\mydir\certificate.pem" 

,然後提取從PFX文件我的專用密鑰(基於this網站):

C:\OpenSSL-Win32\bin>openssl pkcs12 -in "c:\mydir\test.pfx" -nocerts -out "c:\mydir\test_pk.pem" 

只要確保您有pfx pwd並在提取私鑰時選擇密碼即可。

下面是最終代碼:

require 'openssl' 

CERTFILE = "certificate.pem" 
RSAKEYFILE = "test_pk.pem" 
passphrase = "your chosen passphrase for the private key" 
key4pem=File.read RSAKEYFILE 

# Open certificate files 

cert = OpenSSL::X509::Certificate.new(File.read CERTFILE) 
key = OpenSSL::PKey::RSA.new key4pem, passphrase 

,瞧:-),我們已經成功地映射到內存中了我們的證書和專用密鑰,並且可以把它的用途,如答案here

相關問題