全部产品
Search
文档中心

云数据库 RDS:配置自定义证书

更新时间:Sep 01, 2023

RDS PostgreSQL在配置SSL链路加密时,不仅支持使用阿里云提供的云端证书,还支持使用自定义证书。本文介绍通过自定义证书配置SSL链路加密功能的具体操作。

前提条件

  • 实例版本为RDS PostgreSQL 10或以上的云盘版本。

  • 已安装OpenSSL工具。

    说明

    如果您使用Linux系统,系统会自带OpenSSL工具,无需安装。如果您使用Windows系统,请获取OpenSSL软件包并安装。

注意事项

  • 开启SSL链路加密后,会造成CPU使用率上升、读写时延增长。

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

  • 配置自定义证书、更改自定义证书内容或关闭SSL链路加密,将会重启您的数据库实例,用时3分钟左右,请在业务低峰期操作。

步骤一:获取自定义证书

警告

生成服务器证书私钥或自签名证书私钥时,请勿使用密码加密,否则将无法启用SSL链路加密。

本文以CentOS系统配置为例,如果您使用Windows操作系统,操作步骤中的openssl命令与CentOS系统中的openssl命令配置相同,cp命令请替换为手动复制,vim命令请替换为手动编辑文件。

  1. 创建自签名证书(ca.crt)和自签名证书私钥(ca.key)。

    openssl req -new -x509 -days 3650 -nodes -out ca.crt -keyout ca.key -subj "/CN=root-ca"
  2. 生成服务器证书请求文件(server.csr)和服务器证书私钥(server.key)。

    自定义证书支持对一个连接地址或多个连接地址进行保护。您可以根据需要选择以下两种配置生成服务器证书请求文件。

    • 如果您需要保护一个连接地址,请配置如下命令。

      openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=pgm-bpxxxxx.pg.rds.aliyuncs.com"
      说明

      本示例中pgm-bpxxxxx.pg.rds.aliyuncs.com仅用于举例,请修改为需要保护的链接地址,查看连接地址请参见查看或修改连接地址和端口

    • 如果您需要保护多个连接地址,请配置如下命令。

      1. 拷贝openssl配置文件,作为临时使用。

        cp /etc/pki/tls/openssl.cnf  /tmp/openssl.cnf
        说明

        如果您使用Windows系统,openssl.cnf文件位于openssl安装目录\bin\cnf目录下,可以将此文件拷贝到任意位置。

      2. 使用如下命令编辑临时拷贝出的openssl.cnf文件。

        vim /tmp/openssl.cnf
      3. 输入i进入编辑模式,配置以下内容。

        # 在[ req ]最后补充
        req_extensions = v3_req
        
        # 新增[ v3_req ]
        [ v3_req ]
        basicConstraints = CA:FALSE
        keyUsage = nonRepudiation, digitalSignature, keyEncipherment
        subjectAltName = @alt_names
        
        # 新增[ alt_names ],其中DNS后配置需要保护的数据库连接地址
        [ alt_names ]
        DNS.1 = pgm-bpxxxxx.pg.rds.aliyuncs.com
        DNS.2 = pgm-bpxxxxx.pg.rds.aliyuncs.com
      4. 使用Esc退出编辑模式,输入:wq保存并退出。

      5. 生成服务器证书请求文件(server.csr)和服务器证书私钥(server.key)。

        openssl req -new -nodes -text -out server.csr -keyout server.key -config /tmp/openssl.cnf

        生成证书请求文件(server.csr)的过程中,会提示配置以下参数,请根据实际情况配置。

        参数

        说明

        示例

        Country Name

        ISO国家代码(两位字符)

        CN

        State or Province Name

        所在省份

        ZheJiang

        Locality Name

        所在城市

        HangZhou

        Organization Name

        公司名称

        Alibaba

        Organizational Unit Name

        部门名称

        Aliyun

        Common Name

        申请SSL证书的域名,在openssl.cnf文件中已配置,不需要输入

        -

        Email Address

        不需要输入

        -

        A challenge password

        不需要输入

        -

        An optional company name

        不需要输入

        -

  3. 生成服务器证书(server.crt)。

    • 如果您需要保护一个连接地址,请配置如下命令。

      openssl x509 -req -in server.csr -text -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial  -out server.crt
    • 如果您需要保护多个连接地址,请配置如下命令。

      openssl x509 -req -in server.csr -text -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial  -out server.crt -extensions v3_req -extfile /tmp/openssl.cnf

完成以上配置后,执行ls命令,查看已生成的文件:

# ls
ca.crt  ca.key  ca.srl  server.crt  server.csr  server.key

关键文件解释如下:

  • server.crt:服务器证书文件。

  • server.key:服务器私钥文件。

  • ca.crt:自签名证书。

  • ca.key:自签名证书私钥。

步骤二:使用自定义证书开启SSL链路加密

说明

配置自定义证书后,实例的运行状态将会变更为修改SSL中,该状态将持续三分钟左右,请耐心等待运行状态变更为运行中后再进行后续操作。

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 进入数据安全性>SSL页面。

  3. 切换证书来源为使用自定义证书,单击配置数据库证书(防止伪装数据库)后的配置按钮,填写服务器证书及私钥后,单击确定,完成配置。

    使用自定义证书

    参数

    取值

    服务器证书

    此参数填写步骤一:获取自定义证书步骤中获取的server.crt文件内容。请填写-----BEGIN CERTIFICATE----------END CERTIFICATE-----间的内容,包括BEGIN和END部分。

    服务器证书私钥

    此参数填写步骤一:获取自定义证书步骤中获取的server.key文件内容。请填写-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----间的内容,包括BEGIN和END部分。

    如果申请证书时配置了多个连接地址,则配置完成后,在保护主机参数中,将显示对应多条记录。使用自定义证书

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

RDS PostgreSQL数据库支持通过SSL远程连接,更多信息,请参见SSL连接RDS PostgreSQL数据库

步骤四:(可选)更新证书

说明

更新证书会重启实例,请谨慎操作。

如果您需要更新证书,可以在SSL页面单击配置数据库证书(防止伪装数据库)后的修改按钮,填入新的服务器证书和私钥。更新证书

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

说明

关闭SSL加密会重启实例,请谨慎操作。

如果您需要关闭SSL链路加密,可以在SSL页面单击关闭SSL按钮。closessl