Rails 7部署至Render.com遇OpenSSL::Cipher::CipherError求助
Rails API部署到Render.com时的ActiveSupport加密错误解决办法
错误信息
Mar 15 04:18:01 PM Installing bootsnap 1.13.0 with native extensions Mar 15 04:18:11 PM Bundle complete! 13 Gemfile dependencies, 82 gems now installed. Mar 15 04:18:11 PM Gems in the groups 'development' and 'test' were not installed. Mar 15 04:18:11 PM Bundled gems are installed into `/opt/render/project/.gems` Mar 15 04:18:16 PM rails aborted! Mar 15 04:18:16 PM ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage Mar 15 04:18:16 PM /opt/render/project/src/config/environment.rb:5:in `<main>' Mar 15 04:18:16 PM Mar 15 04:18:16 PM Caused by: Mar 15 04:18:16 PM OpenSSL::Cipher::CipherError: Mar 15 04:18:16 PM /opt/render/project/src/config/environment.rb:5:in `<main>' Mar 15 04:18:16 PM Tasks: TOP => db:migrate => db:load_config => environment Mar 15 04:18:16 PM (See full trace by running task with --trace) Mar 15 04:18:17 PM ==> Build failed 😞 Mar 15 04:18:17 PM ==> Generating container image from build. This may take a few minutes...
问题原因
该错误源于Rails生产环境的SECRET_KEY_BASE配置缺失或不匹配,导致ActiveSupport无法正确解密敏感数据,进而触发OpenSSL加密异常。
解决步骤
配置Render环境变量
- 登录Render控制台,打开你的Rails API项目
- 进入「Environment」标签页,检查是否存在
SECRET_KEY_BASE变量 - 若未设置,在本地终端运行
rails secret生成新的加密密钥,复制输出的字符串 - 在Render的环境变量列表中添加
SECRET_KEY_BASE,值填入刚才复制的密钥
验证项目配置文件
- 若使用旧版本Rails的
config/secrets.yml,确保production区块配置为:production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> - 若使用Rails 5.2+的credentials系统,确保生产环境credentials已正确配置,或直接通过环境变量覆盖密钥
- 若使用旧版本Rails的
重新触发构建
在Render项目页面点击「Manual Deploy」→「Clear build cache & deploy」,确保新环境变量生效,重新执行构建部署
内容的提问来源于stack exchange,提问作者Artur Gouveia
相关产品推荐
相关产品推荐

