You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编辑Amazon RDS的ssl_ca_file参数?配置TLS/SSL客户端证书认证

AWS RDS强制TLS/SSL+自定义CA客户端认证实现指南

一、先确认引擎支持情况

不是所有RDS引擎都支持自定义CA客户端认证,MySQL、PostgreSQL可以正常配置,SQL Server的逻辑不同,以下仅针对前两者分享实操步骤。

二、强制TLS/SSL(补充细节)

  • 找到RDS实例关联的参数组,将rds.force_ssl设为1,保存后重启实例即可生效。
  • 验证方式:尝试不携带SSL参数连接,若直接被拒绝,说明强制SSL已生效。

三、自定义CA客户端认证核心操作

1. 上传自定义CA证书到AWS

RDS无法直接读取本地文件,需将你的CA根证书(PEM格式)上传至Secrets Manager,或加密的S3存储桶,严格配置访问权限,避免无关主体访问。

2. 通过启动脚本替换默认CA路径

/rdsdbdata/rds-metadata/ca-cert.pem是RDS自带的AWS CA证书路径,无法直接修改,需通过启动脚本绕开限制:

  • 编写shell脚本,从Secrets Manager/S3拉取自定义CA证书,复制到数据库进程可访问的目录,并调整权限:
    # 从Secrets Manager拉取自定义CA证书,替换为你的Secret ID
    aws secretsmanager get-secret-value --secret-id my-custom-root-ca --query SecretString --output text > /tmp/custom-ca.pem
    # 复制到MySQL可访问目录(PostgreSQL可改为/var/lib/pgsql/)
    cp /tmp/custom-ca.pem /var/lib/mysql/custom-ca.pem
    # 修改权限让数据库进程可读
    chown mysql:mysql /var/lib/mysql/custom-ca.pem
    
  • 将脚本上传至S3,给RDS实例添加选项组,选择Custom Scripts选项并指定S3脚本路径,让RDS启动时自动执行脚本,将自定义CA证书部署到正确位置。
  • 修改参数组:将ssl_ca_file设为自定义证书路径(如/var/lib/mysql/custom-ca.pem),同时设置:
    • MySQL:require_x509=1,强制客户端必须提供由该CA签发的证书
    • PostgreSQL:require_secure_transport=ON,并通过自定义脚本调整pg_hba.conf添加hostssl ... cert规则,限制仅带合法客户端证书的连接

3. 客户端连接验证

客户端连接时必须携带三个文件:自定义CA证书、由该CA签发的客户端证书、客户端私钥。以MySQL客户端为例:

mysql -h my-rds-instance.xxxxxx.us-east-1.rds.amazonaws.com -u myuser -p --ssl-ca=/local/path/to/custom-ca.pem --ssl-cert=/local/path/to/my-client-cert.pem --ssl-key=/local/path/to/my-client-key.pem

四、踩坑提醒

  • 部分参数属于静态参数,修改后必须重启RDS,提前规划维护窗口,避免影响业务。
  • 定期检查自定义CA证书有效期,过期前需重新上传证书并更新脚本,防止连接中断。
  • 确保S3和Secrets Manager的权限配置正确,给RDS关联的IAM角色添加对应访问权限,避免脚本拉取证书失败。

内容的提问来源于stack exchange,提问作者data princess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:26:02