我正在开发一个登录我本地无线路由器(Linksys)的小应用程序,但我遇到了路由器的自签名证书问题.
我运行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'.
Run Code Online (Sandbox Code Playgroud)
在节点中,捕获的错误是:
{ [Error: socket hang up] code: 'ECONNRESET' }
Run Code Online (Sandbox Code Playgroud)
我目前的示例代码是:
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);
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能让node.js做相当于"--no-check-certificate"的操作?
我正在尝试使用他们教程中的简单 next.js 示例博客。但是,当我访问该页面时,出现以下情况:
$ npm run dev
> nextjs-blog@0.1.0 dev /Users/<redacted>/tmp/nextjs-blog
> next dev
ready - started server on 0.0.0.0:3000, URL: http://localhost:3000
event - compiled client and server successfully in 386 ms (165 modules)
wait - compiling /_error (client and server)...
event - compiled client and server successfully in 91 ms (166 modules)
warn - Fast Refresh had to perform a full reload due to a runtime error.
wait - compiling / (client and server)...
error - Failed to download …Run Code Online (Sandbox Code Playgroud) 我正在处理干净的 Windows 10 安装。唯一的事情是我安装了 cygwin 以在 cmd 中获取 unix 命令。
当我输入时,npm install -g @angular/cli它会下载必要的文件,但我收到一个错误:
gyp ERR! configure error
gyp ERR! stack Error: unable to get local issuer certificate
gyp ERR! stack at Error (native)
gyp ERR! stack at TLSSocket.<anonymous> (_tls_wrap.js:1092:38)
gyp ERR! stack at emitNone (events.js:86:13)
gyp ERR! stack at TLSSocket.emit (events.js:185:7)
gyp ERR! stack at TLSSocket._finishInit (_tls_wrap.js:610:8)
gyp ERR! stack at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:440:38)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\user\\AppData\\Roaming\\npm\\node_modules\\@angular\\cli\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" …Run Code Online (Sandbox Code Playgroud) 当我尝试安装纱线时,我得到以下输出:
Internal Error: Error when performing the request
at ClientRequest.<anonymous> (C:\Program Files\nodejs\node_modules\corepack\dist\corepack.js:3937:20)
at ClientRequest.emit (node:events:390:28)
at TLSSocket.socketErrorListener (node:_http_client:447:9)
at TLSSocket.emit (node:events:390:28)
at emitErrorNT (node:internal/streams/destroy:157:8)
at emitErrorCloseNT (node:internal/streams/destroy:122:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
Run Code Online (Sandbox Code Playgroud) 节点/电子应用程序部署在最终用户的机器上。它尝试向服务器发出 HTTPS 请求。根据用户的网络设置,这可能会正常工作,或者 Node 可能会抛出错误"Unable to Get Local Issuer Certificate"。据我了解,当客户端位于具有 SSL 拦截或类似功能的代理后面时,就会发生这种情况。
我知道 SO 和 github 充满了这样的问题。但我能找到的唯一通用“解决方案”是在进程级别完全破坏 SSL:
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0
Run Code Online (Sandbox Code Playgroud)
或在请求级别:
rejectUnauthorized: "false"
Run Code Online (Sandbox Code Playgroud)
还可以选择在发出 HTTP 请求时以某种方式指定正确的证书。但它似乎几乎需要为每个用户进行自定义设置,我还没有找到任何以通用方式进行设置的示例。
1. 为什么这个问题特定于 Node 应用程序,而计算机上的所有其他应用程序都可以正常工作?
2. 能不能通用跨平台修复?