2

我正在尝试使用 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 不是强制性的 - 其他任何事情都可以)

我错过了什么?

4

2 回答 2

1

您必须安装 openssl 包并重新安装 ruby​​。不确定这很重要:

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

必需品:

rvm pkg install openssl
rvm <(if exist) re>install <RUBY_VERSION> --with-openssl-dir=$rvm_path/usr
于 2012-04-26T21:06:14.537 回答
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 版本,则需要在 curl 命令中添加 --tlsv1.0

于 2017-03-05T21:03:14.510 回答