华为云GaussDB的SSL认证【玩转华为云】
【摘要】 一、服务端配置启用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...

一、服务端配置
-
启用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"
- 登录GaussDB服务器,修改配置文件
-
强制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
为加密口令认证。
- 编辑
-
重启服务生效
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"
)
三、证书管理
-
证书生成(示例)
# 生成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
-
证书部署
- 服务端:将
server.crt
、server.key
、cacert.pem
放入数据库配置目录(如/etc/gaussdb/ssl/
)。 - 客户端:分发
client.crt
、client.key
、cacert.pem
至应用服务器。
- 服务端:将
四、关键注意事项
-
权限控制
- 所有证书和私钥文件需设置
600
权限:chmod 600 server.key client.key
- 所有证书和私钥文件需设置
-
认证模式选择
- 单向认证:仅客户端验证服务器(适合内部系统)。
- 双向认证:客户端与服务器互相验证(金融等高安全场景必选)。
-
连接验证
- 执行SQL检查SSL连接状态:
SELECT usename, ssl FROM pg_stat_ssl; -- 查看当前连接是否加密
- 网络抓包验证(使用Wireshark确认流量是否加密)。
- 执行SQL检查SSL连接状态:
-
证书轮换
- 定期更新证书(建议每年一次),通过脚本自动化生成并重启服务。
五、安全加固的一些小建议
- 加密算法升级:禁用低强度算法(如MD5),优先使用
ECDHE-RSA-AES256-GCM-SHA384
。 - 会话超时:配置
idle_session_timeout = '15min'
减少闲置连接风险。 - 网络隔离:将GaussDB部署在私有VPC,仅开放必要端口(如5432)。
总结一下下
配置GaussDB的SSL认证需服务端与客户端协同完成:服务端启用SSL并强制加密连接,客户端根据认证模式加载证书。双向认证提供最高安全性,适合敏感数据传输场景;证书权限和定期轮换是运维关键点。通过TLS加密,可有效防御中间人攻击,满足金融、政务等合规要求。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)