为了提高链路安全性,您可以启用SSL(Secure Sockets Layer)加密,并安装SSL CA证书到需要的应用服务。SSL在传输层对网络连接进行加密,能提升通信数据的安全性和完整性,但会同时增加网络连接响应时间。
背景信息
SSL是Netscape公司所提出的安全保密协议,在浏览器和Web服务器之间构造安全通道来进行数据传输,采用RC4、MD5、RSA等加密算法实现安全通讯。国际互联网工程任务组(IETF)对SSL 3.0进行了标准化,标准化后更名为安全传输层协议(TLS)。由于SSL这一术语更为常用,因此本文所述的SSL加密实际是指TLS加密。
注意事项
开启SSL加密和下载证书
- 登录PolarDB控制台。
- 在控制台左上角,选择集群所在地域。
- 找到目标集群,单击集群ID。
在左侧菜单栏中单击 。
在SSL配置页签,单击SSL状态右侧滑块,开启SSL加密。
说明PolarDB MySQL版8.0、5.7和5.6版本支持为主地址、集群地址和自定义地址配置SSL。
在设置SSL对话框中,选择需要开通SSL加密的链路,单击确定。
说明您可以根据需要,选择加密内网链路或者外网链路,但只可以加密一条链路。
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 CA证书
开通SSL加密后,应用或者客户端连接PolarDB前,建议配置SSL CA证书。本文以MySQL Workbench和Navicat为例,介绍SSL CA证书的配置方法。其它应用或者客户端请参见对应产品的使用说明。
MySQL Workbench配置方法
打开MySQL Workbench。
选择 。
启用Use SSL,并导入SSL CA证书。
Navicat配置方法
打开Navicat。
在目标数据库上单击鼠标右键,选择编辑连接 。
选择SSL页签,选择.pem格式CA证书的路径。参照下图进行设置。
单击确定。
说明如果报
Connection with same connection name already exists in the project.
错误,是由于之前的会话未断开,请关闭Navicat重新打开。双击目标数据库测试能否正常连接。
更新证书有效期
如果您修改了SSL连接地址或证书有效期即将到期,您需要手动更新证书有效期,以下内容将为您介绍如何更新证书有效期。
更新证书有效期操作将会重启集群,重启前请做好业务安排,谨慎操作。
- 登录PolarDB控制台。
- 在控制台左上角,选择集群所在地域。
- 找到目标集群,单击集群ID。
在左侧菜单栏中单击 。
在SSL配置页签中单击更新有效期。
在弹出的对话框中,单击确定。
更新有效期后,重新下载和配置证书。
说明下载证书请参见开启SSL加密和下载证书第七步。
配置证书请参见配置SSL CA证书。
开启证书自动轮换
开启证书自动轮转后,在证书即将过期的10天内,PolarDB会在集群的可维护时间窗口内自动更新证书。
自动更新证书将会重启集群,请您谨慎选择。
在SSL配置页签中,单击高级选项。
在高级选项对话框中,选择开启证书自动轮转,并单击确定。
关闭SSL加密
关闭SSL加密会重启集群,建议您在业务低峰期操作。
SSL加密关闭后,数据库访问性能会有一定程度的提升,但安全性上有削弱,因此在非安全环境下不建议关闭SSL加密。
- 登录PolarDB控制台。
- 在控制台左上角,选择集群所在地域。
- 找到目标集群,单击集群ID。
在左侧菜单栏中单击 。
在SSL配置页签中,单击SSL状态右侧滑块来关闭SSL加密。
在弹出的对话框中,单击确定。
查看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设置。 | |
调用ModifyDBClusterSSL接口设置PolarDB集群SSL加密的开通、关闭或更新CA证书。 |