📜  Node.js tls.createServer() 方法(1)

📅  最后修改于: 2023-12-03 15:17:55.774000             🧑  作者: Mango

Node.js tls.createServer() 方法

Node.js 的 tls.createServer() 方法可以被用于创建一个安全的服务器(Secure Server)。它使用 Transport Layer Security(TLS,前身为Secure Sockets Layer (SSL))协议,该协议可以在网络上的客户端和服务器之间提供安全的通信。

语法

下面是 tls.createServer() 方法的语法:

tls.createServer(options[, secureConnectionListener])

参数说明:

  • options:这是一个 Object 类型的值,包含创建安全服务器所需的一组参数。
  • secureConnectionListener:这是用于处理安全连接被建立的回调函数。可选参数,如果省略,则会在 tls.createServer() 方法被调用后自动调用。
例子

下面是 tls.createServer() 方法的一个例子:

const tls = require('tls');
const fs = require('fs');

const options = {
    key: fs.readFileSync('server-key.pem'),
    cert: fs.readFileSync('server-cert.pem'),
};

const server = tls.createServer(options, (socket) => {
    console.log('Server connected to client.');

    socket.write('Welcome to the secure server!\n');

    socket.on('data', (data) => {
        console.log(`Received: ${data}`);

        socket.write(`Echo: ${data}`);
    });

    socket.on('end', () => {
        console.log('Server disconnected from client.');
    });
});

server.listen(8000, () => {
    console.log('Server listening on port 8000...');
});

该示例创建了一个安全服务器,并在里面定义了一个 secureConnectionListener 回调函数。随后,该服务器会监听 8000 端口上的连接请求。当一个客户端连接进来时,会执行 secureConnectionListener 回调函数,并向客户端发送“Welcome to the secure server!”消息。

一旦连接建立成功,就会监听该连接上的数据事件,并在接收到客户端发送的数据时,向客户端发送“Echo: [收到的数据]”消息。

options 参数

下面是 tls.createServer() 方法的 options 参数可能包含的属性:

key

用于使用私钥(Key)在服务器上进行加密的文件或字符串。它必须采用以下格式之一:

  • 一个文件名(字符串)的路径,该文件包含该服务器的私钥。
  • 一个包含私钥的字符串。

如果未指定,则会自动生成一个私钥,但这通常不安全,因为任何人都可以使用默认密钥连接到服务器。

cert

用于使用证书(Certificate)进行服务器身份验证的文件或字符串。它必须采用以下格式之一:

  • 一个文件名(字符串)的路径,该文件包含该服务器的证书。
  • 一个包含证书的字符串。

如果未指定,则会自动生成一个证书,但这通常不安全,因为任何人都可以使用默认证书建立连接。

port

服务器要监听的端口号。如果未指定,将使用随机端口号进行监听。

host

服务器要监听的主机地址。如果未指定,将使用 0.0.0.0。

ca

可信任的 CA 列表,用于验证客户端发送的证书。该属性应该是一个包含 CA 证书的、字符串或多行字符串的数组。如果未指定,则将仅在节点内置的 CA 证书集合中搜索 CA 证书。

参考资料