使用 git-tracked heroku 项目时如何安全地存储 .pem 文件?

Posted

技术标签:

【中文标题】使用 git-tracked heroku 项目时如何安全地存储 .pem 文件?【英文标题】:How do I securely store a .pem file when working with git-tracked heroku project? 【发布时间】:2016-11-14 22:58:34 【问题描述】:

我有一个 git-tracked repo,并且正在将其设置为与 APN 一起用于 ios 推送通知。我正在考虑以与 PushNotificationSample 类似的方式实现 npm 模块 node-apn

在这段代码中,有

var options = 
    gateway: 'gateway.sandbox.push.apple.com', // this URL is different for Apple's Production Servers and changes when you go to production
    errorCallback: callback,
    cert: 'your-cert.pem', // ** NEED TO SET TO YOURS - see this tutorial - http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
    key:  'your-key.pem',  // ** NEED TO SET TO YOURS
    passphrase: 'your-pw', // ** NEED TO SET TO YOURS
    port: 2195,                       
    enhanced: true,                   
    cacheLength: 100                  

但是,我如何在不将它们提交到 Github 的情况下引用我的 .pem 文件?

目前,我正在部署到 Heroku。

【问题讨论】:

我来这里是为了同样的问题,最好的方法,最后,你做了什么? 【参考方案1】:

通过 Heroku 的(环境)配置变量执行此操作。

如果你使用 node-apn 或类似的东西,你应该可以pass in the certificate and key content instead of a path。使用 ENV vars 传入关键内容,如 recommended by Heroku。

cert: process.env.APN_CERT,
key:  process.env.APN_KEY,
passphrase: process.env.APN_PASSPHRASE,

由于您无法在网页界面中为应用配置设置多行值,因此您必须使用命令行设置APN_CERTAPN_KEY

$ heroku config:set APN_CERT="-----BEGIN CERTIFICATE-----
> MIIDOjCCAiICCQCZTWzQNz6sqTANBgkqhkiG9w0BAQsFADBfMQswCQYDVQQGEwJB
> VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
...

【讨论】:

更新为建议一个适用于多行字符串的答案。如果您的 APN 库不能接受字符串并且需要文件,请从字符串中写入一个临时文件并将该文件传递给库。

以上是关于使用 git-tracked heroku 项目时如何安全地存储 .pem 文件?的主要内容,如果未能解决你的问题,请参考以下文章

将 Django 项目推送到 Heroku 时出错

使用 Heroku 时如何保存 Excel 文件?

Heroku 和 Angular 路由

将 Rails 3.1 项目部署到 Heroku 时出现问题:找不到 JavaScript 运行时

为啥heroku无法在项目上编译构建?

使用 webpack 部署到 Heroku 时预编译资产时出错