node.js - 使用 https.request 忽略 node.js 中无效的自签名 ssl 证书?

标签 node.js https ssl-certificate

我正在开发一个登录本地无线路由器 (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/

相关文章:

node.js - 在 Apple M1 (Big Sur) 上使用 node-gyp 安装 native Node.js 附加组件时出错

node.js - 当我尝试在异步函数上使用 toThrow() 时 Jest Test 记录错误(但仍通过测试)

ssl - 使用 Letsencrypt 证书设置 Docker 注册表

apache - Apache + CentOS 中的反向代理,用于对 PostgREST 网络服务器的 HTTPS 请求

javascript - 与 promise Bluebird 循环

javascript - jsdom不支持svg?

python - 您可以将 HTTPS 功能添加到 python flask Web 服务器吗?

ssl - 更改证书 csr 的指纹 SHA

.htaccess - htaccess 2变量问题

google-chrome - *.test 域的本地 HTTPS 证书出现问题