跨平台(包括Windows)使用带有nodejs的OS可信证书的方式

时间:2016-03-30 14:21:53

标签: node.js ssl cryptoapi

是否有可用的节点模块或可以跨平台方式从操作系统读取可信证书的代码?其他答案涵盖了如何使用ubuntus我可以适应MacOS X,但我找不到任何可以轻松读取Windows可信证书的代码。其他问题指出它们存在于registry中并且我应该使用CryptoAPI来加载它们,但我还没有找到一个从节点执行此操作的好例子。

1 个答案:

答案 0 :(得分:2)

听起来你所描述的问题不是关于阅读证书,而只是知道他们住在哪里。

尝试构建能够自动发现任何正在运行的计算机上可信证书所在位置的内容几乎肯定是不可能的,并且可能无论如何都不是一个好主意。

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

您可以设置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);