如果使用云端证书或自定义证书开启SSL链路加密,则表示在SSL链路中,客户端验证数据库的真实性。如果您需要数据库也验证客户端的真实性,还需要配置客户端CA证书,本文介绍配置客户端CA证书的具体操作。

前提条件

注意事项

  • 配置客户端CA证书后,已有连接需要断开重连,加密才会生效。
  • 配置客户端CA证书、更改客户端CA证书内容、修改客户端证书吊销列表,将会重启您的数据库实例,用时约3分钟左右,请在业务低峰期操作。

步骤一:获取客户端证书

本文以CentOS系统配置为例,如果您使用Windows操作系统,操作步骤中的openssl命令与CentOS系统中的openssl命令配置相同。

  1. 生成自签名证书(ca1.crt)和自签名证书私钥(ca1.key)。
    openssl req -new -x509 -days 3650 -nodes -out ca1.crt -keyout ca1.key -subj "/CN=root-ca1"
  2. 生成客户端证书请求文件(client.csr)和客户端证书私钥(client.key)。
    openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=<客户端用户名>"
    说明 该命令中-subj参数后的CN取值请配置为客户端访问数据库的用户名。
  3. 生成客户端证书(client.crt)。
    openssl x509 -req -in client.csr -text -days 365  -CA ca1.crt -CAkey ca1.key -CAcreateserial  -out client.crt
完成以上配置后,将获得如下文件:
  • client.crt:客户端证书文件。
  • client.key:客户端私钥文件。
  • ca1.crt:自签名证书。
  • ca1.key:自签名证书私钥。

步骤二:配置客户端CA证书

说明 配置客户端CA证书后,实例的运行状态将会变更为修改SSL中,该状态将持续三分钟左右,请耐心等待运行状态变更为运行中后再进行后续操作。
  1. 进入数据安全性>SSL页面。
  2. 单击启用客户端CA证书
    启用客户端CA证书
  3. 将自签名证书文件(ca1.crt)内容填写到对话框中。然后单击确定按钮。自签名证书文件(ca1.crt)获取请参见步骤一:获取客户端证书
    填写证书授权机构公钥

步骤三:客户端连接数据库

步骤四:(可选)配置证书吊销文件

如果您不再使用某一客户端证书时,可以将客户端证书吊销,数据库将拒绝此客户端登录。

说明 配置证书吊销文件后,实例的运行状态将会变更为修改SSL中,该状态将持续三分钟左右,请耐心等待运行状态变更为运行中后再进行后续操作。
  1. 配置文件准备。
    touch /etc/pki/CA/index.txt
    echo 1000 > /etc/pki/CA/crlnumber
    说明
    如果您使用Windows系统,需要按照如下步骤操作:
    1. OpenSSL安装目录\bin目录下创建CA文件夹。
    2. 在CA文件夹内创建index.txt文件。
    3. 命令行执行如下命令:
      echo 1000 > <OpenSSL安装目录>\bin\CA\crlnumber
    4. 修改C:\Program Files\Common Files\SSL\目录下中的openssl.cnf文件。
      # 找到[ CA_default ]配置项
      
      dir = "<OpenSSL安装目录>\\bin\\CA"
  2. 吊销客户端证书(client.crt)。
    openssl ca -revoke client.crt -cert ca1.crt -keyfile ca1.key
    说明 该命令需要使用到自签名证书(ca1.crt)及自签名证书私钥(ca1.key),请参见步骤一:获取客户端证书
  3. 生成证书吊销文件(client.crl)。
    openssl ca -gencrl -out client.crl -cert ca.crt -keyfile ca.key
  4. 进入数据安全性>SSL页面。
  5. 单击启用证书吊销文件
    启用证书吊销文件
  6. 将证书吊销文件(client.crl)内容填写到对话框中。
    填写客户端证书吊销文件

步骤五:(可选)更新客户端证书

说明 更新证书会重启实例,请谨慎操作。
如果您需要更新证书,可以在SSL页面单击清除客户端CA证书按钮,清除客户端CA后,重新单击启用客户端CA证书clearclientca

步骤六:(可选)配置ACL

在配置客户端CA证书后,您可以在RDS PostgreSQL实例中配置ACL控制客户端的访问,此时客户端必须携带客户端证书和私钥并通过客户端对应认证方式的验证才能连接数据库。

说明
  • 配置ACL期间,PostgreSQL数据库实例将不能操作,用时约1分钟左右,请您耐心等待。
  • 如果在RDS PostgreSQL数据库未设置客户端访问控制(默认prefer),客户端可以使用PGSSLMODE=disable来实现非SSL方式连接数据库。当需要禁止非SSL连接时,请确保在开启SSL链路加密后将ACL配置为除prefer以外的其他认证方式。
单击配置ACL或配置ReplicationACL后的修改,选择不同的客户端连接控制模式。acl
RDS PostgreSQL支持配置的认证方法及其验证规则如下:
  • cert:使用证书代替密码登录,加密数据链路,同时检查客户端证书真伪,检查证书CN与数据库用户名匹配。
  • prefer:加密数据链路。客户端使用PGSSLMODE=disable时, 可以通过非加密方式连接数据库。
  • verify-ca:加密数据链路,同时检查客户端认证真伪。
  • verify-full(RDS PostgreSQL 12以上支持):加密数据链路,同时检查客户端认证真伪,检查证书CN与数据库用户名匹配。