You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7部署Heroku遇加密错误,WSL/Windows跨环境问题求助

问题原因

核心原因是Windows与WSL2 Ubuntu环境的OpenSSL配置/版本差异,导致Rails凭据系统生成的加密文件无法跨环境解密:

  • Rails的credentials.yml.enc和master.key依赖OpenSSL的加密算法、密钥派生逻辑生成。Windows和WSL2的OpenSSL默认参数(如加密套件、哈希算法)不一致,跨环境使用对方生成的凭据文件时,解密过程会失败,抛出ActiveSupport::MessageEncryptor::InvalidMessage或OpenSSL::Cipher::CipherError错误。
解决调整步骤
  • 统一凭据生成环境
    选择一个固定环境(优先用WSL2 Ubuntu,因为Heroku的运行环境是Linux,更匹配)生成和编辑凭据:

    1. 删除项目中现有冲突的config/credentials.yml.enc和config/master.key文件
    2. 在WSL2环境进入项目目录,执行rails credentials:edit生成新的凭据文件
    3. 将生成的master.key同步到Windows本地项目的config目录(可通过WSL共享路径访问:\\wsl$\Ubuntu-20.04\你的项目路径\config\master.key)
  • 配置Heroku的密钥环境变量
    不要将master.key提交到Git,而是通过Heroku环境变量传递密钥:
    在WSL2环境执行命令:

    heroku config:set RAILS_MASTER_KEY=$(cat config/master.key)
    

    该命令会读取本地master.key的内容,设置为Heroku的RAILS_MASTER_KEY环境变量,确保Heroku能正确解密凭据。

  • 验证本地与部署环境的一致性

    1. Windows本地启动服务器前,确认config/master.key与WSL2生成的完全一致
    2. 重新执行git push heroku master部署,确保Heroku使用正确的密钥解密凭据
  • 保障密钥安全
    检查项目根目录的.gitignore文件,确保包含config/master.key规则,防止密钥被提交到代码仓库泄露。

内容的提问来源于stack exchange,提问作者Elena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:20:29