node.js - 跨平台(包括 Windows)使用 nodejs 操作系统信任证书的方式

标签 node.js ssl cryptoapi

是否有可用的 Node 模块或代码可以跨平台方式从操作系统读取可信证书?其他答案包括如何使用 ubuntus我可以将其改编为 MacOS X,但我无法找到任何可以轻松读取 Windows 可信证书的代码。其他问题指出了它们在 registry 中的位置。并且我应该使用 CryptoAPI 来加载它们,但我还没有找到从 Node 执行此操作的好例子。

最佳答案

听起来您所描述的问题并不是真正关于读取证书,而只是知道它们的位置。

尝试构建能够自动发现受信任证书在任何正在运行的机器上的位置的东西几乎肯定是不可能的,而且可能无论如何都不是一个好主意。

相反,这听起来应该用一个简单的环境变量来解决(问题毕竟是关于证书路径在不同环境 上的可变性)。

您可以设置 3 个环境变量,我们称它们为 CERT_PATHKEY_PATHCA_PATH。您可以在任何操作系统上配置它们以指向正确的位置。然后您可以在您的应用程序中引用它们:

var fs = require('fs');  
var https = require('https');

var options = {  
    key: fs.readFileSync(process.env.KEY_PATH),
    cert: fs.readFileSync(process.env.CERT_PATH),
    ca: fs.readFileSync(process.env.CA_PATH),
};

https.createServer(options, function (req, res) {  
    console.log(new Date()+' '+
        req.connection.remoteAddress+' '+
        req.method+' '+req.url);
    res.writeHead(200);
    res.end("hello world\n");
  }).listen(4433);

关于node.js - 跨平台(包括 Windows)使用 nodejs 操作系统信任证书的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36311701/

相关文章:

javascript - NodeJS类方法异步返回

ssl - WSO2 ESB ssl 端点 "Read timed out"

ssl - 试图了解 SSLKEYLOGFILE 环境变量输出格式

OpenSSL 和 MS CryptoAPI : different digital signatures

javascript - 解决所有 promise 的问题

node.js - Grunt 安装错误 : "should be installed with -g"

ios - 在 AFNetworking 中支持 SNI

windows - 微软加密 API 书

c++ - 我可以从智能卡中的 key 容器中获取公钥/私钥对吗?

arrays - 使用 mongoose 在不同的对象数组中查找对象