require('https')vs require('tls')

我正在尝试使用Node.js,Express.js和TLS(1.2)在客户端和服务器之间创build一个非常安全的连接。

我认为我的问题在于理解TLS究竟是什么 – 意味着什么在交换,什么时候以及如何由谁来交换。

无论如何,我正在寻找像一个疯狂的人(疯狂的人)互联网试图找出如下:

  • 什么是var tls = require('tls'); 调用?
  • 什么是var https = require('https'); 调用?

当使用另一个节点作为客户端时,我可以使用它,但在这种情况下,客户端将是浏览器中的用户。 我可以同时使用浏览器或仅https?

谢谢

我们的确从TLS开始。

TLS是在客户端和服务器之间提供安全连接的一种方式。 它通过为客户端和服务器交换密钥提供一种安全的方法来实现这一点,以便他们可以使用公钥密码术来保护其传输。 确切的机制在这里find,但这对于这个答案并不重要。

现在,什么是https? 首先,我们来谈谈HTTP 。 HTTP是一个协议,定义了Web服务器和客户端如何交谈​​和交换网页或数据。 基本上,它包括来自客户端的请求,并且服务器响应数字消息,头部和(可选)正文。 如果你对编写网页很熟悉,这是显而易见的。

那么现在,最后,什么是HTTPS? HTTPS是使用TLS保护数据的HTTP版本。 这意味着客户端和服务器可以使用它们用于encryption的相同协议。

现在,让我们在node.js中讨论这些问题。

当你使用require('tls') ,你只使用encryption层,而不需要定义协议。 这对任何不期待一个确切的协议,比如你的其他node.js客户端,都可以正常工作。

当您使用require('https') ,您特别使用TLS上的HTTP。 https模块 实际上是 tls模块的 一个子类 ! (哎呀,实际上, https.Serverhttps.Server的子类)这意味着,无论何时使用https模块,您也使用tls。

现在,最后的问题是:浏览器需要什么? 如果你一直在关注我所说的一切,你可以看到浏览器想要https。 实际上,您今天访问的大多数网页都可能已经超过了https。