# auto-ssl **Repository Path**: tght1211/auto-ssl ## Basic Information - **Project Name**: auto-ssl - **Description**: Auto-SSL 是一个智能化的 SSL 证书自动配置工具,支持宝塔面板和通用 Nginx 环境,使用 Let's Encrypt 提供免费 SSL 证书。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-29 - **Last Updated**: 2025-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🔒 Auto-SSL v2.0 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.6+](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/) [![Platform](https://img.shields.io/badge/platform-Linux-green.svg)](https://www.linux.org/) [![Version](https://img.shields.io/badge/version-2.0.0-blue.svg)](https://gitee.com/tght1211/auto-ssl) **Auto-SSL v2.0** 是一个智能化的 SSL 证书自动配置工具,支持**宝塔面板**和**通用 Nginx** 环境。通过一键部署实现 Let's Encrypt 免费 SSL 证书的自动申请、配置和续期。 ## ⚡ 快速使用 ### 🎯 极速体验(推荐) ```bash # 一键部署并配置(支持交互式引导) curl -sSL https://gitee.com/tght1211/auto-ssl/raw/master/quick-start.sh | sudo bash ``` ### 🚀 分步操作 ```bash # 1. 一键安装 curl -sSL https://gitee.com/tght1211/auto-ssl/raw/master/install.sh | sudo bash # 2. 开始使用 auto-ssl bt # 宝塔面板用户 auto-ssl # 通用Nginx用户 ``` ## ✨ 核心特性 ### 🚀 智能化部署 - 🎯 **一键安装部署** - 单条命令完成环境检测、依赖安装和脚本配置 - 🧠 **智能环境识别** - 自动检测宝塔面板或通用 Nginx 环境 - 🔍 **智能配置发现** - 自动搜索 Nginx 配置文件,智能提取网站根目录 - 📋 **依赖智能检测** - 检测并自动安装缺失的系统依赖 ### 🔐 SSL 证书管理 - 🤖 **自动证书申请** - 使用 Certbot 申请 Let's Encrypt 免费证书 - 🔄 **自动续期机制** - 内置 cron 定时任务,实现证书自动续期 - 🔐 **证书有效性验证** - 实时验证证书状态和有效期 - 📱 **手动续期支持** - 提供 `auto-ssl --renew` 命令手动续期 ### ⚙️ 配置与安全 - 📁 **宝塔面板集成** - 完美适配宝塔面板目录结构和配置格式 - 🛡️ **现代安全标准** - TLS 1.2/1.3 协议,强加密套件,HSTS 安全头 - ✅ **配置安全验证** - 自动测试 Nginx 配置语法,确保服务稳定 - 🔄 **智能服务管理** - 多种 Nginx 重载方式,确保配置生效 ### 🎛️ 用户体验 - 💻 **命令行工具** - 提供 `auto-ssl` 和 `auto-ssl bt` 便捷命令 - 📝 **详细操作日志** - 彩色输出,详细的操作步骤和错误信息 - 🚨 **超时保护机制** - 防止网络操作卡死,智能超时控制 - 🛠️ **问题诊断工具** - 内置诊断脚本,快速定位和解决问题 ## 📋 系统要求 使用 Auto-SSL 前,请确保您的系统满足以下要求: | 要求项目 | 说明 | |---------|------| | **操作系统** | Linux (CentOS, Ubuntu, Debian) | | **Python** | Python 3.6 或更高版本 | | **Certbot** | Let's Encrypt 证书客户端 | | **Nginx** | Web 服务器 | | **宝塔面板** | 服务器管理面板 | | **Root 权限** | 证书和配置管理需要管理员权限 | | **域名解析** | 域名必须正确解析到服务器 IP | | **网站目录** | 网站根目录必须存在 (`/www/wwwroot/domain.com`) | ## 🚀 快速开始 ### 🎯 一键安装(推荐) 只需一条命令,即可完成所有安装和配置: ```bash # 一键安装Auto-SSL curl -sSL https://gitee.com/tght1211/auto-ssl/raw/master/install.sh | sudo bash ``` 安装完成后,您可以直接使用: ```bash # 宝塔面板用户 auto-ssl bt # 通用Nginx用户 auto-ssl ``` ### 📦 手动安装 如果您希望手动安装,可以按以下步骤操作: #### 方法一:克隆仓库 ```bash # 克隆仓库 git clone https://gitee.com/tght1211/auto-ssl.git cd auto-ssl # 设置脚本可执行权限 chmod +x auto_ssl_universal.py install.sh quick-start.sh ``` #### 方法二:直接下载 ```bash # 下载安装脚本 wget https://gitee.com/tght1211/auto-ssl/raw/master/install.sh chmod +x install.sh # 运行安装 sudo bash install.sh ``` #### 手动安装依赖 **CentOS/RHEL/AlmaLinux:** ```bash yum update -y yum install certbot nginx python3 python3-pip -y ``` **Ubuntu/Debian:** ```bash apt update apt install certbot nginx python3 python3-pip -y ``` ## 💻 使用方法 ### 🎮 基础命令(推荐) 安装完成后,您可以直接使用以下命令: ```bash # 🔹 宝塔面板用户(推荐) auto-ssl bt # 🔹 通用Nginx用户 auto-ssl # 🔹 查看帮助信息 auto-ssl --help # 🔹 查看版本信息 auto-ssl --version # 🔹 手动续期所有证书 auto-ssl --renew ``` ### 🛠️ 高级用法 ```bash # 直接运行Python脚本(开发者模式) sudo python3 /usr/local/bin/auto_ssl_universal.py # 指定运行模式 sudo python3 /usr/local/bin/auto_ssl_universal.py --mode baota # 宝塔模式 sudo python3 /usr/local/bin/auto_ssl_universal.py --mode generic # 通用模式 # 非交互模式(预设域名和邮箱) sudo python3 /usr/local/bin/auto_ssl_universal.py --domain example.com --email admin@example.com --mode baota ``` ### 📋 完整命令参数 | 参数 | 说明 | 示例 | |------|------|------| | `auto-ssl` | 智能检测环境,自动选择模式 | `auto-ssl` | | `auto-ssl bt` | 强制使用宝塔面板模式 | `auto-ssl bt` | | `--help` | 显示完整帮助信息 | `auto-ssl --help` | | `--version` | 显示当前版本号 | `auto-ssl --version` | | `--renew` | 手动续期所有证书 | `auto-ssl --renew` | | `--domain DOMAIN` | 非交互模式指定域名 | `--domain example.com` | | `--email EMAIL` | 指定 Let's Encrypt 邮箱 | `--email admin@domain.com` | | `--mode MODE` | 强制指定运行模式 (baota/generic) | `--mode baota` | ### 🔄 证书续期管理 ```bash # 手动续期所有证书(推荐) auto-ssl --renew # 查看续期任务状态 crontab -l | grep auto-ssl # 查看续期日志 tail -f /var/log/auto-ssl-renew.log ``` ### 使用示例 ``` [INFO] SSL 证书自动化配置程序 [INFO] ======================================== [INFO] 执行命令: which certbot [INFO] 执行命令: which nginx [INPUT] 请输入要配置 SSL 证书的域名: example.com [INFO] 开始为域名 example.com 配置 SSL 证书 [INFO] 开始申请 example.com 的 Let's Encrypt 证书... [SUCCESS] 成功申请 example.com 的证书 [INFO] 创建宝塔面板证书目录 for example.com... [SUCCESS] 成功创建证书目录: /www/server/panel/vhost/cert/example.com [SUCCESS] 成功复制证书文件到宝塔目录 [SUCCESS] 成功更新 nginx 配置文件 [SUCCESS] nginx 配置测试通过 [SUCCESS] nginx 重新加载成功 [SUCCESS] SSL 证书验证成功 [SUCCESS] 成功为域名 example.com 配置 SSL 证书! [INFO] 您现在可以通过 https://example.com 访问您的网站 ``` ## 🔧 工作原理 Auto-SSL v2.0 通过智能化流程实现全自动 SSL 证书配置: ### 🎯 智能环境识别 - **🧠 环境检测**:自动识别宝塔面板(检查 `/www/server/panel` 目录) - **📋 系统适配**:支持 CentOS/RHEL、Ubuntu/Debian、AlmaLinux - **🔍 依赖验证**:智能检测 Python3、Certbot、Nginx 安装状态 - **📦 自动安装**:缺失依赖时自动调用包管理器安装 ### 🚀 SSL 配置流程 1. **🔐 环境准备** - 验证 root 权限和系统依赖 - 检测并确认运行环境(宝塔 vs 通用) 2. **📋 域名处理** - 正则表达式验证域名格式 - 交互式域名输入或命令行参数接收 3. **🔍 智能路径发现** - 自动搜索 Nginx 配置文件 (`find` + `grep`) - 解析配置文件提取 `root` 指令获取实际网站根目录 - 提供手动路径输入和目录创建选项 4. **📧 邮箱配置** - 优先使用 `--email` 参数 - 交互模式提示用户输入 - 默认生成 `admin@domain.com` 格式邮箱 5. **🔐 证书申请** - 使用 Certbot webroot 验证方式 - 创建 `.well-known/acme-challenge` 验证目录 - 自动处理 Let's Encrypt 证书申请流程 6. **⚙️ 配置更新** - **宝塔模式**:更新 `/www/server/panel/vhost/nginx/*.conf` - **通用模式**:创建 `/etc/nginx/sites-available/*` 配置 - 添加现代 SSL/TLS 配置和安全头 7. **✅ 安全验证** - Nginx 配置语法测试 (`nginx -t`) - 多种方式重载服务 (`systemctl`/`service`/`nginx -s reload`) - OpenSSL 证书有效性验证 8. **🔄 自动续期设置** - 创建 cron 定时任务 (`/usr/local/bin/auto-ssl-renew.sh`) - 每日两次执行 `certbot renew` - 续期成功后自动重载 Nginx ### 🛡️ 安全与容错机制 - **⏱️ 超时控制**:网络操作 30-300 秒超时,防止卡死 - **🚫 非交互模式**:使用 `--non-interactive --agree-tos` 参数 - **📝 详细日志**:彩色输出,完整的操作步骤和错误信息 - **🔄 多重保护**:支持多种 Nginx 重载方式确保配置生效 - **🛠️ 诊断工具**:内置问题检测和修复建议 ## 📁 目录结构 ### 🏗️ 宝塔面板模式 ``` /www/server/panel/vhost/ ├── cert/ │ └── your-domain.com/ │ ├── fullchain.pem │ └── privkey.pem └── nginx/ └── your-domain.com.conf /www/wwwroot/ └── your-domain.com/ └── .well-known/ ``` ### 🌐 通用Nginx模式 ``` /etc/nginx/ ├── sites-available/ │ └── your-domain.com └── sites-enabled/ └── your-domain.com -> ../sites-available/your-domain.com /etc/letsencrypt/live/ └── your-domain.com/ ├── fullchain.pem └── privkey.pem /var/www/ └── your-domain.com/ └── .well-known/ ``` ### ⚙️ 系统配置 ``` /usr/local/bin/ ├── auto-ssl # 命令行工具脚本 ├── auto_ssl_universal.py # 主Python脚本 └── auto-ssl-renew.sh # 证书续期脚本 /etc/cron.d/ └── auto-ssl-renew # 自动续期cron任务 /tmp/ ├── diagnose.sh # 系统诊断脚本 ├── fix-alias.sh # 别名修复脚本 ├── install.sh # 安装脚本 └── quick-start.sh # 快速开始脚本 ``` ## 🛡️ 安全特性 - **现代 TLS 协议**:仅支持 TLS 1.2 和 1.3 - **强加密套件**:EECDH+CHACHA20、EECDH+AES128/256 - **HSTS 安全头**:强制 HTTPS 访问以增强安全性 - **安全权限**:设置正确的文件权限(644/600) - **HTTP 重定向**:自动从 HTTP 重定向到 HTTPS ## ⚠️ 重要提示 - **需要管理员权限** - 脚本需要修改系统配置文件 - **建议备份配置** - 运行前请务必备份您的 Nginx 配置文件 - **域名前置条件** - 确保域名 DNS 正确解析到您的服务器 - **网站目录依赖** - 申请证书前网站目录必须存在 - **宝塔面板专用** - 专为宝塔面板目录结构设计 ## 🐛 故障排除 ### 📋 常见问题解决 | 问题类型 | 问题描述 | 解决方案 | |---------|---------|----------| | **安装问题** | `auto-ssl: command not found` | 运行修复脚本:`curl -sSL https://gitee.com/tght1211/auto-ssl/raw/master/fix-alias.sh \| sudo bash` | | **依赖问题** | `certbot command not found` | 重新安装:`curl -sSL https://gitee.com/tght1211/auto-ssl/raw/master/install.sh \| sudo bash` | | **依赖问题** | `nginx command not found` | 同上,脚本会自动检测并安装 Nginx | | **权限问题** | `Permission denied` | 确保使用 root 权限:`sudo auto-ssl` 或直接在 root 用户下运行 | | **目录问题** | `Webroot directory not found` | 脚本会智能搜索配置文件,并提供创建目录选项 | | **网络问题** | `Certificate validation failed` | 检查域名 DNS 解析、防火墙设置(80/443端口开放) | | **超时问题** | `certbot renew 卡住` | 已修复:v2.0 增加了超时控制和非交互式参数 | | **配置问题** | `Nginx 配置语法错误` | 脚本自动备份原配置,可通过诊断脚本检查 | ### 🛠️ 快速诊断工具 ```bash # 运行系统诊断(推荐第一步) curl -sSL https://gitee.com/tght1211/auto-ssl/raw/master/diagnose.sh | bash # 修复别名问题(最常见问题) curl -sSL https://gitee.com/tght1211/auto-ssl/raw/master/fix-alias.sh | sudo bash # 查看证书续期状态 auto-ssl --renew # 检查 cron 任务 crontab -l | grep auto-ssl ``` ### 🔍 手动调试模式 ```bash # 直接运行 Python 脚本查看详细输出 sudo python3 /usr/local/bin/auto_ssl_universal.py --domain example.com --mode baota # 测试证书续期 sudo python3 /usr/local/bin/auto_ssl_universal.py --renew # 检查 Nginx 状态 sudo nginx -t # 配置语法检查 sudo systemctl status nginx # 服务状态 sudo nginx -s reload # 重载配置 ``` ### 🆘 获取技术支持 遇到问题时的标准处理流程: 1. **🔍 运行诊断**:`curl -sSL https://gitee.com/tght1211/auto-ssl/raw/master/diagnose.sh | bash` 2. **📋 检查日志**:查看脚本输出的详细错误信息 3. **🔧 尝试修复**:根据错误类型运行对应的修复脚本 4. **📞 寻求帮助**:提供诊断结果到项目 Issues ## 🚀 版本更新 ### v2.0.0 (当前版本) #### 🎯 核心功能 - ✨ **一键部署体验**:`curl | bash` 单条命令完成安装和配置 - 🧠 **智能环境识别**:自动检测宝塔面板和通用 Nginx 环境 - 💻 **便捷命令工具**:提供 `auto-ssl` 和 `auto-ssl bt` 快捷命令 - 🔄 **自动证书续期**:内置 cron 任务,支持 `auto-ssl --renew` 手动续期 #### 🛠️ 技术改进 - 🔍 **智能配置发现**:自动搜索和解析 Nginx 配置文件,提取真实网站根目录 - 📧 **灵活邮箱配置**:支持命令行参数、交互输入和自动生成邮箱 - ⏱️ **超时保护机制**:防止网络操作卡死,支持 30-300 秒智能超时 - 🚫 **非交互式运行**:使用 `--non-interactive --agree-tos` 确保自动化执行 #### 🛡️ 稳定性提升 - 📋 **多平台兼容**:完美支持 CentOS/RHEL、Ubuntu/Debian、AlmaLinux - 🔧 **多重容错机制**:支持多种 Nginx 重载方式,确保配置生效 - 📝 **详细日志系统**:彩色输出,完整的操作步骤和错误诊断 - 🛠️ **问题诊断工具**:内置诊断脚本和修复建议 #### 🔐 安全增强 - 🛡️ **现代安全标准**:TLS 1.2/1.3,强加密套件,HSTS 安全头 - ✅ **配置安全验证**:自动测试 Nginx 配置语法 - 🔐 **证书有效性检查**:实时验证证书状态和有效期 ### v1.0.0 (已废弃) - ⚠️ **注意**:v1.0.0 版本已停止维护,请升级到 v2.0.0 - 🔄 **自动升级**:运行新的安装脚本会自动替换旧版本 ## 🤝 参与贡献 我们欢迎所有形式的贡献!无论是 Bug 报告、功能建议还是代码贡献。 ### 🔄 贡献流程 1. **Fork 本仓库** 2. **创建特性分支** (`git checkout -b feature/AmazingFeature`) 3. **提交更改** (`git commit -m 'Add some AmazingFeature'`) 4. **推送到分支** (`git push origin feature/AmazingFeature`) 5. **开启 Pull Request** ### 📝 贡献指南 - 保持代码风格一致 - 添加适当的注释和文档 - 测试您的更改 - 更新相关文档 ## 📄 开源协议 本项目基于 MIT 协议开源 - 查看 [LICENSE](LICENSE) 文件了解详细信息。 ## 🙏 致谢 - [Let's Encrypt](https://letsencrypt.org/) - 提供免费的 SSL/TLS 证书服务 - [Certbot](https://certbot.eff.org/) - 优秀的 ACME 客户端工具 - [宝塔面板](https://www.bt.cn/) - 服务器管理平台 - [Nginx](https://nginx.org/) - 高性能 Web 服务器 - 所有贡献者和用户的反馈与支持 ---
**🔒 让 HTTPS 变得简单易用** *用 ❤️ 为网络安全社区制作* [![Gitee](https://img.shields.io/badge/Gitee-项目地址-red.svg)](https://gitee.com/tght1211/auto-ssl) [![Stars](https://img.shields.io/badge/⭐-点个星标-yellow.svg)](https://gitee.com/tght1211/auto-ssl)