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

为何AWS RDS PostgreSQL过期CA证书仍可建立SSL连接?

问题:过期CA证书下AWS RDS PostgreSQL仍能建立SSL连接的原因

我发现AWS RDS上的CA证书已于2024年8月22日过期,但仍能通过psql和DBeaver建立新连接,且pg_stat_ssl显示连接为SSL启用状态。该RDS的参数组设置了rds.force_ssl=1和ssl=1,为何过期CA证书下仍能建立SSL连接?

查询语句及结果:

select s.*, query from pg_stat_ssl s inner join pg_stat_activity a using(pid) where usename<>'rdsadmin' and application_name='psql';
 pid  | ssl | version |           cipher            | bits | client_dn | client_serial | issuer_dn |                                                                query                                                                 
------+-----+---------+-----------------------------+------+-----------+---------------+-----------+--------------------------------------------------------------------------------------------------------------------------------------
 3075 | t   | TLSv1.2 | ECDHE-RSA-AES256-GCM-SHA384 |  256 |           |               |           | select s.*, query from pg_stat_ssl s inner join pg_stat_activity a using(pid) where usename<>'rdsadmin' and application_name='psql';

(1 row)


核心原因分析

1. 客户端未启用CA证书有效性验证

psql和DBeaver默认的SSL连接模式不会校验CA证书的有效期:

  • psql默认仅指定ssl=on时,实际对应sslmode=require模式——该模式只强制建立SSL加密连接,但不会验证服务端CA证书的真实性、有效期。只有设置sslmode=verify-ca(验证CA可信)或sslmode=verify-full(验证CA+域名匹配)时,才会检查CA证书是否过期。
  • DBeaver如果未在连接配置中开启「验证服务器证书」选项,同样会跳过CA证书的有效性校验,仅保证连接加密。

2. RDS服务端可能已自动轮换有效证书

AWS RDS默认会自动更新CA证书(除非手动关闭自动更新)。你本地保存的CA证书文件过期,不代表RDS实例当前使用的证书过期。可通过以下方式确认:

  • 登录AWS控制台,查看RDS实例「配置详情」中的CA证书版本及有效期;
  • 用命令行直接获取服务端证书信息:
    openssl s_client -connect your-rds-endpoint:5432 < /dev/null 2>/dev/null | openssl x509 -noout -dates
    
    输出的notBefore和notAfter会显示服务端证书的实际有效期。

3. RDS参数组仅强制SSL连接,不控制CA验证

rds.force_ssl=1和ssl=1的作用是强制客户端必须使用SSL连接,拒绝非SSL请求,但这两个参数不涉及客户端对服务端CA证书的验证逻辑——CA验证是客户端侧的配置行为,服务端无法干预。


验证与修复建议

  1. 开启客户端严格CA验证:

    • psql连接时指定sslmode=verify-full并提供有效CA证书:
      psql "host=your-rds-endport dbname=your-db user=your-user sslmode=verify-full sslrootcert=/path/to/valid/rds-ca.pem"
      
      此时如果CA证书过期,连接会直接失败。
    • DBeaver中编辑连接,在「SSL」设置里勾选「验证服务器证书」,并指定最新的RDS CA证书文件。
  2. 确认RDS实例CA证书状态:
    如果控制台显示实例CA证书已过期,手动触发证书更新(AWS提供无停机更新选项)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:35:10