node.js - MTLS - 为nodejs客户端生成证书
问题描述
我们需要通过 Mutual TLS 在我们的 ec2 服务器和我们的客户服务器之间进行通信。请求从我们的服务器发送到我们的客户服务器——所以我们是这里的客户。
我读了这篇文章,谈论如何生成文件。
第一步是创建客户端和服务器都信任的证书颁发机构 (CA)。CA 只是一个公钥和私钥,公钥包含在自签名的 X.509 证书中。
我们的证书和他们的证书 - 应该从同一个根 CA 签名吗?谁应该提供?
我这边的代码应该是这样的:
const req = https.request(
{
hostname: 'myserver.internal.net',
port: 443,
path: '/',
method: 'GET',
cert: fs.readFileSync('client.crt'),
key: fs.readFileSync('client.key'),
ca: fs.readFileSync('ca.crt')
},
res => {
res.on('data', function(data) {
// do something with response
});
}
);
那么我们应该互相提供什么呢?我们不完全了解,他们没有提供更多细节,只是要求我们给他们一个证书......
解决方案
我们的证书和他们的证书 - 应该从同一个根 CA 签名吗?谁应该提供?
由于客户端证书的控制是在 TLS 服务器端(即客户)完成的,因此完全取决于他们的期望。他们可能需要一个公开签名的证书,他们可能需要一个由他们自己的 CA 签名的证书。或者他们可能只是检查是否使用了特定的证书,并且也会为此接受自签名证书。
推荐阅读
- spring-boot - 简体和繁体中文字符存储为?在 Spring Boot 项目中使用 Liquibase 在 Sybase 数据库中
- datatables - 如何在数据表中设置选定列的排序?
- html - 根据子元素的内容为父元素编写ublock过滤规则
- linux - 从 .bachrc 中键/值对的 .list 文件设置环境变量
- c# - MVC ViewModels - 无法访问从控制器传递到视图的对象/变量
- c# - 使用触发器实现自定义“选择器”用户控件来控制所选项目的样式
- node.js - npm install 失败说“没有名为 isNearDeath 的成员”
- .net - Twitter API 以“远程主机强制关闭现有连接”响应
- angular - 如何使用 ngfor 以角度制作动态形式?
- python - 如何从该网页中抓取文本?