启用 require_secure_transport=ON 后连接被拒,需确保客户端显式启用 SSL(如 --ssl-mode=REQUIRED)、服务端 SSL 已正确配置(have_ssl=YES),并避免 localhost 走 socket;PostgreSQL 需用 hostssl 规则配合 ssl=on 才真正强制加密;Java 报 PKIX 错误是因 JVM 未信任 MySQL CA 证书,须导入至 trustStore;自签名证书仅建议内网测试使用,生产环境应采用私有或公开 CA 管理。MySQL 启用 SSL 时 require_secure_transport=ON 导致连接拒绝怎么办直接开 require_secure_transport=ON 很容易让旧客户端连不上,报错 ERROR 3159 (HY000): Connections using insecure transport are prohibited while --require-secure-transport=ON。这不是配置错了,而是客户端没走 SSL。先确认服务端 SSL 已启用:SHOW VARIABLES LIKE 'have_ssl'; 和 SHOW VARIABLES LIKE 'ssl_mode'; 都得是 YES 或 PREFERRED;再查 SHOW STATUS LIKE 'Ssl%'; 看是否有活跃加密会话。客户端必须显式声明使用 SSL:命令行加 --ssl-mode=REQUIRED,否则即使服务端支持,TCP 连接也默认走明文应用代码里(如 Python 的 pymysql)要传 ssl={'ssl': {}} 或更严格的 ssl={'ca': '/path/to/ca.pem'},空字典 ≠ 自动启用,只是允许协商Docker 或容器环境注意:localhost 可能走 socket 而非 TCP,SSL 不生效;改用 127.0.0.1 强制走网络栈PostgreSQL 的 pg_hba.conf 怎么写才真正强制 SSL只在 postgresql.conf 开 ssl = on 没用,真正控制是否加密的是 pg_hba.conf 的认证方式和 hostssl 规则。常见错误是把所有连接都写成 host,结果明文流量照常通行。必须用 hostssl 行匹配对应客户端 IP 和数据库,并指定 cert 或 scram-sha-256 等需 SSL 的认证方法。hostssl all all 0.0.0.0/0 scram-sha-256:要求所有远程连接走 SSL + 密码加密认证避免混用:host 和 hostssl 规则同时存在时,PostgreSQL 按顺序匹配,靠前的 host 规则可能"截胡"掉本该加密的请求修改后必须 pg_ctl reload 或 SELECT pg_reload_conf();,service postgresql restart 会中断连接,不必要Java 应用连 MySQL 启用 SSL 后报 PKIX path building failed这是 JVM 找不到可信 CA 证书,不是 MySQL 配置问题。JDBC URL 加了 &useSSL=true&requireSSL=true,但驱动校验服务端证书时失败。根本原因是 Java 默认信任库($JAVA_HOME/jre/lib/security/cacerts)里没有你的 MySQL 服务端所用 CA 的公钥。最简方案:启动 JVM 时加参数 -Djavax.net.ssl.trustStore=/path/to/mysql-ca.jks,这个 JKS 文件需包含你 MySQL 的 CA 证书(可用 keytool -importcert 导入)别用 &verifyServerCertificate=false 关闭校验------这等于把加密通道降级为"可被中间人篡改的伪加密"Spring Boot 项目可在 application.yml 中配 spring.datasource.hikari.data-source-properties.sslTrustStore,但路径必须是绝对路径且 JVM 有读权限自签名证书在生产环境能不能用能用,但代价高:每个客户端都要手动导入 CA 证书,运维成本陡增,且无法抵御证书吊销类攻击。小团队或内网测试用自签没问题;一旦涉及多业务线、第三方对接或合规审计(比如等保、GDPR),就必须上公开 CA 或私有 CA 系统(如 HashiCorp Vault PKI、OpenSSL CA)。自签名证书的 Common Name 或 Subject Alternative Name 必须精确匹配客户端连接时用的域名/IP,否则 JDBC、psql 等工具会因主机名验证失败而拒连MySQL 8.0+ 默认启用 sha256_password 插件,若搭配自签证书又未同步更新客户端密码哈希方式,可能触发 Client does not support authentication protocol证书有效期别设太长------自签证书过期比轮换密钥更难发现,建议 ≤ 90 天,并配合监控告警(如用 openssl x509 -in server.pem -enddate -noout 检查)SSL 加密本身不难配,难的是让每条链路------从连接发起方、中间代理(如 HAProxy)、到数据库服务端------都对证书链、协议版本、密钥交换方式达成一致。漏掉任意一环,看着像启用了,实则裸奔。
相关推荐
geovindu1 小时前
sql: JSON and XML Data Handling in SQL using sql server 2025风早爽太1 小时前
Python 学习笔记:SQLModel 使用外键关联查询数据专业程序开发源1 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计IT大白鼠2 小时前
图数据库系列 · 第 02 篇——架构拆解:原生图存储到因果集群在世修行2 小时前
干货:左右分栏调试工具设计零基础1232 小时前
DeepSeek V4.1 Flash (Batch) 的性能测试与应用Yyyyyy~2 小时前
【Anaconda】安装LOVE️YOU2 小时前
Python 函数名、函数对象与“把函数作为参数传递”EatFan2 小时前
从“框架混战“到“运行时收敛“:2026 年 AI Agent 开发框架的三条路线之争小蒜学长2 小时前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)