我正在尝试使用 Node.js、Express.js 和 TLS (1.2) 在客户端和服务器之间创建一个非常安全的连接。
我认为我的问题在于理解 TLS 究竟是什么 - 意味着交换什么、何时以及如何由谁交换。
无论如何,我像疯子(疯子)一样在网上搜索,试图找出以下内容:
var tls = require('tls');
调用了什么?var https = require('https');
调用了什么?
当使用另一个 Node 作为客户端时,我可以让 tls 工作,但在这种情况下,客户端将是浏览器中的用户。我可以同时使用浏览器还是只使用 https?
谢谢
最佳答案
让我们真正开始了解 TLS 是什么。
TLS 是一种在客户端和服务器之间提供安全连接的方法。它通过为客户端和服务器提供一种安全的方式来交换 key 来实现这一点,这样他们就可以使用公钥加密来保护他们的传输。找到确切的机制here ,但对于这个答案真的不重要。
现在,什么是 https?好吧,先来说说HTTP . HTTP 是一种协议(protocol),它定义了 Web 服务器和客户端如何交谈和交换网页或数据。基本上,它包括来自客户端的请求,服务器以数字消息、 header 和(可选)正文进行响应。如果您熟悉编写网页,这是显而易见的。
那么现在,最后,什么是 HTTPS? HTTPS是使用 TLS 来保护数据的 HTTP 版本。这意味着客户端和服务器可以使用他们习惯使用的相同协议(protocol),并包含在加密中。
现在,让我们在 node.js 中讨论这些。
当你使用 require('tls')
时,你只使用了加密层,没有定义协议(protocol)。这适用于不需要精确协议(protocol)的任何东西,例如您的其他 node.js 客户端。
当您使用 require('https')
时,您具体使用的是基于 TLS 的 HTTP。 https module 实际上是 tls module的子类! (糟糕,实际上,https.Server
是 tls.Server
的子类)这意味着无论何时您使用 https 模块,您也在使用 tls一个。
现在,最后一个问题:浏览器想要什么?如果您一直在关注我所说的一切,您会看到浏览器需要 https。事实上,你今天访问的大部分网页很可能都是通过 https 的。
关于node.js - 需要 ('https' )与需要 ('tls' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24162350/