我正在开发一个登录本地无线路由器 (Linksys) 的小应用程序,但我遇到了路由器自签名 ssl 证书的问题。
我运行 wget 192.168.1.1 并得到:
ERROR: cannot verify 192.168.1.1's certificate, issued by `/C=US/ST=California/L=Irvine/O=Cisco-Linksys, LLC/OU=Division/CN=Linksys/emailAddress=support@linksys.com':
Self-signed certificate encountered.
ERROR: certificate common name `Linksys' doesn't match requested host name `192.168.1.1'.
To connect to 192.168.1.1 insecurely, use `--no-check-certificate'.
在 Node 中,被捕获的错误是:
{ [Error: socket hang up] code: 'ECONNRESET' }
我目前的示例代码是:
var req = https.request({
host: '192.168.1.1',
port: 443,
path: '/',
method: 'GET'
}, function(res){
var body = [];
res.on('data', function(data){
body.push(data);
});
res.on('end', function(){
console.log( body.join('') );
});
});
req.end();
req.on('error', function(err){
console.log(err);
});
我怎样才能让 node.js 做相当于“--no-check-certificate”的事情?
最佳答案
廉价且不安全的答案:
添加
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
在代码中,在调用 https.request()
这个question回答了一个更安全的方法(上面的解决方案使整个 Node 进程不安全)
关于node.js - 使用 https.request 忽略 node.js 中无效的自签名 ssl 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10888610/