Html RubyonRails SSL\u连接错误
我有以下控制器-courses-controller.rb: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 - <%
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:infor'
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证书的内容:
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