RDS MySQL支持对数据库代理连接地址进行SSL(Secure Sockets Layer)加密,您可以启用SSL加密,并安装SSL CA证书到需要的应用服务,以提高RDS MySQL的链路安全性。本文介绍如何设置代理SSL加密。
SSL在传输层对网络连接进行加密,能提升通信数据的安全性和完整性,但会同时增加网络连接响应时间。
前提条件
实例版本如下:
MySQL 8.0高可用系列(内核小版本20200831或以上)
MySQL 8.0集群系列
MySQL 5.7集群系列
MySQL 5.7高可用系列(内核小版本20200831或以上)
MySQL 5.6高可用系列(内核小版本20200831或以上)
说明如果实例有只读实例,只读实例也需要满足内核小版本要求。
数据库代理内核小版本为1.12.8或以上。
需要开通SSL加密的代理连接地址总长度不能超过64个字符。
注意事项
每个代理终端中仅支持对一个代理连接地址设置SSL加密。
开通SSL加密、关闭SSL加密、修改SSL加密、更新证书有效期都会重启代理实例,请谨慎操作。
开通SSL加密
开通SSL加密会重启实例,请谨慎操作。
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏,单击数据库代理。
在连接信息区域,将鼠标悬停在目标代理连接地址ID,在弹出的对话框中的SSL配置信息区域,单击SSL证书信息右侧的开通。
在弹出的对话框中,选择需要加密的地址,然后单击确定。
SSL状态变为已开通后,单击SSL证书信息右侧的下载CA证书。
说明下载的文件为压缩包,包含如下三个文件:
PEM文件:适用于绝大部分场景。
JKS文件:PEM格式CA证书通常需要导入到truststore,即转换为JKS文件才能在Java中使用。您可以在Java程序中使用此JKS文件,密码为apsaradb。
p7b文件:适用于少数要求PKCS #7证书文件的Windows应用。
配置SSL 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
配置SSL CA证书
开通SSL加密并下载CA证书后,可以配置SSL CA证书。具体操作,请参见配置CA证书。
修改SSL加密地址
修改SSL加密地址会更新证书有效期,同时重启实例,请谨慎操作。
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏,单击数据库代理。
在连接信息区域,将鼠标悬停在目标代理连接地址ID,在弹出的对话框中的SSL配置信息区域,单击受保护地址下方的修改受保护地址。
选择需要加密的地址,然后单击确定。
更新证书有效期
更新证书有效期会重启实例,请谨慎操作。
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏,单击数据库代理。
在连接信息区域,将鼠标悬停在目标代理连接地址ID,在弹出的对话框中的SSL配置信息区域,单击SSL证书信息右侧的更新有效期,在弹出的对话框中单击确定。
关闭SSL加密
关闭SSL加密会重启实例,请谨慎操作。
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏,单击数据库代理。
在连接信息区域,将鼠标悬停在目标代理连接地址ID,在弹出的对话框中的SSL配置信息区域,单击SSL证书信息右侧的关闭,在弹出的对话框中单击确定。
相关API
API | 描述 |
设置数据库代理连接地址SSL加密。 | |
查询数据库代理连接地址SSL加密信息。 |
附录
通过SSL连接数据库示例代码
请参见通过SSL连接数据库示例代码。
SSL加密常见问题
请参见SSL加密常见问题。