运行Node.js HTTPS服务器而不提供SSL证书?

时间:2019-09-07 07:36:02

标签: node.js express ssl https cloudflare

我们已经进行了设置,其中SSL / HTTPS内容由Cloudflare管理。

在这种情况下,运行Node.js HTTPS服务器的正确方法是什么?

我已经尝试过像这样运行它并且可以正常工作,但是有什么缺点呢?

const app = express()
const httpsServer = https.createServer({}, app) //creating https server with an empty ssl certificate object

httpsServer.listen(443)

1 个答案:

答案 0 :(得分:0)

  

我已经尝试过像这样运行它,并且可以正常工作

通过这种方式,我假设您正在使用灵活模式? 处于弹性模式时,它给您带来安全性的错觉,但实际上 客户端与服务器之间的连接只有一半安全。

  Cloudflare Universal SSL Certiticate
              |
Client <----HTTPS-----> Cloudflare <------HTTP-----> Origin Server

您肯定听说过MITM (man-in-the-middle) attacks或由国家赞助的不安全通道监视(阅读:HTTP)吗?当您的连接未完全端到端加密时,这些就是缺点。

为了确保端到端的连接安全,您需要使用Full/Full(Strict) mode,而要使其正常工作,则需要在原始服务器上指定证书。打开端口443并将其置于侦听模式还不够,HTTPS使用公共密钥基础结构(PKI),而SSL证书是其中的基本部分。换句话说,没有SSL证书就无法使用HTTPS!

  Cloudflare Universal SSL Certiticate      Origin Certificate
              |                              |
Client <----HTTPS-----> Cloudflare <------HTTPS-----> Origin Server

在原始服务器上配置自签名证书足以满足Full模式,但是Full(Strict)模式需要有效的证书。全新的优点是您无需从零售的证书颁发机构(CA)购买扩展验证(EV)证书,因为如今有免费的域验证(DV)证书,例如可以加密的/ Certbot或Cloudflare Origin CA证书都可以使用一样好。