使用云端证书快速配置SSL加密
PolarDB PostgreSQL版支持设置SSL链路加密,对网络连接进行加密,保证传输链路的安全。本文介绍在新版管理页面,针对主地址或集群地址开启SSL链路加密功能的入门配置。如果您的实例在安全管理 > SSL配置页面不支持单独针对主地址或集群地址开启或关闭SSL功能,请参考设置SSL加密进行操作。
背景信息
SSL(Secure Sockets Layer)指安全套接字协议,是为了安全通信、数据安全性专门设计的安全协议,SSL 3.0之后更名为TLS(Transport Layer Security)。本文以配置云端证书为例,指导您快速配置SSL链路加密。
PolarDB PostgreSQL版的数据库代理支持的TLS版本为 1.0、1.1、1.2 和 1.3。
PolarDB PostgreSQL版集群支持的SSL链路加密配置及功能对比如下:
对比项 | 配置云端证书 | 配置自定义证书 | 配置客户端CA证书 |
获取方式 | 由阿里云颁发。 | 由证书认证机构颁发或自签名证书颁发。 | 由自签名证书颁发。 |
证书有效期 | 365天。 | 由您自定义。 | 由您自定义。 |
保护的连接地址数 | 1个或多个。 | 1个或多个。 | 不影响保护的连接地址数,取决于配合使用的云端证书或自定义证书。 |
证书作用 | 开启SSL链路加密,客户端验证服务端真伪。 | 开启SSL链路加密,客户端验证服务端真伪。 | 服务端验证客户端真伪。 |
对于云端证书、自定义证书和客户端CA证书的配置需要满足版本约束才可以使用,主地址和集群地址遵循不同的约束条件。对于不满足条件的版本,仅支持云端证书模式。
对于满足条件的新版本:配置云端证书或自定义证书为必选配置,用于开启SSL链路加密。
对于满足条件的新版本:配置客户端CA证书为可选配置,用于服务端验证客户端真伪。
前提条件
集群为PolarDB PostgreSQL版 14、15或以上版本,其中 PolarDB PostgreSQL版14要求内核版本大于等于14.10.21.0版本,主地址可允许配置自定义证书、客户端CA证书等;低版本仅支持云端证书模式。
集群的数据库代理版本要求至少为2.3.51版本,集群地址和自定义地址才允许配置自定义证书、客户端CA证书等;低版本仅支持云端证书模式。
已下载pgAdmin 4 客户端。
注意事项
SSL的云端证书有效期为1年,请及时更新证书有效期并重新下载和配置CA证书,否则使用加密连接的客户端程序将无法正常连接。
由于SSL加密的固有缺陷,启用SSL加密会显著增加CPU使用率,建议您仅在外网链路有加密需求的时候启用SSL加密。内网链路相对较安全,一般无需对链路加密。
开启SSL链路加密后,已有连接需要断开重连,加密才会生效。
开启云端证书、更新证书有效期、更改云端证书保护的连接地址或关闭SSL链路加密,会存在连接闪断,请在业务低峰期操作。
步骤一:使用云端证书开启SSL链路加密
登录PolarDB管理控制台。
在页面左上角,选择集群所在地域。
找到目标集群,单击集群ID。
在左侧菜单栏中单击配置与管理 > 安全管理。
在SSL配置页签,选择主地址或者任意集群地址,点击SSL状态右侧滑块或者点击设置数据库证书按钮,开启SSL加密。
在设置数据库证书对话框,选择云端证书,并选择要保护的连接地址。
单击确定,进入开启流程。开启后,请耐心等待集群到运行状态进行后续操作。
步骤二:下载CA证书
开启云端证书后,PolarDB PostgreSQL版数据库提供数据库CA证书供您下载。当您通过客户端远程连接PolarDB PostgreSQL版数据库时,使用数据库CA证书即可对数据库真伪进行校验。
在SSL 配置页签,单击云端证书右侧的下载证书,即可下载证书。
解压下载的CA证书。下载的文件为压缩包,包含如下三个文件:
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
步骤三:客户端连接数据库
本示例中以pgAdmin客户端通过SSL连接PolarDB PostgreSQL版数据库为例。
PolarDB PostgreSQL版数据库还支持通过psql命令行终端和JDBC等多种方式SSL远程连接,更多信息,请参见SSL连接PolarDB PostgreSQL数据库。
启动pgAdmin 4客户端。
说明高版本客户端首次登录需要设置Master Password用于保护保存的密码和其他凭据。
右键单击Servers,选择Register > Server...。
在General页签设置连接名称。
选择Connection标签页,输入要连接的集群信息。
参数
说明
Host name/address
PolarDB PostgreSQL版集群已开启SSL连接的主地址或集群地址及其对应的端口:
若通过内网连接,需输入集群的内网地址和内网端口。
若使用外网连接,需输入集群的外网地址和外网端口。
Port
Username
PolarDB PostgreSQL版集群的账号和密码。
Password
选择Parameters标签页,添加SSL认证方式相关参数并配置证书。
参数
说明
SSL mode
为了使用SSL安全连接,请配置Require、Verify-CA或Verify-Full连接方式,参数含义如下:
Require:只对数据链路加密,并不验证数据库服务器的真实性。
Verify-CA:加密数据链路,同时验证数据库的真实性。
Verify-Full:加密数据链路,验证数据库的真实性,同时比对证书内的CN或DNS与连接时配置的Host name/address的一致性。
Root certificate
当SSL mode取值为Verify-CA或Verify-Full时,需要配置此参数,表示数据库CA证书路径。
说明本示例中,从SSL页面下载的CA证书解压路径为 D:\CA\aliyunCA\,您可以将证书解压到您本地的任意位置。
pgAdmin客户端中使用的数据库CA证书为PEM文件。
单击Save。
若连接信息无误,会出现如下界面,则表示连接成功。
重要postgres是PolarDB PostgreSQL版集群默认的系统数据库,请勿在该数据库中进行任何操作。
步骤四:(可选)更新云端证书有效期
如果您的证书有效期即将到期,需要更新证书有效期,可按照以下步骤更新证书有效期。
登录PolarDB管理控制台。
在页面左上角,选择集群所在地域。
找到目标集群,单击集群ID。
在左侧菜单栏中单击配置与管理 > 安全管理。
在SSL配置页签,选择需要更新的主地址或集群地址,单击更新有效期按钮。
在弹出的对话框中,单击确定。
说明更新有效期操作将会重启集群,重启前请做好业务安排,谨慎操作。
更新有效期后,请重新下载和配置证书。
步骤五:(可选)关闭SSL链路加密
关闭SSL加密可能会重启集群,连接闪断,请谨慎操作。
如果您需要关闭SSL链路加密,可以按照如下步骤进行操作。
登录PolarDB管理控制台。
在页面左上角,选择集群所在地域。
找到目标集群,单击集群ID。
在左侧菜单栏中单击配置与管理 > 安全管理。
在SSL配置页签,找到需要关闭的主地址或集群地址,单击SSL状态右侧滑块。