使用SSL进行安全的TCP/IP连接
使用默认的证书可能存在安全风险,为了提高系统安全性,强烈建议用户定期更换证书以避免被破解的风险。如果需要更换证书,请联系数据库客服。
了解SSL证书的更多信息,请参见(可选)下载SSL证书。本章节主要介绍以下内容:
在gsql客户端配置SSL认证相关的数字证书参数
GaussDB(DWS) 在集群部署完成后,默认已开启SSL认证模式。服务器端证书,私钥以及根证书已经默认配置完成。用户需要配置客户端的相关参数。
- 登录GaussDB(DWS) 管理控制台,进入“连接管理”页面,下载SSL证书。
关于SSL证书的更多信息,请参见(可选)下载SSL证书。
- 使用文件传输工具(例如WinSCP工具)将SSL证书上传到客户端主机。
例如,将下载的证书“dws_ssl_cert.zip”存放到“/home/dbadmin/dws_ssl/”目录下。
- 使用SSH远程连接工具(例如PuTTY)登录gsql客户端主机,然后执行以下命令进入SSL证书的存放目录,并解压SSL证书:
cd /home/dbadmin/dws_ssl/ unzip dws_ssl_cert.zip
- 在gsql客户端主机上,执行export命令,配置SSL认证相关的数字证书参数。
SSL认证有两种认证方式:双向认证和单向认证,认证方式不同用户所需配置的客户端环境变量也不同,详细介绍请参见SSL认证方式及客户端参数介绍。
双向认证需配置如下参数:
export PGSSLCERT="/home/dbadmin/dws_ssl/sslcert/client.crt" export PGSSLKEY="/home/dbadmin/dws_ssl/sslcert/client.key" export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/dbadmin/dws_ssl/sslcert/cacert.pem"
单向认证需要配置如下参数:
export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/dbadmin/dws_ssl/sslcert/cacert.pem"
- 从安全性考虑,建议使用双向认证方式。
- 配置客户端环境变量,必须包含文件的绝对路径。
- 修改客户端密钥的权限。
客户端根证书,密钥,证书以及密钥密码加密文件的权限,需保证权限为600。如果权限不满足要求,则客户端无法以SSL连接到集群。
chmod 600 client.key chmod 600 client.crt chmod 600 client.key.cipher chmod 600 client.key.rand chmod 600 cacert.pem
SSL认证方式及客户端参数介绍
SSL认证有两种认证方式,如表1所示。从安全性考虑,建议使用双向认证方式。
认证方式 |
含义 |
配置客户端环境变量 |
维护建议 |
---|---|---|---|
双向认证(推荐) |
客户端验证服务器证书的有效性,同时服务器端也要验证客户端证书的有效性,只有认证成功,连接才能建立。 |
设置如下环境变量:
|
该方式应用于安全性要求较高的场景。使用此方式时,建议设置客户端的PGSSLMODE变量为verify-ca。确保了网络数据的安全性。 |
单向认证 |
客户端只验证服务器证书的有效性,而服务器端不验证客户端证书的有效性。服务器加载证书信息并发送给客户端,客户端使用根证书来验证服务器端证书的有效性。 |
设置如下环境变量:
|
为防止基于TCP链接的欺骗,建议使用SSL证书认证功能。除配置客户端根证书外,建议客户端使用PGSSLMODE变量为verify-ca方式连接。 |
在客户端配置SSL认证相关的环境变量,详细信息请参见表2。
客户端环境变量的路径以“/home/dbadmin/dws_ssl/”为例,在实际操作中请使用实际路径进行替换。
环境变量 |
描述 |
取值范围 |
---|---|---|
PGSSLCERT |
指定客户端证书文件,包含客户端的公钥。客户端证书用以表明客户端身份的合法性,公钥将发送给对端用来对数据进行加密。 |
必须包含文件的绝对路径,如:
export PGSSLCERT='/home/dbadmin/dws_ssl/sslcert/client.crt' 默认值:空 |
PGSSLKEY |
指定客户端私钥文件,用以数字签名和对公钥加密的数据进行解密。 |
必须包含文件的绝对路径,如:
export PGSSLKEY='/home/dbadmin/dws_ssl/sslcert/client.key' 默认值:空 |
PGSSLMODE |
设置是否和服务器进行SSL连接协商,以及指定SSL连接的优先级。 |
取值及含义:
默认值:prefer |
PGSSLROOTCERT |
指定为客户端颁发证书的根证书文件,根证书用于验证服务器证书的有效性。 |
必须包含文件的绝对路径,如:
export PGSSLROOTCERT='/home/dbadmin/dws_ssl/sslcert/certca.pem' 默认值:空 |
PGSSLCRL |
指定证书吊销列表文件,用于验证服务器证书是否在废弃证书列表中,如果在,则服务器证书将会被视为无效证书。 |
必须包含文件的绝对路径,如:
export PGSSLCRL='/home/dbadmin/dws_ssl/sslcert/sslcrl-file.crl' 默认值:空 |