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
Node.js 如何使用Fetch API忽略SSL/TLS验证?_Node.js_Ssl_Electron_Fetch - Fatal编程技术网

Node.js 如何使用Fetch API忽略SSL/TLS验证?

Node.js 如何使用Fetch API忽略SSL/TLS验证?,node.js,ssl,electron,fetch,Node.js,Ssl,Electron,Fetch,我正在使用API从Electron渲染过程中下载文件。服务器提供自签名证书 Electron引发以下异常: 我不想完全关闭SSL/TLS。使用process.env[“NODE\u TLS\u REJECT\u UNAUTHORIZED”]=0或设置环境变量是可行的,但这是完全不安全的 这就是我当前从URL获取的内容 const requestInit: RequestInit = { credentials: "include", method: "GET"

我正在使用API从Electron渲染过程中下载文件。服务器提供自签名证书

Electron引发以下异常:

我不想完全关闭SSL/TLS。使用
process.env[“NODE\u TLS\u REJECT\u UNAUTHORIZED”]=0
或设置环境变量是可行的,但这是完全不安全的

这就是我当前从URL获取的内容

const requestInit: RequestInit = {
        credentials: "include",
        method: "GET"
    };
const response = await fetch(url, requestInit);

您会发现SSL/TLS是向您传递的URL发出请求所需的协议。如果它是一个“https://”url,请尝试删除以发出“http://”请求。如果该服务不支持SSL/TLS免费选项,则您必须支持他们选择要求SSL/TLS。

TBH,忽略证书验证错误“主要”是完全关闭TLS。好的,从技术上讲不是这样的,因为您仍然通过加密来保密,但是如果您加密数据并将其发送给未经身份验证的一方,那么这意味着您可能正在将其发送给“任何人”,在这种情况下,加密的事实会停止提供任何价值。身份验证和机密性是两个独立的属性,但有一个假设,即机密性更为重要,当我认为应该相反时,它首先出现。当然,身份验证是一个更大的问题……相反:如果您无法更改服务器以使其停止发送自签名证书,并且如果此证书注定会持续很长时间,则应该在应用程序使用的信任存储中将该特定证书添加为完全受信任的证书。这样,您就可以100%地在TLS土地上进行保密和身份验证。当然,如果证书“经常”更改,那么就更难了。谢谢@PatrickMevzek。很遗憾,我无法更改服务器上正在使用的证书,我只能将该证书作为受信任的根证书颁发机构安装。即使这样做,仍然会出现此错误。验证是否可能需要中间证书?如果是自签名证书,根据定义,不可能有任何中间证书。没有专门用于获取API调用的方法可以忽略TLS验证。浏览器透明地处理TLS协商,无论您如何拨打电话。浏览器不允许web应用程序在发出请求时有选择地忽略TLS验证——不管请求是如何发出的(无论是使用Fetch API、XHR还是使用特定JavaScript库中的Ajax方法,等等)。OP说:“我不想完全使用SSL/TLS。”所以从HTTPS切换到HTTP完全违背了这个目标…对吧。。。那么我想这将是他们自签名证书的例外