【发布时间】:2016-09-26 21:15:46
【问题描述】:
我是一个刚开始学习 Ruby 的新手,所以请耐心等待。 我正在做 Ruby 挑战,我需要在我的计算机上运行一个启动 Web 服务器的 Ruby 文件。首先,我使用命令在命令行中运行此应用程序:
ruby 应用程序.rb
然后我将此 URL 粘贴到我的浏览器并访问我的本地服务器:
在这个本地网页上,我单击连接到 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