Html RubyonRails SSL\u连接错误

Html RubyonRails SSL\u连接错误,html,ruby-on-rails,ruby,openssl,Html,Ruby On Rails,Ruby,Openssl,我有以下控制器-courses-controller.rb: class CoursesController < ApplicationController def index @search_term = params[:looking_for] || 'jhu' @courses = Coursera.for(@search_term) end end 以及以下视图-index.html.erb: <h1>Searching for - <%

我有以下控制器-courses-controller.rb:

class CoursesController < ApplicationController
  def index
    @search_term = params[:looking_for] || 'jhu'
    @courses = Coursera.for(@search_term)
  end
end
以及以下视图-index.html.erb:

<h1>Searching for - <%= @search_term %></h1>

<table border="1">
    <tr>
        <th>Image</th>
        <th>Name</th>
        <th>Description</th>
    </tr>
    <% @courses.each do |course| %>
    <tr class=<%= cycle('even', 'odd') %>>
        <td><%= image_tag(course["smallIcon"])%></td>
        <td><%= course["name"] %></td>
        <td><%= course["shortDescription"] %></td>
    </tr>
    <% end %>
</table>
搜索-
形象
名称
描述
但是,当我这样做时,我会得到以下错误:

SSL_connect返回=1 errno=0 state=SSLv3读取服务器证书B:证书验证失败 应用程序跟踪|框架跟踪|完整跟踪 app/models/coursera.rb:9:in
for'
app/controllers/courses\u controller.rb:4:in
index'


请告诉我该怎么办。什么都不管用

它似乎在抱怨没有有效的证书?如果是这种情况,您可以告诉HTTParty暂时忽略无效的证书,如下所示:

class Coursera
    include HTTParty

    default_options.update(verify: false)

...

如果这样做有效,那么您可能想找出它认为证书无效的原因。

上面Mike给出的答案对您有效,因为您忽略了无效的证书

好吧,这可能是一个解决办法来完成这件事。但不建议这样做,因为您无法将此代码用于生产

因此,为了开发环境,最好忽略这一点

只需将以下代码块添加到
应用程序的末尾。rb
你应该可以走了

if Rails.env.development?
  OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
end
证书包含以下DNS名称:

$ openssl s_client -connect api.coursera.org:443 -tls1 -servername api.coursera.org | \
    openssl x509 -text -noout | grep DNS
...
    DNS:*.coursera.org, DNS:coursera.org
当您连接到
https://localhost:3000/...
,证书必须包含本地主机的DNS名称

通用名(CN)并不重要。重要的是主题备用名称(SAN),它们必须包括用户要与服务器联系的所有DNS名称

另请参见以下有关创建格式良好的SSL证书的内容:


尝试将get(“”,query:{query:term})[“elements”]更改为get(“”,query:{query:term,verify:false})[“elements”]verify:false跳过SSL认证是的,这很有效!现在,为什么证书无效?我从哪里可以获得有效的证书?因此,这是一个有效的证书,根据提供的信息,我对您的服务器了解不够,无法确切说明如何获得,但您需要将godaddy证书颁发机构(证书颁发者)添加到rails正在使用的服务器上的存储中。这是本地虚拟机吗?是的,它是本地虚拟机。请参见此,将HttpParty的证书授权文件设置为您的虚拟机:
base_uri 'https://api.coursera.org/api/catalog.v1/courses'
...
$ openssl s_client -connect api.coursera.org:443 -tls1 -servername api.coursera.org | \
    openssl x509 -text -noout | grep DNS
...
    DNS:*.coursera.org, DNS:coursera.org