tls/ssl模块
TLS/SSL 是一组协议,它们依赖于公钥基础设施 (PKI) 来实现客户端和服务器之间的安全通信,目的是为互联网通信提供安全及数据完整性保障。对于最常见的情况,每个服务器都必须有一个私钥。 TLS(Transport Layer Security): 安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性, 该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。 SSL(Secure Socket Layer): 安全套接字层,TLS安全传输层协议前身 SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听
tls的工作过程
tls密钥的生成过程
可以通过多种方式生成私钥。以下示例说明了使用 OpenSSL 命令行界面生成 2048 位 RSA 私钥:
openssl genrsa -out ryans-key.pem 2048
使用 TLS/SSL,所有服务器(和一些客户端)都必须有证书。证书是对应于私钥的公钥,由证书颁发机构或私钥所有者进行数字签名(此类证书称为“自签名”)。获取证书的第一步是创建证书签名请求 (CSR) 文件:
openssl req -new -sha256 -key ryans-key.pem -out ryans-csr.pem
生成 CSR 文件后,可以将其发送到证书颁发机构进行签名或用于生成自签名证书。 以下示例说明了使用 OpenSSL 命令行界面创建自签名证书
openssl x509 -req -in ryans-csr.pem -signkey ryans-key.pem -out ryans-cert.pem
生成证书后,可用于生成 .pfx 或 .p12 文件
openssl pkcs12 -export -in ryans-cert.pem -inkey ryans-key.pem \
-certfile ca-cert.pem -out ryans.pfx
引言
node:tls 模块提供了构建在 OpenSSL 之上的传输层安全性 (TLS) 和安全套接字层 (SSL) 协议的实现。可以使用以下方式访问该模块:
const tls = require('node:tls');
Server
继承于
net.server
,接受使用TLS或者SSL的加密连接!