SSL 链路加密

更新时间:
复制 MD 格式

本页面为您介绍 SSL 链路加密的操作步骤。

背景信息

为了提高链路安全性,OceanBase 数据库连接支持开启 SSL(Secure Sockets Layer)加密,通过在传输层对网络连接进行加密,提升通信数据的安全性。在开启 SSL 连接之后,支持设置要求客户端也必须使用 SSL 连接访问。

说明
  • SSL 链路加密开启后暂不支持关闭,实例性能将有轻微下降(证书加解密需要消耗一定的计算资源),建议仅在有外网连接或者有传输加密需求的时候开启实例 SSL 链路加密。

  • 云数据库 OceanBase V2.2.76 及以上版本支持 SSL 链路加密功能。

  • 标准版(Key-Value)集群暂不支持 SSL 链路加密功能。

  • SSL 链路加密功能对直连地址不生效。

TLS 版本说明

TLS(Transport Layer Security)是一种被广泛采用的传输层安全性协议,用来保障互联网通信的私密性和数据安全性。TLS 协议有很多版本,JDK 与 MySQL Connector/J 组合的不同版本对 TLS 的支持情况如下:

JDK 版本

MySQL Connector/J 版本

TLSv1.0

TLSv1.1

TLSv1.2

TLSv1.3

JDK 8

< 8u291

-

支持

支持

支持

不支持

8u291 ~ 8u333

-

不支持

不支持

支持

不支持

>= 8u341

< 8.0.19

不支持

不支持

支持

不支持

>= 8.0.19

不支持

不支持

支持

支持

JDK 9

-

-

支持

支持

支持

不支持

JDK 11

< 11.0.11

< 8.0.19

支持

支持

支持

不支持

>= 8.0.19

支持

支持

支持

支持

>= 11.0.11

< 8.0.19

不支持

不支持

支持

不支持

>= 8.0.19

不支持

不支持

支持

支持

操作步骤

  1. 登录 OceanBase 管理控制台 。

  2. 在左侧导航栏单击 实例列表。

  3. 在实例列表中找到目标集群实例,单击集群实例名称,进入 集群实例工作台 页面。

  4. 在左侧导航栏单击 安全设置。

  5. 单击 SSL 链路加密 页签,您可进行如下操作。

    1. 单击 SSL 链路加密 开关,开启 SSL 链路加密,开启过程大概需要 3~5 分钟。SSL 链路加密成功开启后,有些版本可选择是否开启 强制 SSL 连接。如果页面不显示强制 SSL 链接,说明当前版本不支持强制开启。强制SSL.png

      说明

      开启强制 SSL 连接,会屏蔽非 SSL 连接,历史创建的非 SSL 连接将失效,请注意切换连接方式。

    2. 单击 下载 CA 证书,下载证书。

      下载的文件为压缩包,包含如下三个文件:

      • p7b 文件:用于 Windows 系统中导入 CA 证书。

      • PEM 文件:用于其他系统或应用中导入 CA 证书。

      • JKS 文件:Java 中的 truststore 证书存储文件,密码统一为 OceanBase,用于 Java 程序中导入 CA 证书链。

      说明

      在 Java 中使用 JKS 证书文件时,jdk7 和 jdk8 需要修改默认的 jdk 安全配置,在应用程序所在主机的jre/lib/security/java.security文件中,修改如下两项配置:

      jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224
      jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

      若不修改 jdk 安全配置,会报如下错误。其他类似报错,一般也都由 Java 安全配置导致。

      javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints
    3. 单击 更新有效期,可以刷新 SSL 证书有效期。

      2

    4. 单击 自动更新 SSL 证书有效期 开关,开启后,证书将在到期前 7 天自动更新,每次更新有效时长为 360 天。

      image

常见问题

当 Java 程序连接报错 javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)时,您可以通过以下任一方式解决该问题:

  • 在 JDBC 连接串 url 参数中指定 TLS 版本,例如指定 enabledTLSProtocols=TLSv1.2。

  • 降低使用的 JDK 版本至 1.8.0_291 以下。