更新时间:2023-01-09 GMT+08:00

使用SSL进行安全的TCP/IP连接

如果客户端或JDBC/ODBC应用程序要使用SSL连接方式,用户必须在客户端或应用程序代码中配置相关的SSL连接参数。GaussDB(DWS) 管理控制台提供了客户端所需的SSL证书,该SSL证书包含了客户端所需的默认证书、私钥、根证书以及私钥密码加密文件。请将该SSL证书下载到客户端所在的主机上,然后在客户端中指定证书所在的路径。

使用默认的证书可能存在安全风险,为了提高系统安全性,强烈建议用户定期更换证书以避免被破解的风险。如果需要更换证书,请联系数据库客服

了解SSL证书的更多信息,请参见(可选)下载SSL证书。本章节主要介绍以下内容:

在gsql客户端配置SSL认证相关的数字证书参数

GaussDB(DWS) 在集群部署完成后,默认已开启SSL认证模式。服务器端证书,私钥以及根证书已经默认配置完成。用户需要配置客户端的相关参数。

  1. 登录GaussDB(DWS) 管理控制台,进入“连接管理”页面,下载SSL证书。

    关于SSL证书的更多信息,请参见(可选)下载SSL证书

  2. 使用文件传输工具(例如WinSCP工具)将SSL证书上传到客户端主机。

    例如,将下载的证书“dws_ssl_cert.zip”存放到“/home/dbadmin/dws_ssl/”目录下。

  3. 使用SSH远程连接工具(例如PuTTY)登录gsql客户端主机,然后执行以下命令进入SSL证书的存放目录,并解压SSL证书:

    cd /home/dbadmin/dws_ssl/
    unzip dws_ssl_cert.zip

  4. 在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"
    • 从安全性考虑,建议使用双向认证方式。
    • 配置客户端环境变量,必须包含文件的绝对路径。

  5. 修改客户端密钥的权限。

    客户端根证书,密钥,证书以及密钥密码加密文件的权限,需保证权限为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所示。从安全性考虑,建议使用双向认证方式。

表1 认证方式

认证方式

含义

配置客户端环境变量

维护建议

双向认证(推荐)

客户端验证服务器证书的有效性,同时服务器端也要验证客户端证书的有效性,只有认证成功,连接才能建立。

设置如下环境变量:

  • PGSSLCERT
  • PGSSLKEY
  • PGSSLROOTCERT
  • PGSSLMODE

该方式应用于安全性要求较高的场景。使用此方式时,建议设置客户端的PGSSLMODE变量为verify-ca。确保了网络数据的安全性。

单向认证

客户端只验证服务器证书的有效性,而服务器端不验证客户端证书的有效性。服务器加载证书信息并发送给客户端,客户端使用根证书来验证服务器端证书的有效性。

设置如下环境变量:

  • PGSSLROOTCERT
  • PGSSLMODE

为防止基于TCP链接的欺骗,建议使用SSL证书认证功能。除配置客户端根证书外,建议客户端使用PGSSLMODE变量为verify-ca方式连接。

在客户端配置SSL认证相关的环境变量,详细信息请参见表2

客户端环境变量的路径以“/home/dbadmin/dws_ssl/”为例,在实际操作中请使用实际路径进行替换。

表2 客户端参数

环境变量

描述

取值范围

PGSSLCERT

指定客户端证书文件,包含客户端的公钥。客户端证书用以表明客户端身份的合法性,公钥将发送给对端用来对数据进行加密。

必须包含文件的绝对路径,如:
export PGSSLCERT='/home/dbadmin/dws_ssl/sslcert/client.crt'

默认值:空

PGSSLKEY

指定客户端私钥文件,用以数字签名和对公钥加密的数据进行解密。

必须包含文件的绝对路径,如:
export PGSSLKEY='/home/dbadmin/dws_ssl/sslcert/client.key'

默认值:空

PGSSLMODE

设置是否和服务器进行SSL连接协商,以及指定SSL连接的优先级。

取值及含义

  • disable:只尝试非SSL连接。
  • allow:首先尝试非SSL连接,如果连接失败,再尝试SSL连接。
  • prefer:首先尝试SSL连接,如果连接失败,将尝试非SSL连接。
  • require:只尝试SSL连接。如果存在CA文件,则按设置成verify-ca的方式验证。
  • verify-ca:只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书。
  • verify-full:GaussDB(DWS) 不支持此模式。

默认值:prefer

PGSSLROOTCERT

指定为客户端颁发证书的根证书文件,根证书用于验证服务器证书的有效性。

必须包含文件的绝对路径,如:
export PGSSLROOTCERT='/home/dbadmin/dws_ssl/sslcert/certca.pem'

默认值:

PGSSLCRL

指定证书吊销列表文件,用于验证服务器证书是否在废弃证书列表中,如果在,则服务器证书将会被视为无效证书。

必须包含文件的绝对路径,如:
export PGSSLCRL='/home/dbadmin/dws_ssl/sslcert/sslcrl-file.crl'

默认值: