我已经部署了多个微服务,包含前端应用和后端服务。
前端应用程序可以通过 xyz.com 域。它调用后台服务API端点。
所以,我真正想做的是使用Node.js中的Certificate Authority检查来自前台应用的请求是否有效,是否来自真实来源。
在研究了一下如何在node.js中做到这一点之后,我发现可以使用nodejs来实现。https
模块的 request
方法。但这种方法的问题是,nodejs维护了一个 CA证书清单这很容易过时,而且有可能验证我的域名证书的CA不在该列表中。虽然他们提供了一种方法来传递额外的CA,但还是要依赖用户端来维护这个列表。我目前对如何以正确的方式做这件事有点迷茫。
我需要帮助如何轻松有效地完成这个过程。
在node.js中,有两种方法可以验证一个域名。
https.request
Nodejs https模块的请求方法对所提供的域名进行验证。链条 证书颁发机构的根证书。下面给出一个代码示例。
var https = require('https');
var options = {
hostname: 'github.com/',
port: 443,
path: '/',
method: 'GET',
rejectUnauthorized: true
};
var ss;
var req = https.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
});
req.end();
req.on('error', function(e) {
console.error(e);
});
rejectUnauthorized: 这意味着,它将对服务器域名证书进行验证,并与之相对应。链条 的CA的根证书。
这种方法的唯一问题是,这种 链条 应定期更新,否则一个新的域名,由证书颁发机构签署的根证书不属于链的一部分,标记为无效证书(一个常见的例子是自签证书)。
也可以使用,但需要另一个模块来获取域名信息。