【问题标题】:NodeJS/Express + HTTPS: How to deploy key & certificate to AWS EC2 node?NodeJS/Express + HTTPS:如何将密钥和证书部署到 AWS EC2 节点?
【发布时间】:2018-01-11 11:14:38
【问题描述】:

我对 Node.js 和 Express.js 非常陌生,我用它来编写 Web API 服务。 要启用 HTTPS,该服务使用以下代码:

const server = https
  .createServer({
    key: fs.readFileSync('./cert/myservice.key'),
    cert: fs.readFileSync('./cert/myservice.crt')
  })
 .listen(serverConfig.server.port, () => logger.info(`MyService is up and running`));

很容易看出,此代码假定.key.crt 文件在服务应用程序位置本地可用。 如果我想将服务部署到单个 AWS EC2 主机(为了简单起见),这些文件必须在那里,这似乎不是一个安全的解决方案。

我正在考虑使用 AWS IAM 来保护机密。 问题是不可能直接从 IAM“部署”/使机密可用到 EC2 节点。 我必须使用 IAM 的 API 来获取机密,但问题是如何使 AWS 凭证在 EC2 上可用。

问题:是否有推荐的安全方式将机密(包括证书和密钥)部署到 AWS EC2 节点?

【问题讨论】:

    标签: node.js amazon-web-services express amazon-ec2 https


    【解决方案1】:

    不建议对 EC2 实例保密。您可以使用AWS KMS 来保存密钥,使用AWS Certificate Manager 来管理您的 SSL 证书。

    您可以在您的 EC2 实例前面设置一个Elastic Load Balancer(ELB) 并将您的 SSL 证书应用到 ELB。这是guide。最好在 ELB 级别终止 SSL 以减轻 EC2 实例上的服务器负载。

    【讨论】:

    • 如果我在 EC2 实例前面的 ELB 级别上应用 SSL,我可以摆脱服务中的 HTTPS 设置代码,对吗?我还假设如果我将 ELB 配置为不超过单个实例(我的项目甚至还没有处于早期 alpha 阶段,所以我根本不需要它来自动扩展),那么不会有 [显着的] 成本变化。
    • 正确。好吧,涉及的费用很小。请参阅 ELB 定价。 aws.amazon.com/elasticloadbalancing/classicloadbalancer/pricing
    • 如果您担心成本,可以通过将应用程序迁移到无服务器来进一步降低成本。 (Lambda 和 API 网关)。看看这个。 github.com/awslabs/aws-serverless-express
    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2019-02-05
    • 2020-11-28
    • 2017-03-03
    • 2015-01-24
    • 2017-05-03
    • 2020-08-02
    • 2017-05-06
    相关资源
    最近更新 更多