【问题标题】:Ruby on Rails - Savon certificate requestRuby on Rails - Savon 证书请求
【发布时间】:2015-11-23 20:36:30
【问题描述】:

我正在尝试使用 Ruby on Rails 和 gem Savon 使用一个肥皂网络服务。

我的做法如下:

Savon.client(
    wsdl: 'web_service_url',
    ssl_verify_mode: :peer, 
    ssl_cert_file: 'cert_path', 
    ssl_cert_key_file: 'key_path'
).operations

然后得到错误:HTTPI::SSLError: SSL_connect returned=1 errno=0 state=unknown state: certificate verify failed

但是,如果我使用相同的 证书keyCURL 发出请求,则效果很好。

curl -k --cert 'cert_path' --key 'key_path 'web_service_url'

什么问题,如何解决?

【问题讨论】:

  • 有时这与编译 Ruby 所针对的加密库有关,尽管偶尔会出现严重过时的 Ruby 版本的问题。您正在运行什么平台和 Ruby 版本?
  • 我使用的是 Ruby 2.2.3

标签: ruby-on-rails ruby curl savon


【解决方案1】:

输出是什么

print OpenSSL::OPENSSL_VERSION

忽略证书并指定怎么办

:ssl_verify_mode: :none

【讨论】:

  • 如果我将 ssl_verify_mode 设置为 none,我得到:HTTPI::SSLError: SSL_read: ssl handshake failure
  • OpenSSL::OPENSSL_VERSION => "OpenSSL 1.0.1k 8 Jan 2015"
  • 我在 Windows 7x64 上使用 Ruby 2.1.6p336,我的 OpenSSL::OPENSSL_VERSION 显示“1.0.1l 2015 年 1 月 15 日”。我想知道为什么 :none 电话没有通过。是否已经消除了其他参数? (ssl_cert_*)
  • 出现问题是因为服务器没有此证书的 CA 密钥。添加后,效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-22
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多