【问题标题】:Cannot connect SOAP client (savon) to SOAP web services over HTTPS无法通过 HTTPS 将 SOAP 客户端 (savon) 连接到 SOAP Web 服务
【发布时间】:2014-03-26 19:49:56
【问题描述】:

在尝试解决这个问题之前,我不知道证书或 SSL 是如何工作的,所以请耐心等待我的 n00b-ness。

我目前正在使用 Savon gem (v. 0.9.9) 尝试通过 HTTPS 连接到基于 SOAP 的 Web 服务。但是,我很难成功拨打电话。

据我了解 SSL/TSL 协议,客户端向服务器发送初始“客户端问候”消息,服务器以“服务器问候”响应该消息,其中包括服务器的数字证书。客户端将根据本地证书颁发机构包检查该证书的链,以查看是否可以信任该证书。话虽如此,这就是我尝试过的。

  1. 更新 RVM CA 证书:起初,我遇到了 SO thread 中描述的相同错误,我了解到 Ruby 会检查 CA 证书。我还在更新 RVM 使用的 CA 证书时发现了 these instructions。所以我在 iTerm 中运行了以下内容:

        rvm osx-ssl-certs status all
    

    我得到以下输出:

    Certificates for /Users/user-name/.rvm/usr/ssl/cert.pem: Up to date.
    

    但是,这仍然不允许我通过 HTTPs 成功地进行 SOAP 调用。

  2. 检查远程服务器的 SSL 证书是否有效:我从 here 了解了 openssl CI 工具,所以我认为问题可能不是我。也许问题出在证书本身。所以我在 iTerm 中运行了以下命令:

    openssl s_client -connect [HOST]:[PORT] -showcerts
    

    除了证书本身,我在输出中得到了以下内容:

    Verify return code: 18 (self signed certificate)
    

    据我了解,由于该证书是自签名的,因此除非它本身是受信任的 CA,否则它当然永远无法验证。所以问题不在于证书,问题在于我的本地 CA 包。

  3. 更新本地 CA 包:据我了解,cert.pem 是受信任的 CA 证书的列表。我实际上在我的本地机器上发现了两个这样的文件:

    /Users/user-name/.rvm/usr/ssl/cert.pem
    

    和

    /System/Library/OpenSSL/cert.pem
    

    我不确定应该更新哪一个,所以我最终将其中一个文件复制到我的应用程序目录中,将证书复制并粘贴到新的本地 cert.pem 中,然后重试。不幸的是,我现在得到以下信息:

    OpenSSL::SSL::SSLError:
    hostname does not match the server certificate
    

此时,我不确定该怎么做,因为据我所知,证书现在应该被视为受信任的证书。这是我目前的代码:

    $SOAP_CORE = Savon::Client.new do |wsdl, http|
        http.auth.ssl.ca_cert_file = path_to_local_cert.pm
        http.auth.ssl.verify_mode = :peer
        wsdl.document = path_to_remote_wsdl_over_https
    end

【问题讨论】:

  • 你为什么用这么老的Savon版本?

标签: ruby ssl soap https savon


【解决方案1】:

据我了解,由于该证书是自签名的,因此除非它本身是受信任的 CA,否则它当然永远无法验证。所以问题不在于证书,问题在于我的本地 CA 包。

我很困惑你是如何得出这个结论的。自签名证书不会进行验证,因此问题是与证书有关。除非自签名者最终出现在其中,否则更新您的 CA 捆绑包将无济于事,这似乎很愚蠢。

尝试关闭验证。

http.auth.ssl.verify_mode = :none

【讨论】:

  • 我想我只是认为任何证书(自签名或其他)都需要列为“受信任的证书”。添加自签名者对我来说似乎并不傻,但就像我说的那样,我对使用 SSL 和证书非常陌生。我尝试关闭验证,但现在我得到以下输出:(S:Server) Access Denied
  • 您是否需要提供身份验证信息才能访问此站点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 2019-05-20
相关资源
最近更新 更多