启用 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)、到数据库服务端------都对证书链、协议版本、密钥交换方式达成一致。漏掉任意一环,看着像启用了,实则裸奔。
相关推荐
小饕2 小时前
RAG学习之 - 检索质量评估指标详解:从概念到代码实战切糕师学AI2 小时前
深入解析SqlSugar:.NET领域的高性能多数据库ORM框架城数派2 小时前
2025年我国乡镇的平均高程数据(Excel\Shp格式)2301_817672262 小时前
C#怎么实现RSA非对称加密 C#如何用RSA算法进行公钥加密私钥解密和数字签名【安全】Greyson12 小时前
Go语言中纯函数调用的并发安全性详解InfinteJustice2 小时前
怎么在Node.js中管理MongoDB的数据库迁移版本_使用migrate-mongo进行类似Flyway的版本演进控制极光代码工作室2 小时前
基于数据挖掘的高校图书借阅分析系统rockmelodies2 小时前
用 Python 实现 Docker 镜像批量推送(带进度条)2301_817672262 小时前
如何在 HTML 中正确使用 exif-js 库读取图片 EXIF 元数据