我是一个刚开始学习Ruby的新手,所以请耐心等待我。 我正在做Ruby挑战,我需要运行一个Ruby文件,在我的计算机上启动一个Web服务器。首先,我使用命令在命令行中运行此应用程序:
ruby app.rb
然后我将此URL粘贴到我的浏览器并访问我的本地服务器:
在这个本地网页上,我单击连接到Internet上的Web服务器的链接,我应该对其进行身份验证。直到这一刻一切正常,但在身份验证期间我遇到了错误。如果在我的授权期间没有任何错误,应用程序将从Internet服务器检索我的配置文件数据。这是我得到的错误:
法拉第:: AT /回调SSLError 握手警报: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中关于“handshake alert:unrecognized_name”错误的20个类似帖子相同,建议设置jsse.enableSNIExtension属性。但我无法理解任何这些答案,特别是在哪里应用此代码。然后我找到了这个链接https://community.jivesoftware.com/docs/DOC-140837,建议打开Java控制面板(我是通过系统偏好设置Java完成的)。我浏览了Java选项卡并单击View并将“-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。
答案 0 :(得分:0)
您是否尝试过禁用法拉第库的ssl设置?类似的东西:
connection = Faraday.new 'https://example.com', :ssl => false
另见:https://github.com/lostisland/faraday/wiki/Setting-up-SSL-certificates