本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
PolarDB PostgreSQL版(兼容Oracle)在给主地址或集群地址配置SSL链路加密时,对于符合条件的版本,不仅支持阿里云提供的云端证书,还支持使用自定义证书。本文介绍通过自定义证书配置SSL链路加密功能的具体操作。
前提条件
集群为PolarDB PostgreSQL版(兼容Oracle) 2.0或以上版本,内核版本要求大于等于2.0.14.21.0版本,主地址可允许配置自定义证书、客户端CA证书等。
集群的数据库代理版本要求至少为2.3.51版本,集群地址和自定义地址才允许配置自定义证书、客户端CA证书等。
已安装OpenSSL工具。
说明如果您使用Linux系统,系统会自带OpenSSL工具,无需安装。
如果您使用Windows系统,请获取OpenSSL 软件包并安装。
注意事项
开启SSL链路加密后,会造成CPU使用率上升、读写时延增长。
开启SSL链路加密后,已有连接需要断开重连,加密才会生效。
配置自定义证书、更改自定义证书内容或关闭SSL链路加密,会存在连接闪断,请在业务低峰期操作。
步骤一:获取自定义证书
生成服务器证书私钥或自签名证书私钥时,请勿使用密码加密,否则将无法启用 SSL 链路加密。
本文以CentOS系统配置为例,如果您使用Windows操作系统,操作步骤中的openssl
命令与CentOS系统中的openssl
命令配置相同,cp
命令请替换为手动复制,vim
命令请替换为手动编辑文件。
创建自签名证书(ca.crt)和自签名证书私钥(ca.key)。
openssl req -new -x509 -days 3650 -nodes -out ca.crt -keyout ca.key -subj "/CN=root-ca"
生成服务器证书请求文件(server.csr)和服务器证书私钥(server.key)。自定义证书支持对您想要保护的主地址或者任意集群地址中的一个连接地址或多个连接地址进行保护。您可以根据需要选择以下两种配置生成服务器证书请求文件。
如果您需要保护一个连接地址,请配置如下命令。
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=pe-xxx.rwlb.rds.aliyuncs.com"
说明本示例中pe-xxx.rwlb.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 = pc-bpxxxxx.pg.rds.aliyuncs.com DNS.2 = pc-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 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链路加密
登录PolarDB管理控制台。
在页面左上角,选择集群所在地域。
找到目标集群,单击集群ID。
在左侧菜单栏中单击配置与管理 > 安全管理。
在SSL配置页签,选择在上一步生成的自定义证书关联的主地址或者集群地址,单击SSL状态右侧滑块或者单击设置数据库证书,开启SSL加密。
在设置数据库证书对话框,选择自定义证书,填写服务器证书及私钥后,单击确定,完成配置。
需要填写的参数如下:
参数
取值
服务器证书
此参数填写步骤一:获取客户端证书步骤中获取的server.crt文件内容。请填写-----BEGIN CERTIFICATE-----至-----END CERTIFICATE-----间的内容,包括BEGIN和END部分。
服务器证书私钥
此参数填写步骤一:获取客户端证书步骤中获取的 server.key 文件内容。请填写-----BEGIN PRIVATE KEY-----至-----END PRIVATE KEY-----间的内容,包括 BEGIN 和 END 部分。
如果申请证书时配置了多个连接地址,则在配置完成后,在SSL受保护的地址中看到多条记录:
步骤三:客户端连接数据库
PolarDB PostgreSQL版(兼容Oracle)数据库支持通过SSL远程连接,更多信息,请参见SSL连接PolarDB PostgreSQL数据库。
步骤四:(可选)更新证书
更新证书会造成连接闪断,请谨慎操作。
如果您需要更新自定义证书,可以在SSL配置页面,找到需要更新的主地址或者集群地址,并单击设置数据库证书,填入新的服务器证书及私钥,并单击确定完成更新。
步骤五:(可选)关闭 SSL 链路加密
关闭 SSL 加密会造成连接闪断,请谨慎操作。
如果您需要关闭SSL链路,可以在SSL配置页面,找到需要关闭的主地址或集群地址,单击SSL状态右侧滑块,在弹出的关闭SSL对话框中单击确定。