华为云GaussDB的SSL认证【玩转华为云】

举报
Jack20 发表于 2025/07/26 14:57:32 2025/07/26
【摘要】  ​​一、服务端配置​​​​启用SSL功能​​登录GaussDB服务器,修改配置文件postgresql.conf:ssl = on # 启用SSLssl_cert_file = '/path/to/server.crt' # 服务器证书路径ssl_key_file = '/path/to/server.key' # 服务器私钥路径ssl_ca_file = '/path/to/ca...

 ​

一、服务端配置​

  1. ​启用SSL功能​

    • 登录GaussDB服务器,修改配置文件postgresql.conf
      ssl = on  # 启用SSL
      ssl_cert_file = '/path/to/server.crt'  # 服务器证书路径
      ssl_key_file = '/path/to/server.key'   # 服务器私钥路径
      ssl_ca_file = '/path/to/cacert.pem'    # CA根证书路径(双向认证需配置)
      ssl_ciphers = 'HIGH:!aNULL:!MD5'       # 指定加密算法(推荐高安全性组合)
    • 使用gs_guc工具动态加载配置(部分版本适用):
      gs_guc set -D /var/lib/gaussdb/data -c "ssl=on"
  2. ​强制SSL连接​

    • 编辑pg_hba.conf,限制非加密连接:
      # 仅允许SSL连接(双向认证)
      hostssl all all 0.0.0.0/0 cert
      # 允许特定IP段使用密码+SSL
      hostssl all all 192.168.1.0/24 scram-sha-256
      ​注意​​:cert模式要求客户端提供证书;scram-sha-256为加密口令认证。
  3. ​重启服务生效​

    gs_ctl restart -D /var/lib/gaussdb/data  # 重启数据库实例

 ​​二、客户端配置​

​1. 命令行工具(gsql)​

  • ​双向认证​​(推荐):
    export PGSSLCERT="/home/user/client.crt"
    export PGSSLKEY="/home/user/client.key"
    export PGSSLROOTCERT="/home/user/cacert.pem"
    export PGSSLMODE="verify-ca"  # 验证服务器证书
    gsql -h <DB_IP> -d postgres -U dbuser
  • ​单向认证​​:
    export PGSSLROOTCERT="/home/user/cacert.pem"
    export PGSSLMODE="verify-ca"

​权限要求​​:密钥文件需设置chmod 600 client.key

​2. JDBC连接(Java)​

Properties props = new Properties();
props.setProperty("user", "dbuser");
props.setProperty("password", "password");
props.setProperty("sslmode", "verify-ca");       // 验证服务器
props.setProperty("sslrootcert", "/path/to/cacert.pem");
props.setProperty("sslcert", "/path/to/client.crt");    // 双向认证需提供
props.setProperty("sslkey", "/path/to/client.key");
Connection conn = DriverManager.getConnection(
    "jdbc:postgresql://<DB_IP>:5432/dbname", props
);

​3. Python连接(psycopg2)​

import psycopg2
conn = psycopg2.connect(
    host="<DB_IP>",
    port=5432,
    dbname="dbname",
    user="dbuser",
    password="password",
    sslmode="verify-full",               # 严格验证
    sslrootcert="/path/to/cacert.pem",
    sslcert="/path/to/client.crt",       # 双向认证
    sslkey="/path/to/client.key"
)

 ​​三、证书管理​

  1. ​证书生成(示例)​

    # 生成CA证书
    openssl req -new -x509 -days 3650 -nodes -out ca.crt -keyout ca.key
    # 生成服务器证书
    openssl req -new -nodes -out server.csr -keyout server.key
    openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
    # 生成客户端证书(双向认证需此步骤)
    openssl req -new -nodes -out client.csr -keyout client.key
    openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -out client.crt
  2. ​证书部署​

    • 服务端:将server.crtserver.keycacert.pem放入数据库配置目录(如/etc/gaussdb/ssl/)。
    • 客户端:分发client.crtclient.keycacert.pem至应用服务器。

​四、关键注意事项​

  1. ​权限控制​

    • 所有证书和私钥文件需设置600权限:
      chmod 600 server.key client.key
  2. ​认证模式选择​

    • ​单向认证​​:仅客户端验证服务器(适合内部系统)。
    • ​双向认证​​:客户端与服务器互相验证(金融等高安全场景必选)。
  3. ​连接验证​

    • 执行SQL检查SSL连接状态:
      SELECT usename, ssl FROM pg_stat_ssl;  -- 查看当前连接是否加密
    • 网络抓包验证(使用Wireshark确认流量是否加密)。
  4. ​证书轮换​

    • 定期更新证书(建议每年一次),通过脚本自动化生成并重启服务。

 ​​五、安全加固的一些小建议​

  • ​加密算法升级​​:禁用低强度算法(如MD5),优先使用ECDHE-RSA-AES256-GCM-SHA384
  • ​会话超时​​:配置idle_session_timeout = '15min'减少闲置连接风险。
  • ​网络隔离​​:将GaussDB部署在私有VPC,仅开放必要端口(如5432)。

总结​​一下下

配置GaussDB的SSL认证需​​服务端与客户端协同完成​​:服务端启用SSL并强制加密连接,客户端根据认证模式加载证书。​​双向认证​​提供最高安全性,适合敏感数据传输场景;​​证书权限​​和​​定期轮换​​是运维关键点。通过TLS加密,可有效防御中间人攻击,满足金融、政务等合规要求。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。