2017-08-03 66 views
1

我對Node.js非常陌生& Express.js我用它來編寫Web API服務。 要啓用HTTPS服務使用下面的代碼:NodeJS/Express + HTTPS:如何將密鑰和證書部署到AWS EC2節點?

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節點部署機密(包括證書和密鑰)的建議安全方法?

回答

1

不建議保留EC2實例的機密。您可以使用AWS KMS來保密密鑰,並使用AWS Certificate Manager來管理您的SSL證書。

您可以在您的EC2實例前設置Elastic Load Balancer(ELB),並將您的SSL證書應用於ELB。這是一個guide。最好在ELB級別終止SSL,以減少EC2實例上的服務器負載。

+0

如果我在EC2實例前的ELB級別上應用SSL,我可以擺脫我服務中的HTTPS設置代碼,是否正確?我還假設如果我將ELB配置爲不在單個實例之上增長(我的項目甚至不在早期的alpha中,所以我根本不需要它來自動調整),所以沒有[重大]成本更改。 –

+0

正確。那麼涉及的成本很小。查看ELB定價。 https://aws.amazon.com/elasticloadbalancing/classicloadbalancer/pricing – Manoj

+0

如果您擔心成本,可以通過將應用程序遷移到無服務器來進一步降低成本。 (Lambda和API網關)。看看這個。 https://github.com/awslabs/aws-serverless-express – Manoj