生成客户端SSL CA证书
步骤 1在“实例管理”页面,单击目标实例进入“数据安全 SSL证书”页签。
步骤 2 开通SSL加密功能后,单击“下载CA证书”(服务端SSL CA证书)。(注:下载的文件压缩包中包含2个文件,后缀分别为crt与key)。
步骤 3 将服务端 SSL CA证书(后缀为crt与key的2个文件)上传导入至需连接PostgreSQL实例的阿里云服务器。(注:为了方便演示,此处将2个CA文件重新命名为ca.crt、ca.key)
步骤 4 查看证书有效期。(注:控制台页面显示的是北京时区。若在linux上生成的有效期时间为GMT时区,GMT时区需要加8小时即可转化为北京时区时间)
opensslx509-inca.crt-noout-dates
步骤 5 生成一个文件为名“catest.key”的1024位客户端私钥,并为其赋权400。(注:a.私钥文件名自定义;b.一般使用2048和1024就可以了,数值越大链接等待时间越长)
opensslgenrsa-outcatest.key1024chmod400catest.key
步骤 6 为客户端私钥“catest.key”生成客户端证书签名请求“catest.csr”。(注:此处,为生成的客户端登录证书指定使用用户名为“catest”)
opensslreq-new-keycatest.key-outcatest.csr
注意:
此处为了方便演示,仅填写了server’s hostname项。建议您尽量全部填写执行该命令后出现的提示,防止以后浏览器对证书验证变得严格后又需重新签名。步骤 7 使用CA根证书对客户端证书签名生成公钥“catest.crt”。(注:即为客户端公钥,有效期可自行修改)
openssl x509 -req -in catest.csr -CA ca.crt -CAkey ca.key -out catest.crt -CAcreateserial -days 365
说明:
生成的客户端证书密钥包括catest.crt、catest.key、catest.csr。SSL加密连接(Linux)
1. 进入阿里云阿里云服务器列表页面,选择某一安装Linux操作系统阿里云服务器,单击右侧“VNC登录”登录阿里云服务器。
2. 查看该阿里云服务器是否已经安装PostgreSQL客户端。若无,则执行如下命令为该阿里云服务器安装PostgreSQL数据库客户端(需要与操作系统、PG实例版本匹配)。
yuminstallhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmyuminstallpostgresql10
说明:
提示“Complete!,表示已经完成PostgreSQL客户端安装。
3. 执行如下命令,使用SSL加密方式连接云数据库PostgreSQL实例。(注:用户使用证书登录无需密码,系统用户postgres除外)
psql postgresql://catest@PG数据库IP地址:端口/hl?ssl=true&sslkey=/root/catest.key&sslcert=/root/catest.crt catest:采用证书登录的数据库用户,在生成客户端SSL CA证书时获得。(注:不对外开放系统用户postgres,该用户只能通过密码登录) PG数据库IP地址与端口:为连接的数据库IP地址与端口,您可以在控制台基本信息页签中查看。 hl:为数据库database,您可以通过控制台进行数据库创建。(注:默认的管理数据库为postgres) 证书路径:存储客户端公钥与私钥的路径,如上述案例中的catest.crt、catest.key、catest.csr存储路径。
SSL加密连接(Windows)
步骤 1 进入阿里云阿里云服务器列表页面,选择某一安装Windows操作系统阿里云服务器,单击右侧“VNC登录”登录阿里云服务器。
步骤 2 查看该阿里云服务器是否已经安装PostgreSQL客户端,此处以pgAdmin 4客户端为例。若无,请您进入pgAdmin官网页面下载。
步骤 3 启动pgAdmin 4客户端,新建服务器连接。按照如所示配置,单击“保存”即可完成SSL连接。
常规:填写名称,选择服务器组。
连接: -阿里云服务器名称/地址与端口:从数据库实例控制台的“基本信息”页签中获取。 - 维护数据库:您可以在数据库实例控制台的“数据库管理”功能模块中进行创建。 - 用户名:即为生成的客户端登录证书指定的用户“catest”。
SSL: - SSL模式:选择“必填”。 - 客户端证书:上传客户端证书。参见上文“生成客户端SSL CA证书”生成的客户端证书,如catest.crt。 - 客户端证书密钥:上传客户端证书密钥。参见上文“生成客户端SSL CA证书”生成的客户端证书密钥,如catest.key。