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

AWS RDS Postgres设置rds.force_ssl=1后非SSL连接仍可连通问题咨询

现象原因

该现象不属于配置遗漏,核心原因是PostgreSQL JDBC客户端的默认连接逻辑:当服务端开启rds.force_ssl=1强制要求SSL连接时,JDBC驱动会自动协商SSL连接,哪怕连接参数中没有显式配置SSL相关项,因此不会抛出连接错误,此时实际建立的已经是加密链路,并非非SSL连接。

连接加密状态验证

可以通过以下方式确认当前连接是否真的走SSL加密:

  • 连接实例后执行SQL语句:SELECT ssl, cipher, version FROM pg_stat_ssl WHERE pid = pg_backend_pid();
  • 若返回结果中ssl字段值为t,即代表当前连接为SSL加密状态,rds.force_ssl参数已经生效。
严格强制SSL连接的配置方案

如果需要彻底禁止任何非SSL连接尝试、同时避免自动协商SSL时的证书校验漏洞,按以下步骤配置即可:

  • JDBC连接串显式指定SSL模式,禁止明文连接回退
    连接串追加参数ssl=true&sslmode=verify-full:
    • ssl=true:显式要求驱动必须使用SSL连接,不会尝试明文链路
    • sslmode=verify-full:为最高安全等级的SSL模式,既强制要求SSL连接,还会校验服务端证书合法性、证书与连接域名的匹配性,杜绝中间人攻击风险

    注意:不要使用sslmode=require,该模式仅强制SSL但不校验服务端证书,存在安全隐患

  • 配置RDS根证书信任
    下载对应区域的RDS根证书,连接时通过sslrootcert参数指定证书本地路径,完整连接串示例如下:
    jdbc:postgresql://<RDS实例访问端点>:5432/<目标数据库名>?ssl=true&sslmode=verify-full&sslrootcert=<RDS根证书本地存储路径>
    
  • 配置完成后,若去掉所有SSL相关参数发起连接,会直接抛出连接拒绝错误,达到仅允许SSL连接的预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:33:22