Node.js tlsSocket.getPeerFinished() 方法

2025年2月20日 | 阅读 3 分钟

Node.js 的 tls 模块中的 TLSSocket 类,如果没有 "tlsSocket.getPeerFinished()" 方法将是不完整的。该方法在 SSL/TLS 通信中,尤其是在握手过程中,具有重要意义。

当对等方在 SSL/TLS 握手期间发送 Finished 消息时,可以使用 "getPeerFinished()" 方法检索它。此消息对于确认握手以及验证双方是否已正确协商相同的会话参数至关重要。

对于需要对 TLS 握手过程进行精细控制的应用程序,TlsSocket.getPeerFinished() 方法非常有用。它通常用于需要广泛安全验证的情况。开发人员可以通过访问此低级数据来执行额外的安全检查或诊断,从而提高其加密连接的弹性。这对于调试、自定义安全协议以及需要显式确认 TLS 握手已完成的系统集成尤其有帮助。该方法展示了 Node.js 管理通信网络中复杂安全需求的能力。

此函数封装了 TLS 握手期间客户端和服务器之间返回的最后验证数据,并返回从对等方接收到的最新 Finished 消息。通过这种通信,双方可以成功地相互验证,确保握手过程的完整性和真实性。

语法

它具有以下语法:

参数

  • TlsSocket:这是 TLSSocket 的实例,它是 net.Socket 的子类,代表由 TLS/SSL 保护的网络套接字。
  • GetPeerFinished():在 TLSSocket 实例上,有一个名为 getPeerFinished() 的方法。在 SSL/TLS 握手期间,获取对等方发送的最新 Finished 消息。

返回值

此方法返回的缓冲区对象包含整个握手的消息摘要。

关键私钥:将以下密钥复制并粘贴到记事本中。

将文件保存为 private.pem。

公钥证书:启动记事本,然后复制并粘贴以下密钥

将文件保存为 public.pem。

示例

让我们通过一个示例来说明 Node.js tlsSocket.getPeerFinished() 方法。

输出

 
Hello! I am listening at 127.0.0.1, on port 1880 
The client closed successfully.
Received: Finisher message: 127, 135, 25, 169, 34, 158, 46, 183, 67, 139, 49, 173, 82, 145, 122, 148, 171, 81, 74, 188, 135, 38, 170, 168.
The server closed successfully.   

说明

此代码使用 Node.js 配置了 TLS 服务器和客户端。服务器监听的端口是 127.0.0.1:1337,并使用私钥和公钥(private.pem 和 public.pem)创建。在从客户端接收数据后将其打印到控制台,然后关闭服务器。客户端利用相同的 TLS 选项与服务器建立连接,使用 tlsSocket.getPeerFinished() 获取对等方发送给服务器的 Finished 消息,然后关闭连接。服务器打印此消息,客户端和服务器便能够安全地通信;在成功关闭后,服务器和客户端都会打印一条消息并优雅地处理关闭事件。