首页 文章

如何为AWS Elastic Beans设置多行RSA私钥环境变量

提问于
浏览
7

我正在使用Elastic Beanstalk将Ruby on Rails应用程序部署到AWS,并且必须将私钥设置为环境变量

例如

-----BEGIN RSA PRIVATE KEY----- SpvpksXQIBA65ICOgQxV2TvMIICAiMeV9prhdJSKjjsk2 tYdz8lhn/ibROQW71utuHLAyHGMBxz3kIaaIq1kjdkkk tYdz8lhn/ibROQW71utuHLAyHGMBxz3kIaaIq1kjdkkk tYdz8lhn/ibROQW71utuHLAyHGMBxz3kIaaIq1kjdkkk tYdz8lhn/ibROQW71utuHLAyHGMBxz3kIaaIq1kjdkkk -----END RSA PRIVATE KEY-----

但是,在部署应用程序时,这似乎不起作用,因为它总是失败了

OpenSSL :: PKey :: RSAError:既不是PUB密钥也不是PRIV密钥:嵌套asn1错误

我认为这是因为RSA Key格式不正确 .

然而,与Heroku不同,AWS EB不接受多行输入(见下文),因此我必须使用 \n 来创建新行 .

enter image description here

我尝试了几种不同的风格,但没有一个似乎正确地插入 \n 并且我总是得到同样的错误 .

我已经尝试了 \n 和每一行的结尾,然后 \\n 并尝试双引号 \" 来包装密钥但我仍然得到同样的错误 .

如何在AWS Elastic Beanstalk中正确设置多行环境变量?

2 回答

  • 5

    您可以使用 \n 在EB中设置它,然后将'\n'转换为换行符,然后再将其传递给 config.key - 类似这样(注意调用 gsub 中的单引号和双引号):

    single_line_key = ENV.fetch('CLOUDFRONT_KEY')
    multi_line_key = single_line_key.gsub('\n', "\n")
    config.key = multi_line_key
    
  • 2

    您需要将多行字符串(例如,您的私钥或公钥)正确地“导出”到环境中 .

    在你的shell导出语句''.....'中包含......其中......是你的多行字符串,例如你的私钥或公钥 .

    示例: export KEY = $'-----BEGIN RSA PRIVATE KEY-----\nSpvpksXQIBA65ICOgQxV2TvMIICAiMeV9prhdJSKjjsk2tYdz8lhn/ibROQW71utuHLAyHGMBxz3kIaaIq1kjdkkktYdz8lhn/ibROQW71utuHLAyHGMBxz3kIaaIq1kjdkkktYdz8lhn/ibROQW71utuHLAyHGMBxz3kIaaIq1kjdkkktYdz8lhn/ibROQW71utuHLAyHGMBxz3kIaaIq1kjdkk\n-----END RSA PRIVATE KEY-----'

相关问题