RestClient.get返回证书验证失败

kro*_*761 5 ruby ssl rest-client

我正在使用RestClient和Ruby v.2.2.1尝试使用内部测试API服务器.

这基本上是代码:

url = "https://10.10.0.10/thing/i/want/to/get"
header = {
      :content_type => "application/json",
      :"x-auth-token" => "testingtoken"
  }
response = RestClient.get url, header
Run Code Online (Sandbox Code Playgroud)

这是我收到的失败消息:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (RestClient::SSLCertificateNotVerified)
Run Code Online (Sandbox Code Playgroud)

如果我正确阅读,看起来Ruby无法接受SSL安全证书.此调用适用于Chrome应用Postman,但为了使其正常工作,我必须点击Chrome本身的网址并接受连接不安全(但仍然继续),然后它将在邮递员中工作.

有没有办法忽略证书失败并继续在Ruby中继续?

SoA*_*Man 6

尝试使用#execute(&block)verify_ssl设置为false.

:verify_ssl启用ssl验证,可能的值是常量OpenSSL::SSL::VERIFY_*,默认为OpenSSL::SSL::VERIFY_PEER

url = "https://10.10.0.10/thing/i/want/to/get"
headers = {
  :content_type => "application/json",
  :"x-auth-token" => "testingtoken"
}

RestClient::Request.execute(
  :url => url, 
  :method => :get, 
  :headers => headers,
  :verify_ssl => false
)
Run Code Online (Sandbox Code Playgroud)

见:http://www.rubydoc.info/github/rest-client/rest-client/RestClient/Request#execute-instance_method


RVM

RVM用户的其他解决方案来自:https://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html

这个关于Github的讨论终于给出了解决方案:不知何故RVM附带了一个预编译版本的ruby,它与一个/etc/openssl查看它的证书的openssl静态链接.

你想做的不是使用任何预编译的红宝石,而是在本地机器上编译ruby,如下所示: rvm install 2.2.0 --disable-binary

  • 您的第一个解决方案是不安全的解决方法,并且违背了拥有 SSL 证书的目的。 (2认同)