我尝试使用Node.js,Express.js和TLS(1.2)在客户端和服务器之间创建一个非常安全的连接。
我认为我的问题在于理解TLS实际上是什么 - 意味着什么是交换,何时以及如何由谁。
无论如何,我正在寻找互联网,就像一个疯狂的人(疯狂的人)试图找出以下内容:
var tls = require('tls');
调用什么?var https = require('https');
调用什么?当使用另一个节点作为客户端时,我可以工作,但在这种情况下,客户端将是浏览器中的用户。我可以同时使用浏览器还是仅使用https?
由于
答案 0 :(得分:35)
让我们确实从TLS开始。
TLS是一种在客户端和服务器之间提供安全连接的方法。它通过为客户端和服务器提供安全的交换密钥的方式来实现这一点,这样他们就可以使用公钥加密来保护它们的传输。找到了确切的机制here,但这对于这个答案来说并不重要。
现在,什么是https?首先,让我们谈谈HTTP。 HTTP是一种协议,用于定义Web服务器和客户端如何交谈和交换网页或数据。基本上,它包括来自客户端的请求,服务器使用数字消息,标题和(可选)主体进行响应。如果您熟悉编写网页,这很明显。
现在,最后,什么是HTTPS? HTTPS是使用TLS保护数据的HTTP版本。这意味着客户端和服务器可以使用他们习惯使用的相同协议,包含在加密中。
现在,让我们在node.js中谈谈这些。
使用require('tls')
时,您只使用加密层,而不定义协议。这适用于任何不期望精确协议的事情,例如您的其他node.js客户端。
当您使用require('https')
时,您将专门使用HTTP over TLS。 https module 实际上是 tls module的子类! (哎呀,实际上,https.Server
是tls.Server
的子类)这意味着每当您使用https模块时,您也会使用tls。
现在,最后一个问题:浏览器需要什么?如果您一直关注我所说的一切,您可以看到浏览器需要https。事实上,您今天访问过的大部分网页都可能已经过了https。