设置SSL加密

为了提高链路安全性,您可以启用SSL(Secure Sockets Layer)加密,并安装SSL CA证书到需要的应用服务。SSL在传输层对网络连接进行加密,能提升通信数据的安全性和完整性,但会同时增加网络连接响应时间。

背景信息

SSL是Netscape公司所提出的安全保密协议,在浏览器和Web服务器之间构造安全通道来进行数据传输,采用RC4、MD5、RSA等加密算法实现安全通讯。国际互联网工程任务组(IETF)对SSL 3.0进行了标准化,标准化后更名为安全传输层协议(TLS)。由于SSL这一术语更为常用,因此本文所述的SSL加密实际是指TLS加密。

注意事项

  • SSL的证书有效期为1年,请及时更新证书有效期并重新下载和配置CA证书,否则使用加密连接的客户端程序将无法正常连接。更新证书有效期的详细说明,请参见更新证书有效期

  • 由于SSL加密的固有缺陷,启用SSL加密会显著增加CPU使用率,建议您仅在外网链路有加密需求的时候启用SSL加密。内网链路相对较安全,一般无需对链路加密。

  • 修改受保护地址后,SSL证书会自动更新,同时重启您的数据库实例,请谨慎操作。

  • 更新证书有效期操作将会重启集群,重启前请做好业务安排,谨慎操作。

  • 开启SSL加密的PolarDB连接地址需要少于64个字符,如何修改连接地址请参见配置数据库代理

开启SSL加密和下载证书

  1. 登录PolarDB控制台
  2. 在控制台左上角,选择集群所在地域。
  3. 找到目标集群,单击集群ID。
  4. 在左侧菜单栏中单击配置与管理 > 安全管理

  5. SSL配置页签,单击SSL状态右侧滑块,开启SSL加密。

    开启SSL加密

    说明

    PolarDB MySQL版8.0、5.7和5.6版本支持为主地址、集群地址和自定义地址配置SSL。

  6. 设置SSL对话框中,选择需要开通SSL加密的链路,单击确定

    说明

    您可以根据需要,选择加密内网链路或者外网链路,但只可以加密一条链路。

    设置SSL加密

  7. SSL状态变为已开通后,单击下载证书

    下载证书

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

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

    • .pem格式文件:用于其他系统或应用中导入CA证书。

    • .jks格式文件:Java中的truststore证书存储文件,密码统一为apsaradb,用于Java程序中导入CA证书链。

      说明

      在Java中使用JKS证书文件时,jdk7和jdk8需要修改默认的jdk安全配置,在连接PolarDB数据库的服务器的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

    如果您需要修改SSL受保护的地址,可以单击设置SSL进行修改。设置SSL

    重要

    修改受保护地址后,SSL证书会自动更新,同时重启您的数据库实例,请谨慎操作。

配置SSL CA证书

开通SSL加密后,应用或者客户端连接PolarDB前,建议配置SSL CA证书。本文以MySQL Workbench和Navicat为例,介绍SSL CA证书的配置方法。其它应用或者客户端请参见对应产品的使用说明。

MySQL Workbench配置方法

  1. 打开MySQL Workbench。

  2. 选择Database > Manage Connections

  3. 启用Use SSL,并导入SSL CA证书。

Navicat配置方法

  1. 打开Navicat。

  2. 在目标数据库上单击鼠标右键,选择编辑连接

    2

  3. 选择SSL页签,选择.pem格式CA证书的路径。参照下图进行设置。

    3

  4. 单击确定

    说明

    如果报Connection with same connection name already exists in the project.错误,是由于之前的会话未断开,请关闭Navicat重新打开。

  5. 双击目标数据库测试能否正常连接。

    4

更新证书有效期

如果您修改了SSL连接地址或证书有效期即将到期,您需要手动更新证书有效期,以下内容将为您介绍如何更新证书有效期。

说明

更新证书有效期操作将会重启集群,重启前请做好业务安排,谨慎操作。

  1. 登录PolarDB控制台
  2. 在控制台左上角,选择集群所在地域。
  3. 找到目标集群,单击集群ID。
  4. 在左侧菜单栏中单击配置与管理 > 安全管理

  5. SSL配置页签中单击更新有效期

    更新证书有效期

  6. 在弹出的对话框中,单击确定

  7. 更新有效期后,重新下载和配置证书。

    说明

开启证书自动轮换

开启证书自动轮转后,在证书即将过期的10天内,PolarDB会在集群的可维护时间窗口内自动更新证书。

说明

自动更新证书将会重启集群,请您谨慎选择。

  1. SSL配置页签中,单击高级选项证书自动轮换

  2. 高级选项对话框中,选择开启证书自动轮转,并单击确定证书自动轮换

关闭SSL加密

说明
  • 关闭SSL加密会重启集群,建议您在业务低峰期操作。

  • SSL加密关闭后,数据库访问性能会有一定程度的提升,但安全性上有削弱,因此在非安全环境下不建议关闭SSL加密。

  1. 登录PolarDB控制台
  2. 在控制台左上角,选择集群所在地域。
  3. 找到目标集群,单击集群ID。
  4. 在左侧菜单栏中单击配置与管理 > 安全管理

  5. SSL配置页签中,单击SSL状态右侧滑块来关闭SSL加密。

  6. 在弹出的对话框中,单击确定

查看SSL加密套件

SSL协议有很多版本,PolarDB目前支持TLSv1.2及以上的版本。在SSL握手期间,客户端会和PolarDB服务端交换协商信息,这些信息包括TLS版本、加密套件和会话密钥等。详细的加密套件列表可以在OpenSSL官网进行查看。

成功建立SSL连接后,您可以执行以下SQL语句查看该连接使用的SSL加密套件:

SHOW STATUS LIKE 'ssl_cipher';
+---------------+-------------------+
| Variable_name | Value             |
+---------------+-------------------+
| Ssl_cipher    | AES128-GCM-SHA256 |
+---------------+-------------------+

如果连接未加密,查询返回的变量为空值。

相关API

API

描述

DescribeDBClusterSSL - 查询PolarDB集群SSL设置

调用DescribeDBClusterSSL接口查询PolarDB集群SSL设置。

ModifyDBClusterSSL - 设置集群SSL

调用ModifyDBClusterSSL接口设置PolarDB集群SSL加密的开通、关闭或更新CA证书。