Node.js
中的 tls
模块用于实现传输层安全(Transport Layer Security
,TLS
)和安全套接字层(Secure Socket Layer
,SSL
)协议。
它提供了用于创建安全客户端和服务器的工具,以确保数据在传输过程中是加密和安全的。
以下是一些关于 tls
模块的关键点和示例:
- 创建服务器:
tls.createServer()
方法用于创建一个TLS
服务器。 - 创建客户端:
tls.connect()
方法用于创建一个TLS
客户端。 - 加密套件和协议:可以指定使用的加密套件和协议版本。
- 证书和密钥:需要提供证书和密钥文件来进行加密和身份验证。
- 事件:
tls.Server
和tls.TLSSocket
对象都有各种事件,如secureConnection
、data
、end
等。
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)
})