laravel本身不处理ssl,https由web服务器(nginx/apache)配置并终止;laragon启用https报错主因是证书路径错误(需绝对路径)、证书链不全(应合并为fullchain.pem)、私钥权限不当或未传递x-forwarded-proto头,laravel仅需设app_url为https并配置trustproxies中间件。

不是 Laravel 报 SSL 错,是 Laragon 内置的 Apache 或 Nginx 在启用 HTTPS 时证书路径、格式或权限没配对——Laragon 本身不生成证书,它只是把 OpenSSL 生成的文件或 Let’s Encrypt 的证书挂载进 Web 服务。报错如 “SSL_CTX_use_certificate_chain_file failed”“cURL error 60” 或页面空白/502,基本都卡在这几步。
检查 Laragon 的 HTTPS 证书路径是否正确
Laragon 默认用自签名证书,放在 C:\laragon\etc\ssl\ 下,含 laragon.crt 和 laragon.key。但很多报错是因为:
- Apache 配置中
SSLCertificateFile指向了laragon.crt,却漏了中间证书(应合并为fullchain.crt) - Nginx 配置里
ssl_certificate写成laragon.crt,实际要指向包含根证书+中间证书的完整链文件 - 路径用了相对路径(如
./ssl/laragon.crt),而 Laragon 要求绝对路径,例如C:/laragon/etc/ssl/laragon.crt
修复 cURL error 60:本地 PHP 请求校验证书失败
这个错常出现在 Laravel 用 Guzzle 或 HTTP Facade 调外部 API(比如微信、钉钉)时,不是你的站点没开 HTTPS,而是 PHP 的 cURL 不信任目标服务器的证书链。
- 下载最新 cacert.pem,存到
C:\laragon\usr\ssl\cacert.pem - 打开
C:\laragon\bin\php\php-{version}\php.ini,取消注释并修改两行:curl.cainfo = "C:/laragon/usr/ssl/cacert.pem"<br> openssl.cafile = "C:/laragon/usr/ssl/cacert.pem" - 重启 Laragon(不是只重启 Apache/Nginx,要右键托盘 → Restart All)
让 Laravel 正确识别 HTTPS 请求
即使 Laragon 启用了 HTTPS,Laravel 的 url()、asset() 还可能输出 http 链接,导致混合内容警告。这是因为:
-
APP_URL在.env中仍是http://yourapp.test—— 改成https://yourapp.test - Laragon 的 Apache/Nginx 默认不传
X-Forwarded-Proto头,Laravel 不知道当前是 HTTPS —— 在app/Http/Middleware/TrustProxies.php中设:protected $proxies = '127.0.0.1';<br> protected $headers = \Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO; - 可选:在
AppServiceProvider@boot()加一行强制协议:\URL::forceScheme('https');(仅当代理头不可靠时用)
用 Let’s Encrypt 给 Laragon 域名配真实证书(推荐)
Laragon 自签名证书会被浏览器标记“不安全”,开发没问题,但对接微信支付、小程序等必须用可信证书。
- 确保域名已解析到本机(如
test.app→127.0.0.1),且 Laragon 已添加该虚拟主机 - 下载 mkcert,运行:
mkcert -install<br> mkcert test.app→ 生成test.app.pem和test.app-key.pem - 复制这两个文件到
C:\laragon\etc\ssl\,替换原文件或新建配置引用它们 - 在 Laragon 主界面右键 → Quick Add > SSL Certificate,选择新证书即可自动绑定











