编辑:我原本以为服务器的证书是自签名的。事实证明它是由自签名的CA证书签署的。
我正在尝试编写一个Node.js应用程序,该应用程序使用由私有的自签名CA证书签名的自签名证书证书来访问受保护的HTTPS站点。我还想不完全禁用证书检查。
我尝试将自签名证书服务器的证书放在请求选项中,但这似乎不起作用。有谁知道怎么做?
我希望以下代码能够打印statusCode 200
,而是打印[Error: SELF_SIGNED_CERT_IN_CHAIN]
。
我尝试使用request的类似代码,结果相同。
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);
});
答案 0 :(得分:1)
错误[Error: SELF_SIGNED_CERT_IN_CHAIN]
是这里发生的事情的线索。
这表明HTTPS服务器的证书是由自签名证书签名的,而不是它本身就是自签名证书。如果服务器证书是自签名的,则错误为[Error: DEPTH_ZERO_SELF_SIGNED_CERT]
。
如果您提供CA证书而不是服务器的证书,则应该可以使用。