我对Node.js&我用来编写Web API服务的Express.js。 要启用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来获取秘密,但问题是如何在EC2上提供AWS凭证。
问题:是否有建议的安全方式将机密(包括证书和密钥)部署到AWS EC2节点?
答案 0 :(得分:1)
不建议在EC2实例上保密。您可以使用AWS KMS保留密钥,AWS Certificate Manager来管理您的SSL证书。
您可以在EC2实例前设置Elastic Load Balancer(ELB),并在ELB上应用SSL证书。这是一个guide。最好在ELB级别终止SSL,以便从EC2实例上的服务器上卸载一些负载。