使用.p12文件ruby时获取SSL_connect ... sslv3警报握手失败

时间:2012-02-08 17:10:52

标签: ruby-on-rails ruby ssl openssl rest-client

我正在尝试使用p12文件和密码在ruby中使用RestClient打开https页面。

  

p12 = OpenSSL :: PKCS12.new(File.read(“#{RAILS_ROOT} /file.p12”),“pass”)

     

resp = RestClient :: Resource.new(url,:ssl_client_key => p12.key).get

比我得到的:

  

SSL_connect返回= 1 errno = 0状态= SSLv3读取完成A:sslv3警报握手失败

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

我错过了什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

在您的ruby客户端中嵌入此curl调用。它会起作用。

  

注意:如果您使用的是其他ssl版本,则需要将-tlsv1.0添加到curl命令