Ruby on Rails Bundler与GitHub SSL协议版本错误技术求助
嘿,这个问题我帮不少维护老Rails项目的开发者解决过!你碰到的fatal: unable to access 'https://github.com/nomaddc/country_select.git/': error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version错误,核心原因是你的Ruby 2.3.3环境自带的OpenSSL版本太老旧,不支持GitHub现在要求的TLS 1.2+安全协议——GitHub早在几年前就彻底停用了TLS 1.0和1.1,旧版本的OpenSSL根本连不上仓库。
下面给你几个可行的解决方案,按从易到难排序:
方案1:换用SSH地址替代HTTPS地址(最快应急)
这个方法不用升级任何环境,直接修改Gemfile的仓库地址就行:
- 打开项目根目录的
Gemfile,找到这行:gem 'country_select', git: 'https://github.com/nomaddc/country_select.git' - 把HTTPS地址替换成SSH格式:
gem 'country_select', git: 'git@github.com:nomaddc/country_select.git' - 保存后重新运行
bundle install或bundle update
⚠️ 前提:你已经在本地生成过SSH密钥,并把公钥添加到了你的GitHub账号里。如果还没配,先在命令行执行:
ssh-keygen -t ed25519 -C "你的GitHub绑定邮箱"
然后把本地~/.ssh/id_ed25519.pub(Windows是C:\Users\你的用户名\.ssh\id_ed25519.pub)里的内容复制到GitHub账号的「SSH and GPG keys」设置页面里。
方案2:升级Ruby环境(最彻底的长期解决方案)
Ruby 2.3.x已经是停止维护多年的古董版本了,不仅有SSL协议问题,还有一大堆未修复的安全漏洞。如果你的项目还打算长期维护,建议升级到至少Ruby 2.6+(优先选官方支持的稳定版本,比如3.0.x或3.1.x):
- 如果是Mac/Linux,推荐用
rbenv或rvm来管理Ruby版本:- 安装rbenv(比如用Homebrew:
brew install rbenv) - 安装目标Ruby版本:
rbenv install 3.0.6 - 给当前项目设置这个版本:
rbenv local 3.0.6 - 重新安装bundler:
gem install bundler - 最后运行
bundle install
- 安装rbenv(比如用Homebrew:
- 如果是Windows,直接下载最新版的RubyInstaller(记得选带Devkit的版本),安装后替换掉旧的Ruby 2.3.3环境即可。
方案3:强制Git使用TLS 1.2(临时应急,不一定适用于所有旧环境)
如果暂时不想改Gemfile也不想升级Ruby,可以试试强制Git使用TLS 1.2协议:
- 在命令行执行:
git config --global http.sslVersion TLSv1.2 - 然后再运行
bundle install或bundle update
⚠️ 注意:如果你的Git版本也非常老旧,可能不支持这个配置,这时候还是得回到前两个方案。
内容的提问来源于stack exchange,提问作者rails9231

