ExpressJS + SSL自签名+ HTTPS

时间:2017-05-11 02:43:21

标签: node.js express https

第一件事是我没有收到任何错误,我的网站显然工作正常。

我刚刚使用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)

我的服务器正在运行,只有一个例外:

enter image description here

我期待的是:

enter image description here

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

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

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

1 个答案:

答案 0 :(得分:1)

  

为什么会这样?

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

  

我该怎么办?

要为所有浏览器解决此问题,您必须从服务中获取证书,该证书颁发由其中一个证书颁发机构信任的证书,并在浏览器中构建信任。执行此操作的一个免费选项是Let's Encrypt。要仅针对您自己的浏览器解决此问题,您可以告诉浏览器信任您的自签名证书。

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