使用云端证书快速配置SSL加密

PolarDB PostgreSQL版(兼容Oracle)支持设置SSL链路加密,对网络连接进行加密,保证传输链路的安全。本文介绍在新版管理页面,针对主地址或集群地址开启SSL链路加密功能的入门配置。如果您的实例在安全管理 > SSL配置页面不支持单独针对主地址或集群地址开启或关闭SSL功能,请参考设置SSL加密进行操作。

背景信息

SSL(Secure Sockets Layer)指安全套接字协议,是为了安全通信、数据安全性专门设计的安全协议,SSL 3.0之后更名为TLS(Transport Layer Security)。本文以配置云端证书为例,指导您快速配置SSL链路加密。

说明

PolarDB PostgreSQL版(兼容Oracle)的数据库代理支持的TLS版本为 1.0、1.1、1.2 和 1.3。

PolarDB PostgreSQL版(兼容Oracle)集群支持的SSL链路加密配置及功能对比如下:

对比项

配置云端证书

配置自定义证书

配置客户端CA证书

获取方式

由阿里云颁发。

由证书认证机构颁发或自签名证书颁发。

由自签名证书颁发。

证书有效期

365天。

由您自定义。

由您自定义。

保护的连接地址数

1个或多个。

1个或多个。

不影响保护的连接地址数,取决于配合使用的云端证书或自定义证书。

证书作用

开启SSL链路加密,客户端验证服务端真伪。

开启SSL链路加密,客户端验证服务端真伪。

服务端验证客户端真伪。

说明
  • 对于云端证书、自定义证书和客户端CA证书的配置需要满足版本约束才可以使用,主地址和集群地址遵循不同的约束条件。对于不满足条件的版本,仅支持云端证书模式。

  • 对于满足条件的新版本:配置云端证书或自定义证书为必选配置,用于开启SSL链路加密。

  • 对于满足条件的新版本:配置客户端CA证书为可选配置,用于服务端验证客户端真伪。

前提条件

  • 集群为PolarDB PostgreSQL版(兼容Oracle)2.0或以上版本,内核版本大于等于2.0.14.21.0版本,主地址可允许配置自定义证书、客户端CA证书等;低版本仅支持云端证书模式。

  • 集群的数据库代理版本要求至少为2.3.51版本,集群地址和自定义地址才允许配置自定义证书、客户端CA证书等;低版本仅支持云端证书模式。

  • 已下载pgAdmin 4 客户端

注意事项

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

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

  • 开启SSL链路加密后,已有连接需要断开重连,加密才会生效。

  • 开启云端证书、更新证书有效期、更改云端证书保护的连接地址或关闭SSL链路加密,会存在连接闪断,请在业务低峰期操作。

步骤一:使用云端证书开启SSL链路加密

  1. 登录PolarDB管理控制台

  2. 在页面左上角,选择集群所在地域。

  3. 找到目标集群,单击集群ID。

  4. 在左侧菜单栏中单击配置与管理 > 安全管理

  5. SSL配置页签,选择主地址或者任意集群地址,点击SSL状态右侧滑块或者点击设置数据库证书按钮,开启SSL加密。

  6. 设置数据库证书对话框,选择云端证书,并选择要保护的连接地址。

  7. 单击确定,进入开启流程。开启后,请耐心等待集群到运行状态进行后续操作。

    image.png

步骤二:下载CA证书

开启云端证书后,PolarDB PostgreSQL版(兼容Oracle)数据库提供数据库CA证书供您下载。当您通过客户端远程连接PolarDB PostgreSQL版(兼容Oracle)数据库时,使用数据库CA证书即可对数据库真伪进行校验。

  1. SSL 配置页签,单击云端证书右侧的下载证书,即可下载证书。

    image.png

  2. 解压下载的CA证书。下载的文件为压缩包,包含如下三个文件:

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

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

    3. 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版(兼容Oracle)数据库为例。

PolarDB PostgreSQL版(兼容Oracle)数据库还支持通过psql命令行终端和JDBC等多种方式SSL远程连接,更多信息,请参见SSL连接PolarDB PostgreSQL版(兼容Oracle)数据库

说明
  • 连接数据库前,请确保已在PolarDB PostgreSQL版(兼容Oracle)集群中配置白名单和用户。具体操作,请参见设置集群白名单创建数据库账号

  • 下文以pgAdmin 4 V6.2.0为例,如果文档截图与您的客户端存在差异,请参见官方文档里与示例中相同的SSL链路相关参数进行配置。

  1. 启动pgAdmin 4客户端。

    说明

    高版本客户端首次登录需要设置Master Password用于保护保存的密码和其他凭据。

  2. 右键单击Servers,选择Register > Server...

    image.png

  3. General页签设置连接名称。

    image.png

  4. 选择Connection标签页,输入要连接的集群信息。

    image.png

    参数

    说明

    Host name/address

    PolarDB PostgreSQL版(兼容Oracle)集群已开启SSL连接的主地址或集群地址及其对应的端口:

    • 若通过内网连接,需输入集群的内网地址和内网端口。

    • 若使用外网连接,需输入集群的外网地址和外网端口。

    Port

    Username

    PolarDB PostgreSQL版(兼容Oracle)集群的账号和密码。

    Password

  5. 选择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-CAVerify-Full时,需要配置此参数,表示数据库CA证书路径。

      说明

      本示例中,从SSL页面下载的CA证书解压路径为 D:\CA\aliyunCA\,您可以将证书解压到您本地的任意位置。

      pgAdmin客户端中使用的数据库CA证书为PEM文件。

  6. 单击Save

    若连接信息无误,会出现如下界面,则表示连接成功。

    image.png

    重要

    postgres是PolarDB PostgreSQL版(兼容Oracle)集群默认的系统数据库,请勿在该数据库中进行任何操作。

步骤四:(可选)更新云端证书有效期

如果您的证书有效期即将到期,需要更新证书有效期,可按照以下步骤更新证书有效期。

  1. 登录PolarDB管理控制台

  2. 在页面左上角,选择集群所在地域。

  3. 找到目标集群,单击集群ID。

  4. 在左侧菜单栏中单击配置与管理 > 安全管理

  5. SSL配置页签,选择需要更新的主地址或集群地址,单击更新有效期按钮。

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

    image.png

    说明

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

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

步骤五:(可选)关闭SSL链路加密

说明

关闭SSL加密可能会重启集群,连接闪断,请谨慎操作。

如果您需要关闭SSL链路加密,可以按照如下步骤进行操作。

  1. 登录PolarDB管理控制台

  2. 在页面左上角,选择集群所在地域。

  3. 找到目标集群,单击集群ID。

  4. 在左侧菜单栏中单击配置与管理 > 安全管理

  5. SSL配置页签,找到需要关闭的主地址或集群地址,单击SSL状态右侧滑块。

    image.png