1

我正在构建的应用程序与第三方api集成。为了访问这个API,它使用需要证书文件的RSA-SHA1签名方法通过oauth进行身份验证。从CI(Codeship)向Heroku部署秘密证书文件

该应用程序使用codeship不断部署在heroku(php)上。

由于各种原因,我不想将证书检入到源代码管理中,但每次部署应用程序时都需要一种将证书复制到生产代码的方法。这是因为Heroku dynos是无状态的,所以在应用程序部署时恢复自己(据我了解)。

将此证书复制到我的dyno的最佳方法是什么?我想用这样的命令,但它不能正常工作:

heroku run "echo \"${CERTDATA}\" > ./storage/certs/my_cert.pem" 

我可以存储在Codeship环境变量的实际证书数据,因此这将是始终可用。

或者我可以在Codeship中创建证书文件,然后强制将它添加到Heroku的git部署中。任何人都可以在此提供任何指导

回答

0

为什么不把实际证书数据存储在Heroku的env var中?

+0

假设我有证书作为'private_key.pem'文件,我将如何将它存储为环境变量,以便['openssl_pkey_get_private()'](http://php.net/manual/en/function。 openssl-pkey-get-private.php)可以读取它? – harryg

+1

我使用的解决方案是base64对cert文件内容进行编码(因此它可以保存为env变量),base64对它进行解码以便与oauth库一起使用。 – harryg