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

使用FastAPI+SQLAlchemy连接AWS RDS SSL时遇认证错误求助

问题描述

报错信息:

asyncpg.exceptions.InvalidAuthorizationSpecificationError: no pg_hba.conf entry for host "106.213.85.14", user "user", database "db-name", no encryption
make: *** [Makefile:85: migration] Error 1

使用的连接URL:

postgresql+asyncpg://username:password@aws-endpoint:port/db-name?rds_sslrootcert=true&sslmode=require

异步连接代码:

if settings.DB_SSL:
    ssl_context = ssl.create_default_context(cafile=settings.RDS_CERT_PATH)
    ssl_context.verify_mode = ssl.CERT_REQUIRED
    connect_args = {"ssl": ssl_context}


engine = create_async_engine(
    settings.DB_SSL_DSN if settings.DB_SSL else settings.DB_DSN,
    echo=settings.DB_ECHO,
    pool_size=settings.DB_POOL_SIZE,
    max_overflow=settings.DB_MAX_OVERFLOW,
    future=True,
    connect_args=connect_args if settings.DB_SSL else None,
)

async_session = sessionmaker(engine, expire_on_commit=False, class_=AsyncSession, future=True)

已开放RDS安全组所有入站流量,但仍报错,需排查自身可能存在的错误。

自身错误排查项
  • 检查SSL配置冲突
    你同时在URL中添加sslmode=require参数,又通过connect_args传递ssl_context,两种配置方式可能冲突,导致asyncpg未正确启用加密连接。建议二选一:要么保留URL的SSL参数,删除connect_args中的ssl配置;要么去掉URL的SSL参数,仅通过connect_args传入ssl_context。

  • 验证RDS CA证书路径
    确认settings.RDS_CERT_PATH指向的证书文件存在、可读,且为AWS官方RDS根证书(如rds-ca-2019-root.pem)。路径错误或证书损坏会导致SSL握手失败,服务器判定连接未加密,触发pg_hba.conf错误。

  • 确认SSL开关状态
    检查settings.DB_SSL是否被正确设置为True,否则connect_args不会被传入,URL中的SSL参数也可能因settings.DB_SSL_DSN未正确赋值而失效。可临时添加日志或打印,输出settings.DB_SSL值与实际使用的DSN。

  • 修正URL转义字符
    URL中的&是HTML转义后的符号,Python代码中应直接使用&。若settings.DB_SSL_DSN保留&,asyncpg会将amp;sslmode=require识别为无效参数,导致SSL模式未正确配置。正确URL格式应为:

    postgresql+asyncpg://username:password@aws-endpoint:port/db-name?rds_sslrootcert=true&sslmode=require
    
  • 检查RDS SSL强制设置
    确认RDS实例参数组中rds.force_ssl是否设为1(开启强制SSL)。若开启强制SSL但连接未加密,会触发该错误;若未开启,可能pg_hba.conf中对应规则要求加密连接,而你的连接未满足条件。

  • 查询pg_hba规则匹配情况
    通过RDS执行SQL查询当前生效的pg_hba规则:

    SELECT * FROM pg_hba_file_rules;
    

    查看匹配你的主机、用户、数据库的规则类型,若为hostssl则要求加密连接,需确保你的连接已正确启用SSL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:17:25