全部产品
Search
文档中心

云原生多模数据库 Lindorm:MySQL 协议 SSL 加密使用指南

更新时间:Sep 23, 2026

本文介绍 Lindorm 宽表引擎 MySQL 协议 33060 端口的 SSL/TLS 加密链路使用方式。

版本要求

  • 宽表 >= 2.8.6.14 并且 SQL 版本 >= 2.9.7.16

适用范围

本文说明 Lindorm 宽表引擎 MySQL 协议 33060 端口的 SSL/TLS 加密链路使用方式,覆盖以下场景:

  • 客户端只要求链路加密:使用 sslMode=REQUIRED。

  • 客户端要求基于 CA 证书校验服务端证书链:使用 sslMode=VERIFY_CA 并配置控制台下载的 CA 证书。JDBC 客户端需要使用 CA 证书严格校验时,将 CA 证书导入 truststore 后连接。

控制台开通 SSL 加密服务

前提条件

已开通 Lindorm 宽表引擎。

操作步骤

  1. 登录Lindorm管理控制台。

  2. 在页面左上角,选择实例所属的地域。

  3. 在实例列表页,单击目标实例ID或者目标实例所在行操作列的管理。

  4. 在实例详情页左侧导航栏,依次单击宽表引擎 > 数据安全。

  5. 在数据链路SSL区域,在当前状态:区域进行开启操作。

  6. 等待 SSL 加密服务开通完成。页面显示以下信息时,表示 SSL 加密服务已开启:

    • 当前状态::已开启

    • SSL证书有效期::页面展示的证书过期时间,例如 2036-06-13 18:02:25

    • SSL证书有效性::有效

    • 页面提供下 载 CA 证 书按钮

说明

客户端如果要使用 VERIFY_CA 严格校验,需要单击下 载 CA 证 书获取 CA 证书文件。

客户端连接模式

只要求加密链路

若仅需保障客户端到服务端的链路加密,使用 sslMode=REQUIRED。该模式会启用 TLS 加密,但无需客户端额外配置 CA 根证书。

  • MySQL 命令示例

    mysql --ssl-mode=REQUIRED \
      -h <host> \
      -P 33060 \
      -u <user> \
      -p \
      -D <database> \
      --get-server-public-key

    详细使用方式可参见通过MySQL命令行连接并使用宽表引擎。

  • JDBC示例

    String url = "jdbc:mysql://<host>:33060/<database>"
        + "?sslMode=REQUIRED"
        + "&allowPublicKeyRetrieval=true";
    Connection connection = DriverManager.getConnection(url, user, password);

    详细使用方式可参见基于Java JDBC接口的应用开发。

严格校验证书链

如果客户端需要确认服务端证书由可信 CA 签发,使用 sslMode=VERIFY_CA,并通过 --ssl-ca 指定控制台下载的 CA 证书。

mysql --ssl-mode=VERIFY_CA \
  --ssl-ca=/path/to/Lindorm-CA.crt \
  -h <host> \
  -P 33060 \
  -u <user> \
  -p \
  -D <database> \
  --get-server-public-key

示例查询:

mysql --ssl-mode=VERIFY_CA \
  --ssl-ca=/path/to/Lindorm-CA.crt \
  -h <host> -P 33060 -u <user> -p -D <database> \
  --get-server-public-key \
  -e "SELECT 1 AS ok"
说明

请将示例中的/path/to/Lindorm-CA.crt 替换为 Lindorm-CA.crt 文件在您本地环境中的实际绝对路径。

返回 ok = 1 表示客户端已基于 CA 证书完成 SSL 握手和查询。

VERIFY_IDENTITY 模式说明

VERIFY_IDENTITY 会在 VERIFY_CA 的基础上继续校验连接域名是否匹配服务端证书的 SAN/CN。因此,使用该模式的前提是:客户端连接时使用的 host 必须与证书中声明的域名或 IP 完全一致。

JDBC 严格 CA 校验

MySQL Connector/J 通用做法是先把控制台下载的 CA 证书导入 Java truststore,再在 JDBC URL 中配置 truststore。

生成 truststore

keytool -importcert \
  -alias lindorm-ca \
  -file /path/to/Lindorm-CA.crt \
  -keystore /path/to/lindorm-ca.p12 \
  -storetype PKCS12 \
  -storepass changeit \
  -noprompt
说明
  • 请将示例中的 /path/to/Lindorm-CA.crt 替换为该证书文件在您本地环境中的实际绝对路径。

  • 请将示例中的 /path/to/lindorm-ca.p12 替换为您计划在本地环境中保存该文件的实际绝对路径。

JDBC URL

String url = "jdbc:mysql://<host>:33060/<database>"
    + "?sslMode=VERIFY_CA"
    + "&allowPublicKeyRetrieval=true"
    + "&trustCertificateKeyStoreUrl=file:/path/to/lindorm-ca.p12"
    + "&trustCertificateKeyStorePassword=changeit"
    + "&trustCertificateKeyStoreType=PKCS12";
Connection connection = DriverManager.getConnection(url, user, password);

注意:trustCertificateKeyStoreUrl 使用的是 truststore 文件路径,不是直接填写服务端证书路径。控制台下载的 CA 证书可以先导入 PKCS12 或 JKS truststore 后再给 JDBC 使用。

常见问题

  • Q:SSL 加密是否控制台开通以后就能够生效

    A:SSL 加密是否开通是服务端和客户端协商决定的,需要在客户端配置 sslMode 来协商决定。

  • Q:SSL 加密是否有性能损耗

    A:开通 SSL 加密会有性能损耗,对于性能敏感场景,建议禁用 SSL 加密,可以在连接串中设置 sslMode=DISABLED 来禁用 SSL 加密。

  • Q:只配置证书路径是否会自动开启 SSL

    A:不会。服务端必须开启对应 SSL 开关后,MySQL 协议 SSL 链路才会启用。

  • Q:REQUIRED 和 VERIFY_CA 有什么区别

    A:REQUIRED 只要求建立 TLS 加密链路,不要求客户端校验服务端证书链。

    VERIFY_CA 除了建立 TLS 加密链路,还要求客户端信任签发服务端证书的 CA 根证书。

  • Q:--ssl-ca 应该填写哪个证书

    A:填写控制台 下载 CA 证书 得到的 CA 根证书。不要把服务端证书 server.cert 直接当作 --ssl-ca 使用。

  • Q:JDBC 可以直接使用 crt 文件吗

    A:不同 MySQL Connector/J 版本对 PEM 证书参数的支持存在差异。通用做法是将控制台下载的 CA 证书导入 PKCS12 或 JKS truststore,然后通过 trustCertificateKeyStoreUrl、trustCertificateKeyStorePassword、trustCertificateKeyStoreType 配置给 JDBC。