Node.js 如何信任使用https的自签名证书?
编辑:我原本以为服务器的证书是自签名的。原来它是由自签名的CA证书签名的 我正在尝试编写一个Node.js应用程序,该应用程序访问一个HTTPS站点,该站点使用一个由私有自签名CA证书签名的自签名证书进行保护。我还希望不要完全禁用证书检查 我尝试将自签名证书服务器的证书放入请求选项中,但这似乎不起作用。有人知道怎么做吗 我希望下面的代码可以打印Node.js 如何信任使用https的自签名证书?,node.js,ssl,https,Node.js,Ssl,Https,编辑:我原本以为服务器的证书是自签名的。原来它是由自签名的CA证书签名的 我正在尝试编写一个Node.js应用程序,该应用程序访问一个HTTPS站点,该站点使用一个由私有自签名CA证书签名的自签名证书进行保护。我还希望不要完全禁用证书检查 我尝试将自签名证书服务器的证书放入请求选项中,但这似乎不起作用。有人知道怎么做吗 我希望下面的代码可以打印statusCode 200,但它会打印[错误:自签名证书在链中] 我试过类似的代码,结果也一样 var https = require('https')
statusCode 200
,但它会打印[错误:自签名证书在链中]
我试过类似的代码,结果也一样
var https = require('https');
var fs = require('fs');
var opts = {
hostname: host,
port: 443,
path: '/',
method: 'GET',
ca: fs.readFileSync(serverCertificateFile, 'utf-8')
};
var req = https.request(opts, function (res) {
console.log('statusCode', res.statusCode);
});
req.end();
req.on('error', function (err) {
console.error(err);
});
错误
[错误:自签名的\u链中的\u证书]
是这里发生的事情的线索
这表明HTTPS服务器的证书是由自签名证书签名的,而不是自签名证书本身。如果服务器证书是自签名的,则错误将是[错误:深度\u零\u自签名\u证书]
如果您提供CA证书而不是服务器的证书,那么它应该可以工作。我认为这可能对您有用:@vcazan我尝试同时添加
agent:false
和opts.agent=new https.agent(opts)代码>,两个都不起作用:-(你确定你有正确的证书吗?你的代码对我来说是自签名证书。如果我读了不同的(不正确)opts.ca的证书
然后我得到了错误:DEPTH\u ZERO\u SELF\u SIGNED\u CERT]。
@rhashimoto我想这就是我需要的提示。不是HTTPS证书是自签名的,而是服务器证书是自签名的。谢谢!