Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何信任使用https的自签名证书?_Node.js_Ssl_Https - Fatal编程技术网

Node.js 如何信任使用https的自签名证书?

Node.js 如何信任使用https的自签名证书?,node.js,ssl,https,Node.js,Ssl,Https,编辑:我原本以为服务器的证书是自签名的。原来它是由自签名的CA证书签名的 我正在尝试编写一个Node.js应用程序,该应用程序访问一个HTTPS站点,该站点使用一个由私有自签名CA证书签名的自签名证书进行保护。我还希望不要完全禁用证书检查 我尝试将自签名证书服务器的证书放入请求选项中,但这似乎不起作用。有人知道怎么做吗 我希望下面的代码可以打印statusCode 200,但它会打印[错误:自签名证书在链中] 我试过类似的代码,结果也一样 var https = require('https')

编辑:我原本以为服务器的证书是自签名的。原来它是由自签名的CA证书签名的

我正在尝试编写一个Node.js应用程序,该应用程序访问一个HTTPS站点,该站点使用一个由私有自签名CA证书签名的自签名证书进行保护。我还希望不要完全禁用证书检查

我尝试将自签名证书服务器的证书放入请求选项中,但这似乎不起作用。有人知道怎么做吗

我希望下面的代码可以打印
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证书是自签名的,而是服务器证书是自签名的。谢谢!