---
title: github-fill
description: 数据传输加密 安全传输层协议（TLS）用于在两个通信应用程序之间提供保密性和数据完整性。OceanBase 数据库在原有的 TCP 通信上扩展支持 SSL/TLS 协议，解决通信加密的问题。 OceanBase 数据库从产品架构层面可以分为以下三个基本部分。 其中采用两种协议进行通信： MySQL 协议：驱动层 &lt;=…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.5 LTS

# 数据传输加密

更新时间：2026-04-07 20:57:20

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/700.reference/100.oceanbase-database-concepts/1100.database-security/400.transmission-encryption.md)  

安全传输层协议（TLS）用于在两个通信应用程序之间提供保密性和数据完整性。OceanBase 数据库在原有的 TCP 通信上扩展支持 SSL/TLS 协议，解决通信加密的问题。

OceanBase 数据库从产品架构层面可以分为以下三个基本部分。

![传输加密](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/700.reference/100.oceanbase-database-concepts/900.storage-architecture/200.data-storage/transmission-encryption.png)

其中采用两种协议进行通信：

- MySQL 协议：驱动层 <=> 数据链路层，数据链路层 <=> DB 层之间的通信采用扩展的 MySQL 协议。
 - OB-RPC 协议：节点与节点之间或节点与 liboblog、ob_admin 等之间的通信采用节点自有的 RPC 协议通信。

其中数据链路层，DB 层的 OBServer 节点、liboblog、ob_admin 等组件均支持 SSL/TLS 加密通信，底层均依赖 OpenSSL 或者第三方的 SSL 库，为业务提供安全的加密传输服务。

## 支持的私钥/证书加载方式

OBServer 节点、liboblog、obadmin 等组件的底层通信均依赖 Libeasy 库，因此支持的私钥/证书加载方式均相同（本地文件模式），即将 CA 证书、用户证书、私钥放在 `wallet` 文件夹下，根据配置项开启时从该目录下读取加载。

## 开启方式

节点传输加密的开启通过多个配置项配合使用。

1. 指定私钥/证书/CA 证书的获取方式。

   本地文件模式

   ```sql
   alter system set ssl_external_kms_info = '
   {
   "ssl_mode":"file"
   }';

   ```
 2. 配置对应协议的 SSL 使能。

   ```sql
   alter system set ssl_client_authentication = 'TRUE';
   配置为TRUE后，mysql通信ssl即时开启

   ```
 3. 配置 RPC 通信的 SSL 白名单，由于节点之间 TCP 连接都是长连接，因此需要重启节点后 RPC SSL 加密通信才能开启。

   ```sql
   rpc通信ssl需要配置白名单
   alter system set _ob_ssl_invited_nodes='ALL'; 整个集群都开启
   alter system set _ob_ssl_invited_nodes='xx.xx.xx.xx, xx.xx.xx.xx'; 指定ip的observer开启
   ssl

   ```

## 节点如何确定通信加密开启成功

最简单的方法是对 MySQL 端口和 RPC 端口进行抓包，查看是否开启加密，此外可以通过以下方式：

- OBClient/MySQL 登录节点，系统租户检索 `oceanbase.GV$OB_SERVERS` 表的 `ssl_key_expired_time` 字段确认是否开启。
 - 该字段记录当前节点开启 SSL 时，当前节点使用的 SSL 证书过期时间，utc 时间，单位微秒。

  ```sql
  obclient> select svr_ip, svr_port,zone, ssl_key_expired_time, from_unixtime(ssl_key_expired_time/1000000) from oceanbase.GV$OB_SERVERS;
  +-----------------+----------+-------+----------------------+---------------------------------------------+
  | svr_ip          | svr_port | zone  | ssl_key_expired_time | from_unixtime(ssl_key_expired_time/1000000) |
  +-----------------+----------+-------+----------------------+---------------------------------------------+
  | xxx.xxx.xxx.xxx |    13212 | zone1 |           1871860075 | 2029-04-26 09:07:55                         |
  +-----------------+----------+-------+----------------------+---------------------------------------------+
  1 row in set (0.00 sec)

  ```

### 检查 MySQL 端口是否开启 SSL

通过 MySQL/OBClient 登录，执行`\s`查看 SSL 字段的示例如下：

```sql
obclient> \s
--------------
obclient  Ver 1.1.8 Distrib 5.7.24, for Linux (x86_64) using  EditLine wrapper

Connection id:  3221506046
Current database: test
Current user:  root@xx.xx.xx.xx
SSL:   Cipher in use is DHE-RSA-AES128-GCM-SHA256
Current pager:  less
Using outfile:  ''
Using delimiter: ;
Server version:  5.7.25 OceanBase 2.2.60 (r1-63cbd3084a3283523f09d6ba20795f77b95e046b) (Built Jun 30 2020 10:10:29)
Protocol version: 10
Connection:  xx.xx.xx.189 via TCP/IP
Server characterset: utf8mb4
Db     characterset: utf8mb4
Client characterset: utf8mb4
Conn.  characterset: utf8mb4
TCP port:  13213
Active   --------------

```

### 检查 RPC 端口是否开启 SSL

在 `OBServer.log` 中的日志，搜索关键字 "rpc connection accept" 查看 use_ssl = True 还是 False 判定是否 RPC SSL 开启成功。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
