启用 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)、到数据库服务端------都对证书链、协议版本、密钥交换方式达成一致。漏掉任意一环,看着像启用了,实则裸奔。
相关推荐
S1998_1997111609•X9 小时前
论当今社会主义与人文关怀人格思想下的恶意仿生注入污染蜜罐描述进行函数值非法侵入爬虫的咼忄乂癿〇仺⺋.我叫黑大帅9 小时前
如何通过 Python 实现招聘平台自动投递其实防守也摸鱼10 小时前
CTF密码学综合教学指南--第九章砚底藏山河10 小时前
Python量化开发:2026最佳实时股票数据API接口推荐与对比倔强的石头_10 小时前
kingbase备份与恢复实战(六)—— 备份自动化与保留策略:Windows任务计划+日志追溯研究点啥好呢11 小时前
专为求职者开发的“面馆”!!!摆脱面试焦虑!!!轻刀快马11 小时前
别被 ORM 框架宠坏了:从一场“订单消失”悬案,看懂 MySQL 为什么要强推 InnoDBDFT计算杂谈12 小时前
自动化脚本一键绘制三元化合物相图EW Frontier12 小时前
6G ISAC新范式:基于智能漏波天线的Wi‑Fi通感一体化系统设计与实测【附MATLAB+python代码】姚青&12 小时前
测试技术体系