使用IAM存储证书以便在NodeJs服务器

时间:2018-02-20 14:47:09

标签: node.js amazon-web-services ssl ssl-certificate amazon-iam

我有一个在node + express中实现的Web服务器,现在我应该通过实现双向SSL来使其安全。

我设法通过签署一堆自签名证书来实现这一目标。按照我在网上找到的一个例子,我的代码看起来像这样:

const app = express();
app.use('/', express.static(__dirname + '/public'));
const options = {
    ca: 'ca-crt.pem',
    key: 'server-key.pem',
    cert: 'server-crt.pem',
    requestCert: true,
    rejectUnauthorized: true
};
const server = https.createServer(options, app);

当然,将证书文件保留在EC2实例上是一个坏主意。所以我将它们存储在S3上的一个存储桶中并将它们加载到上面的代码中。但后来我遇到了this link,它说我可以使用IAM服务在AWS上存储和检索证书。

当然,我更喜欢使用IAM,因为它是出于安全目的而设计的。但我遇到的问题是the documentation says

  

您无法从IAM下载或检索私钥   上传它。

所以我的问题是,如果IAM不回复我的私钥,我应该如何设置我的服务器?

1 个答案:

答案 0 :(得分:1)

在IAM中存储SSL证书的能力是在引入AWS证书管理器(ACM)之前所做的,并且旨在与支持它的AWS服务(即ELB)一起使用

我强烈建议将您的节点服务器放在负载均衡器后面,并使用AWS Certificate Manager(ACM)来配置实际的证书。如果您需要加密ELB和服务器之间的流量,您可以继续使用自签名证书 - ELB将不会验证它们。