注意
仅V5.1.9.6020.2531及以后版本的实例,支持该功能。
前提条件
实例状态为运行中。
背景信息
SSL(Secure Socket Layer,安全套接层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。
开启SSL加密
在使用SSL加密功能前,您需要开启SSL加密,操作步骤如下:
注意
开启SSL后,您需要手动重启全部节点,才能生效。
在天翼云官网首页的顶部菜单栏,选择产品 > 数据库 > 关系型数据库 > 分布式关系型数据库,进入分布式关系型数据库产品页面。然后单击管理控制台,进入概览页面。
在左侧导航栏,选择DRDS > 实例管理,进入实例列表页面。然后在顶部菜单栏,选择区域和项目。
在实例列表中,找到目标实例,单击操作列的管理,进入实例基本信息页面。
在左侧目录单击数据库安全,然后单击连接加密页签,进入SSL加密管理页面。
单击SSL设置。
在SSL设置对话框中,打开SSL链路加密开关,并配置验证模式。
单击提交。
如果您不再需要使用SSL加密,只需在SSL设置对话框中,关闭SSL链路加密开关即可。
如果您的SSL加密验证模式为CA模式,则您还需要在控制台下载自动生成的SSL自签名证书包。
在SSL加密管理页面,单击CA证书参数右侧的下载证书,系统自动下载证书包(包含ca、server和client证书),请妥善保存。
注意
证书默认有效期为10年,您可以根据实际情况,单击证书到期时间参数右侧的重新生成证书,重新生成证书并下载到本地。
客户端连接配置
使用SSL连接DRDS实例的连接模式有多种,本文提供如下常见的加密连接客户端配置:
| 连接场景 | 连接说明 |
|---|
| 不使用SSL加密连接 | |
| 使用SSL标准模式连接 | ssl-mode=PREFFERED 描述:默认行为,client端尝试使用加密进行连接,如果无法构建加密连接,则会退回到未加密的连接
client:mysql -u*** -p*** --ssl-mode=PREFFERED
jdbc:jdbc:mysql://localhost:8066/testdb?requireSSL=false&useSSL=true&verifyServerCertificate=false
ssl-mode=REQUIRED 描述:Client端需要加密连接,如果无法构建连接,则Client端将报错
client:mysql -u*** -p*** --ssl-mode=REQUIRED
jdbc:jdbc:mysql://localhost:8066/testdb?requireSSL=true&useSSL=true&verifyServerCertificate=false
|
使用SSL CA模式连接 注意 使用该方式前,您需要在控制台下载SSL证书包。 | - ssl-mode=VERIFY_CA
单向认证 描述:Client端需要加密连接,并且客户端会根据配置的CA证书对服务端证书进行验证
client:mysql -u*** -p*** --ssl-mode=VERIFY_CA --ssl-ca='${自签名CA证书}'
jdbc: mysql://localhost:8066/testdb?
requireSSL=true
&useSSL=true
&verifyServerCertificate=true
&trustCertificateKeyStoreUrl=file:${自签名CA证书的JKS密钥库}
&trustCertificateKeyStorePassword=${自签名CA证书的JKS密钥库的密码}
双向认证 描述:Client端需要加密连接,客户端会根据配置的CA证书对服务端证书进行验证,同时服务端也会验证客户端证书的有效性
client:mysql -u*** -p*** --ssl-mode=VERIFY_CA --ssl-ca='${自签名CA证书}' --ssl-cert='${客户端数字证书}' --ssl-key='${客户端私钥}'
jdbc:mysql://localhost:8066/testdb?
requireSSL=true
&useSSL=true
&verifyServerCertificate=true
&trustCertificateKeyStoreUrl=file:${自签名CA证书的JKS密钥库}
&trustCertificateKeyStorePassword=${自签名CA证书的JKS密钥库的密码}
&clientCertificateKeyStoreUrl=file:${客户端数字证书和私钥的JKS密钥库}
&clientCertificateKeyStorePassword=file:${客户端数字证书和私钥的JKS密钥库}
|