如何向Heroku添加或更新gpg.conf配置文件以解密PGP加密文件
Heroku Rails服务GPG临时配置实现方案
背景说明
当前运行的Rails服务需要解密客户提供的PGP加密文件,由于客户暂未按要求在加密时添加--force-mdc参数,因此需要临时在GPG配置中添加ignore-mdc-error参数绕过MDC校验。
前置说明
Heroku Dyno采用临时文件系统,所有运行时手动修改的文件会在部署、Dyno重启后自动重置,因此直接登录服务器创建的.gnupg/gpg.conf无法持久化,必须将配置嵌入部署流程实现永久生效。
可行实现方案
方案1:配置文件随源码托管(推荐,稳定易维护)
- 在Rails项目根目录创建
.gnupg目录,在目录下新建gpg.conf文件,写入配置内容:
ignore-mdc-error
- 在Heroku控制台或通过Heroku CLI添加环境变量:
heroku config:set GNUPGHOME=/app/.gnupg
配置完成后GPG调用时会自动读取该路径下的配置文件,无需额外文件拷贝操作。
方案2:启动时动态生成配置(适配不想将配置提交到代码库的场景)
- 在Rails项目根目录新建
.profile文件,写入以下脚本内容:
# 启动时自动生成GPG配置 mkdir -p $HOME/.gnupg echo "ignore-mdc-error" > $HOME/.gnupg/gpg.conf # 配置符合GPG要求的权限 chmod 700 $HOME/.gnupg chmod 600 $HOME/.gnupg/gpg.conf
Heroku Dyno启动时会自动执行.profile内的脚本,每次启动都会生成符合要求的GPG配置文件。
配置验证
部署完成后可执行heroku run bash进入一次性Dyno环境,执行gpg --list-config查看配置是否加载成功,或直接运行解密测试验证功能正常。
注意事项
ignore-mdc-error属于临时降级方案,会降低PGP解密的安全性,等客户所有加密文件均添加--force-mdc参数后,请及时移除该配置。
内容的提问来源于stack exchange,提问作者Superman2971
相关产品推荐
相关产品推荐

