第一件事是我没有收到任何错误,我的网站显然工作正常。
我刚刚使用ReactJS构建了一个webapp,我使用ExpressJS来提供它。我决定开始使用HTTPS并以这种方式设置服务器:
let fs = require('fs');
let express = require('express')
let http = require('http')
let https = require('https')
let config = require('config')
let server = express()
let privateKey = fs.readFileSync('./config/key.pem', 'utf8')
let certificate = fs.readFileSync('./config/cert.pem', 'utf8')
let credentials = { key: privateKey, cert: certificate, passphrase: config.sslPhrase }
let httpServer = http.createServer(server)
let httpsServer = https.createServer(credentials, server)
//Some routes...
httpServer.listen(80)
httpsServer.listen(443)
我的服务器正在运行,只有一个例外:
我期待的是:
我的网站上没有任何机密数据也没有cookie,没有任何类型密码的字段。
有许多教程解释如何在您的网站上实现HTTPS,但即使在这些教程中,它们也显示相同的结果。这不是我所期待的。
所以我的一部分问题是:为什么会这样? 第二部分是:我该怎么办?
答案 0 :(得分:1)
为什么会这样?
因为您的证书是自签名的,因此浏览器不会自动信任该证书。您的通信可能是安全的,但浏览器不知道它是否可以信任该连接来自它所说的实际域,因为它不信任您的证书颁发机构。
我该怎么办?
要为所有浏览器解决此问题,您必须从服务中获取证书,该证书颁发由其中一个证书颁发机构信任的证书,并在浏览器中构建信任。执行此操作的一个免费选项是Let's Encrypt。要仅针对您自己的浏览器解决此问题,您可以告诉浏览器信任您的自签名证书。
您无法获得所有浏览器都信任的自签名证书。证书信任系统不会那样工作。