Skip to content

Node.js 中的 tls 模块用于实现传输层安全(Transport Layer SecurityTLS)和安全套接字层(Secure Socket LayerSSL)协议。

它提供了用于创建安全客户端和服务器的工具,以确保数据在传输过程中是加密和安全的。

以下是一些关于 tls 模块的关键点和示例:

  1. 创建服务器:tls.createServer() 方法用于创建一个 TLS 服务器。
  2. 创建客户端:tls.connect() 方法用于创建一个 TLS 客户端。
  3. 加密套件和协议:可以指定使用的加密套件和协议版本。
  4. 证书和密钥:需要提供证书和密钥文件来进行加密和身份验证。
  5. 事件:tls.Servertls.TLSSocket 对象都有各种事件,如secureConnectiondataend等。

1.server

创建一个 TLS 服务器。

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

const options = {
  key: fs.readFileSync('server-key.pem'),
  cert: fs.readFileSync('server-cert.pem'),
  // 可选的其他配置项
  // ca: [fs.readFileSync('ca-cert.pem')],
}

const server = tls.createServer(options, (socket) => {
  console.log('Server connected',
              socket.authorized ? 'authorized' : 'unauthorized')
  socket.write('Welcome!\n')
  socket.setEncoding('utf8')
  socket.pipe(socket)
})

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

2.client

创建一个 TLS 客户端。

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

const options = {
  host: 'localhost',
  port: 8000,
  ca: [fs.readFileSync('server-cert.pem')],
  // 可选的其他配置项
}

const client = tls.connect(options, () => {
  console.log('Client connected',
              client.authorized ? 'authorized' : 'unauthorized')
  process.stdin.pipe(client)
  process.stdin.resume()
})

client.setEncoding('utf8')
client.on('data', (data) => {
  console.log(data)
})