【问题标题】:Using IAM to store certificates in order to use them in a NodeJs server使用 IAM 存储证书以便在 NodeJs 服务器中使用它们
【发布时间】:2018-02-20 14:47:08
【问题描述】:

我在 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 不退还我的私钥,我应该如何设置我的服务器?

【问题讨论】:

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


    【解决方案1】:

    在 IAM 中存储 SSL 证书的功能是在引入 AWS Certificate Manager (ACM) 之前完成的,旨在与支持它的 AWS 服务(即 ELB)一起使用

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

    【讨论】:

    • 您能帮我澄清一下吗?在您的场景中,我可以使用 ACM 自签名吗?另外,如果我使用 ACM 和 ELB(是否使用自签名证书),我的服务器代码会知道证书吗?还是服务端的代码会收到已经解密的请求?
    • 我认为您不能将自签名证书与 ACM 一起使用,但由于 AWS 免费提供它们,这真的不重要。后端代码对证书一无所知——这就是重点——但它会知道客户端是否安全连接。 ELB 将设置节点服务器可用于确定客户端连接方式和位置的标头值。
    猜你喜欢
    • 2022-06-10
    • 2012-07-19
    • 2016-10-17
    • 1970-01-01
    • 2011-05-15
    • 2012-04-18
    • 2012-02-20
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多