📅  最后修改于: 2023-12-03 15:17:55.774000             🧑  作者: Mango
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: [收到的数据]”消息。
下面是 tls.createServer() 方法的 options 参数可能包含的属性:
key
用于使用私钥(Key)在服务器上进行加密的文件或字符串。它必须采用以下格式之一:
如果未指定,则会自动生成一个私钥,但这通常不安全,因为任何人都可以使用默认密钥连接到服务器。
cert
用于使用证书(Certificate)进行服务器身份验证的文件或字符串。它必须采用以下格式之一:
如果未指定,则会自动生成一个证书,但这通常不安全,因为任何人都可以使用默认证书建立连接。
port
服务器要监听的端口号。如果未指定,将使用随机端口号进行监听。
host
服务器要监听的主机地址。如果未指定,将使用 0.0.0.0。
ca
可信任的 CA 列表,用于验证客户端发送的证书。该属性应该是一个包含 CA 证书的、字符串或多行字符串的数组。如果未指定,则将仅在节点内置的 CA 证书集合中搜索 CA 证书。