人称外号大脸猫

🌟 告别手动续期!Laravel项目自动管理SSL证书实战指南

🚀 一、3分钟极速安装

解决依赖冲突是关键!

# 基础安装  
composer require daanra/laravel-lets-encrypt  

# 遇Guzzle冲突时(Laravel老项目常见)  
composer require daanra/laravel-lets-encrypt guzzlehttp/guzzle:^6  

# 发布配置 & 迁移数据库  
php artisan vendor:publish --provider="Daanra\LaravelLetsEncrypt\LetsEncryptServiceProvider"  
php artisan migrate  

💡 迁移失败?检查数据库连接配置!

⚙️ 二、核心配置详解

编辑 config/lets-encrypt.php:

return [
    'domains' => ['yourdomain.com', 'api.yourdomain.com'], // 支持多域名!
    'storage_path' => storage_path('app/letsencrypt'), // 证书安全存储
    'webserver_software' => 'nginx', // 或 'apache'
    'email' => 'admin@yourdomain.com', // 证书到期提醒邮箱
    'environment' => env('LETS_ENCRYPT_ENV', 'staging'), // 测试用staging!
];

避坑指南:

  • 测试阶段务必用 staging 环境,避免触发Let's Encrypt的5次/周申请限制
  • 生产环境切换 production 后需重新生成证书

🔐 三、域名验证实战技巧

  1. HTTP-01挑战的终极解决方案 路由配置(routes/web.php)
Route::get('/.well-known/acme-challenge/{token}', function ($token) {
    return Storage::get("public/.well-known/acme-challenge/{$token}");
})->withoutMiddleware(['web']); // 关键!跳过所有中间件
  1. 服务器配置 Nginx用户必加:
location ^~ /.well-known/acme-challenge/ {
    alias /path/to/storage/app/public/.well-known/acme-challenge/;
    try_files $uri =404;
}

⚡ 四、证书自动化管理

一条命令搞定全流程

# 生成证书(首次执行)
php artisan lets-encrypt:create yourdomain.com

# 设置自动续期(app/Console/Kernel.php)
protected function schedule(Schedule $schedule) {
    $schedule->command('lets-encrypt:renew')->monthly();
}

✅ 证书自动存入 storage/app/letsencrypt/yourdomain.com ✅ 90天有效期自动续期,永久规避HTTPS中断风险

🚨 五、生产环境硬核部署

Web服务器配置示例

# Nginx配置片段
server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    # 其他配置...
}

🔧 六、高频问题急救手册

问题现象解决方案

  • 证书生成失败:检查 /.well-known 能否公开访问
  • Apache报SSL协议错误:启用 sudo a2enmod ssl
  • Laravel Sail无证书:容器挂载证书并配置 .env
  • Websockets无法启用SSL:修改 config/websockets.php

🛡️ 七、企业级安全实践

  1. 证书监控:
php artisan lets-encrypt:check # 实时验证证书状态

搭配 Slack/邮件通知,到期前自动预警

  1. 私钥防护:
chmod 600 -R storage/app/letsencrypt # 禁止目录公开访问

终极提示:正式上线前,务必在 staging 环境完成全流程测试!避免操作失误导致生产环境被Let's Encrypt限流。

立即告别繁琐的证书续期,让HTTPS成为Laravel项目的默认安全基座!

copyright ©2025 ahimu.com all rights reserved 皖ICP备19021547号-1