2012-02-08 77 views
2

我正嘗試使用p12文件和密碼在Ruby中使用RestClient打開https頁面。獲取SSL_connect ...使用.p12文件時,sslv3警報握手失敗ruby

P12 = OpenSSL的:: PKCS12.new(File.read( 「#{RAILS_ROOT} /file.p12」), 「通」)

RESP = RESTClient實現:: Resource.new(URL, :ssl_client_key => p12.key)。獲得

比我得到:

所以SSL_connect返回= 1個錯誤號= 0狀態的SSLv3 =讀完成一個:SSLV3警報握手失敗

(RestClient不是強制性的 - 其他任何事情都可以)

我錯過了什麼?

回答

1

您必須安裝openssl軟件包並重新安裝ruby。 不知道,重要的是:

rmdir $rvm_path/usr/ssl/certs 
ln -s /etc/ssl/certs $rvm_path/usr/ssl 

Necesery:

rvm pkg install openssl 
rvm <(if exist) re>install <RUBY_VERSION> --with-openssl-dir=$rvm_path/usr 
+0

第一步小心翼翼的對我來說。 $ rvm_path下沒有任何ssl目錄,因此將其完美連接起來。我不需要做第二部分 - 我已經使用SSL構建了ruby,但是RVM本身缺少證書。謝謝! – 2012-04-26 22:21:46

0

您需要導入file.p12文件到您的nssdb位置。

mkdir /root/nssdb 
pk12util -i /path-to/your/file.p12 -d /root/nssdb 
certutil -L -d /root/nssdb/ 
export SSL_DIR = /root/nssdb 

curl -X POST -H "Content-Type: text/xml" --data "#{xml}" --cert cert:password "https://yoururl.com" -v -k 
chmod -R 777 /root/nssdb 
chown -R user /root/nssdb 

將此curl調用嵌入到您的ruby客戶端中。它會工作。

注:如果您使用的是不同的SSL版本,你需要--tlsv1.0添加到curl命令