【问题标题】:Faraday::SSLError at /callback handshake alert: unrecognized_nameFaraday::SSLError 在/回调握手警报:unrecognized_name
【发布时间】:2016-09-26 21:15:46
【问题描述】:

我是一个刚开始学习 Ruby 的新手,所以请耐心等待。 我正在做 Ruby 挑战,我需要在我的计算机上运行一个启动 Web 服务器的 Ruby 文件。首先,我使用命令在命令行中运行此应用程序:

ruby 应用程序.rb

然后我将此 URL 粘贴到我的浏览器并访问我的本地服务器:

http://localhost:4567

在这个本地网页上,我单击连接到 Internet 上的 Web 服务器的链接,我应该在其中进行身份验证。到目前为止,一切正常,但在身份验证期间出现错误。如果在我的授权过程中没有任何错误,应用程序将从互联网服务器检索我的个人资料数据。这是我得到的错误:

Faraday::SSLError 在 /callback 握手警报:unrecognized_name。

我已经尝试解决这个问题两天了。我做了什么:

1) 我认为这个错误与 Java 有某种联系。我尝试使用所有版本的 Java(6、7、8)运行这个应用程序,因为人们说他们在更新到更高的 Java 版本时遇到了同样的问题。不幸的是,我的 Ruby 版本不支持 Java 6。

2) 可能的解决方案已在此处发布SSL handshake alert: unrecognized_name error since upgrade to Java 1.7.0),与 Stackoverflow 中关于“握手警报:无法识别的名称”错误的 20 篇类似帖子中的此处相同,建议设置 jsse.enableSNIExtension 属性。但我无法理解这些答案中的任何一个,特别是在哪里应用此代码。然后我找到了这个链接https://community.jivesoftware.com/docs/DOC-140837 建议打开Java 控制面板(我是通过系统偏好设置Java 完成的)。我浏览了 Java 选项卡并单击“查看”并将“-Djsse.enableSNIExtension=false”添加到运行时参数并应用它。

3) 另一种可能的解决方案在这里找到了Disable SNI Extension for Ruby net/http - Using IP address with SSL/TLS(ZebGir 给出的答案),但我在我的 .rvm 甚至整个系统中都没有找到文件 *http.rb。

请就我的问题可能的解决方案提供任何提示或链接。 我的系统是 Mac OS X El Capitan。 RVM 版本 1.27。 Java 1.8 版。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    您是否尝试过为您的法拉第库禁用 ssl 设置?类似的东西:

    connection = Faraday.new 'https://example.com', :ssl => false
    

    另见:https://github.com/lostisland/faraday/wiki/Setting-up-SSL-certificates

    【讨论】:

    • 1) 我的所有系统中都没有看到任何法拉第库。或者也许我做错了什么? 2)我已经检查了您发送的链接。我试图更改法拉第初始化程序以将此路径包含为 ca_path 变量,但我的文件夹 /System/Library/OpenSSL/certs 是空的。在 /System/Library/OpenSSL 中有三个目录和一个文件:/certs、/misc、/private 和文件 openssl.cnf。我不知道该放在哪里:connection = Faraday::Connection.new 'encrypted.google.com', :ssl => { :ca_path => "/usr/lib/ssl/certs" }。我误会了什么?
    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    相关资源
    最近更新 更多