CodeIgniter4连接PostgreSQL报SSLerror怎么解决

陌伟姑娘_2938

陌伟姑娘_2938

2026-09-21

741人浏览

原创

codeigniter4连接postgresql报ssl error的核心原因是php的pdo/pgsql驱动与postgresql服务端ssl协商不匹配,常见于服务端未真正启用ssl、pg_hba.conf缺少hostssl规则、dsn中sslmode配置不当或证书验证失败。

codeigniter4连接postgresql报sslerror怎么解决

CodeIgniter4 连接 PostgreSQL 报 SSL error,核心原因不是框架本身的问题,而是底层 PHP 的 PDO/pgsql 驱动与 PostgreSQL 服务端在 SSL 协商阶段不匹配。常见报错如 SSL connection has been closed unexpectedlyserver does not support SSL, but SSL was requestedunable to get local issuer certificate,本质是客户端启用了 SSL,但服务端未启用、配置不兼容,或证书验证失败。

确认 PostgreSQL 服务端是否真正支持 SSL

很多问题出在“以为开了 SSL”,其实没生效:

  • 登录数据库执行 SHOW ssl; —— 必须返回 on,否则服务端根本没启用 SSL
  • 检查 postgresql.confssl = on 是否已取消注释且保存生效(重启服务或 reload)
  • 检查 pg_hba.conf 是否有 hostssl 规则(例如:hostssl all all 0.0.0.0/0 scram-sha-256),仅 host 规则不走 SSL
  • 云环境(如 AWS RDS、Supabase、Azure DB)默认强制 SSL,但本地自建库若没配 ssl_cert_filessl_key_file,即使 ssl=on 也会握手失败

调整 CodeIgniter4 数据库配置中的 SSL 行为

CI4 使用 PDO 连接 PostgreSQL,SSL 控制依赖 DSN 参数,不能靠环境变量或全局设置:

SSL
SSL

配置HTTPS,管理TLS证书,并调试安全连接问题。

下载
  • app/Config/Database.php 的 PostgreSQL 组中,把 DSN 字段写完整,例如:
    'DSN' => 'pgsql:host=127.0.0.1;port=5432;dbname=mydb;sslmode=require;'
  • 开发阶段无证书可配?改用 sslmode=disable(仅限可信内网,如 Docker 或本机):
    'DSN' => 'pgsql:host=127.0.0.1;port=5432;dbname=mydb;sslmode=disable;'
  • 生产环境需证书验证?加 sslrootcert(CA 文件路径)和 sslcert/sslkey(客户端证书):
    'DSN' => 'pgsql:host=db.example.com;dbname=mydb;sslmode=verify-full;sslrootcert=/etc/ssl/certs/ca.crt;sslcert=/etc/ssl/client.crt;sslkey=/etc/ssl/client.key;'
  • 注意:PHP 进程必须有权限读取证书文件路径;路径建议用绝对路径,避免相对路径失效

绕过 SSL 验证(仅限调试,禁止上线)

临时跳过证书校验可用于快速验证是否纯属证书链问题(比如自签名、时间偏差、域名不匹配),但绝不可用于生产:

  • 在 DSN 中添加 sslmode=allowsslmode=prefer(不推荐,安全性低)
  • 更直接的方式:在连接前禁用 OpenSSL 全局验证(危险!仅测试):
    putenv('PGSSLMODE=allow'); 放在 index.php 或数据库初始化前
  • 或者,在 php.ini 中设 openssl.cafile= 留空,或指向一个包含你自签 CA 的 PEM 文件(推荐长期方案)

检查 PHP 环境与扩展兼容性

PostgreSQL + SSL 依赖 PHP 编译时启用 OpenSSL 和 pgsql/pdo_pgsql 扩展:

  • 运行 php -m | grep -i "pgsql\|pdo\|openssl",确认 pgsqlpdo_pgsqlopenssl 均已加载
  • 若用的是 Alpine Linux(Docker 常见),需安装 php82-pgsqlca-certificates 包,并确保 /etc/ssl/certs/ca-certificates.crt 存在
  • PHP 8.1+ 默认更严格校验证书;若服务器时间不准(如 Docker 容器时钟漂移),也可能触发 SSL: certificate verification failed —— 同步系统时间再试

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

codeigniter ssl

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.10

193

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

3989

19

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。更详细的postgresql常用命令,大家可以访问下面的文章。

2023.11.16

607

3

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有\l、\d、\d5、\di、\ds、\dv、\df、\dn、\db、\dg、\dp、\c、\pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

2023.11.20

1316

6

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

2026.02.12

420

19

PostgreSQL 性能优化与查询执行计划实战
PostgreSQL 性能优化与查询执行计划实战

本专题深入解析PostgreSQL性能优化核心,聚焦查询执行计划的实战应用。通过EXPLAIN命令精准定位瓶颈,结合索引策略、SQL改写与参数调优,系统提升查询效率。从执行计划解读到性能调优全流程,助你掌握数据库性能诊断与优化实战能力。

2026.05.08

130

10

PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践
PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践

本文详解如何利用Next.js(搭配Drizzle ORM)与Go后端构建高性能应用,充分发挥PG在JSONB非结构化存储与pgvector向量检索上的优势。从数据建模到Docker容器化部署,打造支持AI时代的“One Database”工程化解决方案。

2026.05.08

861

10

PostgreSQL高级特性、内核机制与现代数据架构
PostgreSQL高级特性、内核机制与现代数据架构

本专题从MVCC并发控制与WAL日志等内核机制出发,详解JSONB、PostGIS及pgvector等高级特性。探讨如何利用单一引擎支撑关系型、向量及图数据等现代数据架构需求,助您掌握构建高并发、智能化应用的核心技术。

2026.05.08

204

10

SSL检测工具介绍
SSL检测工具介绍

SSL检测工具有SSL Labs、SSL Check、SSL Server Test、SSLMate、SSL/TLS Analyzer等。详细介绍:1、SSL Labs是一个由Qualys提供的在线SSL检测工具,可以评估服务器证书的部署情况、加密套件、协议支持等方面的安全性,它提供了一个详细的报告,包括证书的颁发者、有效期、安全性配置等;2、SSL Check等等。

2023.10.20

670

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程