Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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 ExpressJS+;SSL自签名&x2B;HTTPS_Node.js_Express_Https - Fatal编程技术网

Node.js ExpressJS+;SSL自签名&x2B;HTTPS

Node.js ExpressJS+;SSL自签名&x2B;HTTPS,node.js,express,https,Node.js,Express,Https,第一件事是我没有收到任何错误,我的网站正在运行,显然,很好 我刚刚用ReactJS构建了一个webapp,并用ExpressJS提供服务。我决定开始使用HTTPS并以这种方式设置服务器: 让fs=require('fs'); let express=require('express') 让http=require('http') 让https=require('https') 让config=require('config') 让server=express() 让privateKey=fs.r

第一件事是我没有收到任何错误,我的网站正在运行,显然,很好

我刚刚用ReactJS构建了一个webapp,并用ExpressJS提供服务。我决定开始使用HTTPS并以这种方式设置服务器:

让fs=require('fs');
let express=require('express')
让http=require('http')
让https=require('https')
让config=require('config')
让server=express()
让privateKey=fs.readFileSync('./config/key.pem','utf8')
让certificate=fs.readFileSync('./config/cert.pem',utf8')
let credentials={key:privateKey,cert:certificate,passphrase:config.sslPhrase}
让httpServer=http.createServer(服务器)
让httpsServer=https.createServer(凭据,服务器)
//有些路线。。。
httpServer.listen(80)
httpsServer.listen(443)
我的服务器正在按预期运行,只有一个例外:

我所期待的是:

我的网站上没有任何机密数据,也没有cookies,没有任何密码类型的字段

有很多教程解释了如何在站点上实现HTTPS,但即使在这些教程中,它们也显示了相同的结果。这不是我所期望的

所以我的部分问题是:为什么会这样? 第二部分是:我该怎么办?

为什么会这样

因为您的证书是自签名的,因此浏览器不会自动信任您的证书。您的通信可能是安全的,但浏览器不知道是否可以信任连接来自它所说的实际域,因为它不信任您的证书颁发机构

我该怎么办

要为所有浏览器解决此问题,您必须从一个服务获取证书,该服务颁发由浏览器中内置信任的证书颁发机构之一信任的证书。这样做的一个免费选项是。要仅针对您自己的浏览器解决此问题,您可以告诉您的浏览器信任您的自签名证书


您无法获得所有浏览器都信任的自签名证书。证书信任系统就是不能这样工作。

您是否在问为什么在使用自签名证书时会出现不受信任的证书错误?我认为在这里提及“我应该做什么?”会很有用。@mscdex-我添加了一个对Lets Encrypt的引用。