【问题标题】:ExpressJS + SSL self-signed + HTTPSExpressJS + SSL 自签名 + HTTPS
【发布时间】:2017-05-11 02:43:21
【问题描述】:

首先我没有收到任何错误,而且我的网站显然可以正常运行。

我刚刚使用 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,但即使在这些教程中,它们也显示了相同的结果。这不是我所期望的。

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

【问题讨论】:

  • 您是否在问为什么在使用自签名证书时会收到不受信任的证书错误?

标签: node.js express https


【解决方案1】:

为什么会这样?

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

我该怎么办?

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

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

【讨论】:

  • 我认为在这里提及LetsEncrypt 对“我应该怎么做?”很有用。
  • @mscdex - 我添加了对 Lets Encrypt 的引用。
猜你喜欢
  • 2018-03-31
  • 1970-01-01
  • 2016-11-29
  • 2020-04-08
  • 1970-01-01
  • 2012-12-31
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多