Skip to content

快速创建TCP/SSL虚拟服务 ​

简介 ​

TCP/SSL 虚拟服务在 TCP 四层转发的基础上增加了 TLS 加密——客户端与负载均衡之间建立安全的 TLS 通道后,再以 TCP 方式转发给后端。适合需要加密传输但不是 HTTP 协议的场景。

如果您熟悉 NGINX,TCP/SSL 对应 stream {} 块中配置了 SSL 证书的 server 指令。

典型场景:

  • 加密的数据库连接(如需要 TLS 的 MySQL、PostgreSQL)
  • 自定义 TCP 协议需要传输层加密
  • MQTT、gRPC 等非 HTTP 协议的 TLS 加密代理

与 TCP / HTTPS 的区别 ​

维度TCPTCP/SSLHTTPS
工作层次L4L4 + TLSL7 + TLS
加密传输否是是
解析 HTTP否否是
基于 URL 路由否否是
SSL 证书不需要需要需要
SSL 策略不需要需要需要
支持国密否是是
会话保持源地址源地址 / SSL Session ID六种方式

操作步骤概览 ​

第一步:创建转发引擎        →  同 TCP
第二步:上传 SSL 证书        →  准备证书及其匹配私钥
第三步:创建 SSL 策略        →  定义加密套件、协议版本、会话复用
第四步:创建健康检查策略    →  TCP 或 SslClientHello
第五步:创建服务器池        →  同 TCP
第六步:创建虚拟服务        →  选择 TCP/SSL 类型,关联 SSL 策略
第七步:变更执行并验证      →  验证 TLS 握手成功

下面以将 10.1.9.117:3307 的加密 TCP 流量分发到后端两个 MySQL 节点为例。

第一步:创建转发引擎 ​

与 TCP 虚拟服务完全一致。参见 快速创建TCP虚拟服务 - 创建转发引擎。

第二步:上传 SSL 证书 ​

入口:【平台系统 → SSL 证书管理】,点击"新增"。

SSL证书配置

配置项说明
证书名称自定义,如 mysql-tls-cert
证书内容粘贴完整的证书链(服务器证书 + 中间 CA)
私钥名称自定义,如 mysql-tls-key;在 SSL 身份配置中明确选择与证书匹配的私钥
私钥内容粘贴私钥文件内容

详细说明参见 快速创建HTTPS虚拟服务 - 上传证书。

第三步:创建 SSL 客户端策略 ​

入口:【负载流量管理 → 策略配置 → SSL 策略 → 客户端 SSL 策略】,点击“新增”。

客户端 SSL 策略的协议与套件选择

截图用于说明操作位置,实际版本和套件应按业务要求选择。

配置项建议
协议能力普通 TLS 业务选择“国际标准 TLS”
国际标准 TLS 身份证书选择第二步上传的证书及匹配私钥
TLS/SSL 协议版本按对端能力选择,例如 TLS 1.2 和 TLS 1.3
Session 缓存开启(减少重复握手)
Session Ticket按会话恢复需求配置;启用本身不保证跨引擎恢复会话
安全套件在选择器中配置,分别核对 TLS/TLCP 与 TLS 1.3 页签

各字段的详细解释参见 快速创建HTTPS虚拟服务 - SSL策略 和 SSL 策略用户手册。

第四步:创建健康检查策略 ​

TCP/SSL 场景推荐以下健康检查方式:

协议适用场景
TCP通用,三次握手成功即判健康
SslClientHello验证后端能正确响应 TLS ClientHello(适用于后端也开启了 TLS 的场景)

入口:【SLB 本地负载 → 健康检查】,配置与 TCP 虚拟服务一致。参见 快速创建TCP虚拟服务 - 健康检查。

第五步:创建服务器池 ​

与 TCP 虚拟服务完全一致。入口:【SLB 本地负载 → 服务器池】。

配置项示例值
服务器池名称mysql-tls-backend-pool
负载均衡算法最小连接数(数据库长连接推荐)
健康检查选择第四步创建的策略
转发引擎engine117
目标节点10.1.9.114:3306, 10.1.9.117:3306

参见 快速创建TCP虚拟服务 - 创建服务器池。

第六步:创建虚拟服务 ​

入口:【SLB 本地负载 → 虚拟服务】,点击"新增"。

配置项示例值说明
名称mysql-tls-proxy
对象类型转发引擎 或 流量组
协议TCP/SSL关键区别
监听地址10.1.9.117
端口3307对外暴露的加密端口
SSL 客户端策略选择第三步创建的 SSL 策略仅 TCP/SSL 和 HTTPS 需配置

默认分发规则 ​

配置项示例值
处理方式TCP SSL 代理
服务器池mysql-tls-backend-pool
TCP 策略选择系统内置的"TCP 策略模板"(或自定义)

四层 TCP 策略中可配置 SNAT、会话保持、溯源等。参见 快速创建TCP虚拟服务 - 四层策略。

第七步:变更执行并验证 ​

变更执行 ​

点击"变更执行"使配置生效。

验证 TLS 握手 ​

bash
# 验证 TLS 握手成功,查看证书信息
openssl s_client -connect 10.1.9.117:3307 -servername mysql.example.com

# 使用 mysql 客户端(需要支持 TLS)
mysql -h 10.1.9.117 -P 3307 -u username -p --ssl-mode=REQUIRED

如果 openssl 输出中显示了证书信息和 Verify return code: 0,表示 TLS 握手成功。curl 不适用于验证 TCP/SSL(因为不是 HTTP 协议)。


SSL 策略完整配置参见 SSL 策略用户手册。国密算法支持参见 国密配置与验证。