SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 解决办法

解决Ruby SSL证书问题
本文介绍了在配置Ruby环境时遇到的SSL证书验证失败问题及两种解决方案:一是采用http协议代替https;二是自行下载证书并配置环境变量。同时分享了解决安装权限不足的方法。

转载自:https://blog.youkuaiyun.com/ysk575664647/article/details/52965737

在配置环境的时候,因为下面这个错误导致sass总是安装失败,后续步骤无法进行。

Error fetching https://gems.ruby-china.org/:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://gems.ruby-china.org/specs.4.8.gz)

意思很明显,就是SSL证书验证不了,Ruby自己没有SSL证书,所以https请求被服务器拒绝。

针对这种情况,有两种解决办法,一种是不使用https协议来请求数据,用http协议来代替之,因为http协议不需要验证SSL证书,所以上面那个问题也就不存在了。

第二种方法,既然Ruby自己没有携带SSL证书,那我就自己下载一个证书添加给他不就好了,这样Ruby有了SSL证书,https协议也就不会被服务器拒绝了。

Step1:下载Ruby证书,这里是下载链接

链接: http://pan.baidu.com/s/1gfzAJKZ 密码: ithw

Step2:下载完成以后将证书放置在一个不经常改动的地方,我放置在c:\Program Files\Ruby22\lib下。之后在用户环境变量中新建一个变量,名字为SSL_CERT_FILE,值设置为证书的完整路径,例如我的路径需要设置为c:\Program Files\Ruby22\lib\ca-bundle.crt,完成以后将cmd窗口重启,之后再进行操作就成功了。

 

 

Tips:我在配置过程中遇到几个其他的问题,在这里一并提醒下后来者。

1. Ruby因为防火墙的原因,需要配置成国内的镜像,原本国内的镜像地址是https://ruby.taobao.org,现在已经改为了https://gems.ruby-china.org/,这个问题需要注意下。

2. 如果你在安装sass过程中遇到了以下错误

ERROR: While executing gem (Errno::EACCES) 
<span style="white-space:pre">	</span>Permission denied @ rb_sysopen......

这是因为sass安装权限不够造成的,关掉当前cmd,然后重新以管理员身份运行cmd,再继续操作就好了。

 

最后把我看到的一篇讲解如何安装Ruby及其他环境的文章分享给大家

http://www.cnblogs.com/yyman001/p/install_sass_compass_for_window.html

 

<think>我们遇到的问题是在执行 `gem install bundle` 时出现 SSL 连接错误,具体错误信息是: `SSL_connect returned=1 errno=0 state=SSLv2/v3 read server` 根据提供的引用,我们知道这通常与 SSL 证书验证失败有关。解决方法是下载一个证书文件并设置环境变量指向该文件。 具体步骤如下: 1. **下载证书文件**: 从 http://curl.haxx.se/ca/cacert.pem 下载证书文件,保存到本地(例如 `C:\cacert.pem`)。 2. **设置环境变量**: 设置一个名为 `SSL_CERT_FILE` 的环境变量,值为证书文件的完整路径(例如 `C:\cacert.pem`)。 在 Windows 系统中,可以通过以下方式设置: - 打开系统属性(右键点击“此电脑”->属性->高级系统设置) - 在“高级”选项卡中点击“环境变量” - 在“系统变量”中点击“新建” - 变量名:`SSL_CERT_FILE` - 变量值:`C:\cacert.pem`(注意替换为实际路径) - 点击确定保存 或者在命令提示符中临时设置(只对当前命令提示符窗口有效): ```cmd set SSL_CERT_FILE=C:\cacert.pem ``` 3. **重新运行 gem 命令**: 在设置环境变量后,重新运行安装命令(注意:应该安装的是 `bundler`,而不是 `bundle`): ```cmd gem install bundler ``` 4. **如果问题仍然存在**,可以尝试以下额外步骤: - 更新 RubyGems 到最新版本: ```cmd gem update --system ``` - 检查 Ruby 和 RubyGems 版本是否过旧,考虑升级 Ruby 版本。 - 临时跳过 SSL 验证(不推荐,仅用于测试): ```cmd gem install bundler --source http://rubygems.org/ -V ``` 但请注意,使用 HTTP 而不是 HTTPS 存在安全风险。 5. **对于使用代理的情况**: 如果您的网络需要通过代理访问互联网,请设置 `HTTP_PROXY` 或 `HTTPS_PROXY` 环境变量。 例如: ```cmd set HTTP_PROXY=http://your-proxy-address:port set HTTPS_PROXY=http://your-proxy-address:port ``` 6. **更换 RubyGems 源**(如果证书问题持续存在,可以暂时切换到国内镜像源,如 Ruby China): ```cmd gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ gem sources -u ``` 然后再次尝试安装。 注意:国内用户使用 Ruby China 源通常可以避免证书问题,因为国内镜像服务器使用了受信任的证书。 总结:解决此问题的核心步骤是下载证书并设置 `SSL_CERT_FILE` 环境变量。 如果按照上述步骤操作后问题仍然存在,请检查证书文件路径是否正确,环境变量是否生效(可以在命令提示符中执行 `echo %SSL_CERT_FILE%` 来检查),以及网络连接是否正常。 --- §§相关问题§§ 1. 如何永久设置 Windows 环境变量? 2. 如何在 Linux 或 macOS 上解决 RubyGems 的 SSL 证书问题? 3. 如何验证 RubyGems 的 SSL 配置是否正确? 4. 为什么使用国内镜像源可以解决 SSL 证书问题? 5. 除了 Bundler,还有哪些常见的 Ruby gem 在安装时可能遇到 SSL 问题? </think>### 解决 `gem install bundle` 的 SSL 连接错误 您遇到的 `SSL_connect returned=1 errno=0 state=SSLv2/v3 read server` 错误通常是由 SSL 证书验证失败引起的。以下是完整的解决方案: #### 1. **下载并配置 SSL 证书** 这是最根本的解决方法: ```bash # 下载 CA 证书包 curl -O https://curl.se/ca/cacert.pem # 设置环境变量(Windows) set SSL_CERT_FILE=C:\path\to\cacert.pem # Linux/macOS export SSL_CERT_FILE=/path/to/cacert.pem ``` 证书下载后需放置到永久目录(如 `C:\RubySSL\` 或 `/usr/local/ssl/`),并通过系统属性设置 **永久环境变量** [^1][^2]。 #### 2. **临时解决方案(不推荐)** 在命令中添加 `--source http://rubygems.org/` 强制使用 HTTP: ```bash gem install bundler --source http://rubygems.org/ ``` > ⚠️ 警告:这会降低安全性,仅限临时测试 #### 3. **更新 Ruby 环境** ```bash # 更新 RubyGems gem update --system # 检查环境完整性(Windows) ridk install ``` #### 4. **验证证书配置** ```bash # 检查环境变量是否生效 echo %SSL_CERT_FILE% # Windows printenv | grep SSL_ # Linux/macOS ``` #### 5. **更换国内镜像源(推荐国内用户)** ```bash gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ gem install bundler ``` --- ### 问题排查流程图 ```mermaid graph TD A[SSL连接错误] --> B{是否配置SSL_CERT_FILE?} B -->|是| C[检查证书路径] B -->|否| D[下载cacert.pem] C --> E[路径是否正确?] E -->|是| F[更新RubyGems] E -->|否| G[修正路径] D --> H[设置环境变量] H --> F F --> I{问题解决?} I -->|否| J[更换国内镜像源] I -->|是| K[安装成功] ``` ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值