码迷,mamicode.com
首页 > 其他好文 > 详细

in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

时间:2014-09-29 21:12:11      阅读:631      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   使用   ar   strong   数据   sp   2014   

最近在用ruby的一些库的时候,总是出现这个错误

在使用net/imap库的时候,或者net/http库(主要是用到了https,https是用了ssl) 的时候,具体如下:

bubuko.com,布布扣

 

错误提示:E:/Ruby200/lib/ruby/2.0.0/net/imap.rb:1454:in `connect‘: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

 

由提示可以得出,是证书验证失败了。为什么呢?

SSL连接,是安全套接层连接,是在传输层对数据进行加密从而保护网络通信中传输的数据。使用这个的时候就需要ssl证书。而ruby中是默认不验证证书的,在net/http库的源码里

有一个实例变量@use_ssl = false,使用ssl默认为假,也就是不使用。(这个我也不太懂,可以忽略)

 

 

具体来说,步骤如下

1.下载证书。有的证书好像太早了,不起作用。我用了的是这个http://curl.haxx.se/docs/caextract.html,在这个界面下载cacert.pem就可以了,这个就是证书了。

2.然后将证书放在合适的位置。一般是ruby或者rails安装地方的根目录下,例如我的:E:\Ruby200\cacert.pem

3.设置环境变量,在命令行(cmd)里,输入 set SSL_CERT_FILE=E:\Ruby200\cacert.pem,这只是临时的环境变量。如果要是固定的环境变量,转下一步。

4.置固定环境变量。win7下 控制面板->系统和维护->系统->高级系统设置(或者 改变设置->高级),进入环境变量,选择系统变量,新建。输入如下

bubuko.com,布布扣

这样就可以了。

 

具体参考:https://gist.github.com/fnichol/867550,感谢作者。

 

in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

标签:style   blog   http   使用   ar   strong   数据   sp   2014   

原文地址:http://www.cnblogs.com/smallbottle/p/4000825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!