本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
RDS PostgreSQL在配置SSL链路加密时,不仅支持使用阿里云提供的云端证书,还支持使用自定义证书。本文介绍如何通过自定义证书开启SSL链路加密功能的具体操作。
前提条件
实例版本为RDS PostgreSQL 10或以上的云盘版本。
说明暂不支持计费方式为Serverless的实例。
已安装OpenSSL工具。
说明如果您使用Linux系统,系统会自带OpenSSL工具,无需安装。如果您使用Windows系统,请获取OpenSSL软件包并安装。
注意事项
开启SSL链路加密后,会造成CPU使用率上升、读写时延增长。
开启SSL链路加密后,已有连接需要断开重连,加密才会生效。
配置自定义证书、更改自定义证书内容或关闭SSL链路加密,将会重启您的数据库实例,用时3分钟左右,请在业务低峰期操作。
步骤一:获取自定义证书
生成服务器证书私钥或自签名证书私钥时,请勿使用密码加密,否则将无法启用SSL链路加密。
本文以CentOS系统配置为例,如果您使用Windows操作系统,操作步骤中的openssl命令与CentOS系统中的openssl命令配置相同,cp命令请替换为手动复制,vim命令请替换为手动编辑文件。
创建自签名证书(server-ca.crt)和自签名证书私钥(server-ca.key)。
openssl req -new -x509 -days 365 -nodes -out server-ca.crt -keyout server-ca.key -subj "/CN=root-server-ca"生成服务器证书请求文件(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仅用于举例,请修改为需要保护的链接地址,查看连接地址请参见查看或修改连接地址和端口。如果您需要保护多个连接地址,请配置如下命令。
拷贝openssl配置文件,作为临时使用。
cp /etc/pki/tls/openssl.cnf /tmp/openssl.cnf说明如果您使用Windows系统,openssl.cnf文件位于openssl安装目录\bin\cnf目录下,可以将此文件拷贝到任意位置。
使用如下命令编辑临时拷贝出的openssl.cnf文件。
vim /tmp/openssl.cnf输入
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使用
Esc退出编辑模式,输入:wq保存并退出。生成服务器证书请求文件(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
不需要输入
-
生成服务器证书(server.crt)。
如果您需要保护一个连接地址,请配置如下命令。
openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt如果您需要保护多个连接地址,请配置如下命令。
openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt -extensions v3_req -extfile /tmp/openssl.cnf
完成以上配置后,执行ls命令,查看已生成的文件:
# ls
server-ca.crt server-ca.key ca.srl server.crt server.csr server.key关键文件解释如下:
server.crt:服务器证书文件。
server.key:服务器私钥文件。
server-ca.crt:自签名证书。
server-ca.key:自签名证书私钥。
步骤二:使用自定义证书开启SSL链路加密
配置自定义证书后,实例的运行状态将会变更为修改SSL中,该状态将持续三分钟左右,请耐心等待运行状态变更为运行中后再进行后续操作。
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
进入>SSL页面。
切换证书来源为使用自定义证书,单击配置数据库证书(防止伪装数据库)后的配置按钮,填写服务器证书及私钥,然后单击确定,完成配置。

参数
取值
服务器证书
此参数填写步骤一:获取自定义证书步骤中获取的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按钮。