吴志勇的博客 吴志勇的博客
  • h5

    • HTML5&CSS3
  • scss

    • css预处理语言
  • JavaScript

    • JavaScript教程
    • Ajax
    • ES6教程
    • NodeJS
    • Typescript
  • 框架

    • Jquery
    • VUE
    • React
  • Swing专题
  • java基础
  • javaweb
  • 框架
  • 数据库
  • netty
  • 设计模式
  • 微服务及架构
  • 云原生
  • maven
  • 单元测试
工具
我的
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

吴志勇

......
  • h5

    • HTML5&CSS3
  • scss

    • css预处理语言
  • JavaScript

    • JavaScript教程
    • Ajax
    • ES6教程
    • NodeJS
    • Typescript
  • 框架

    • Jquery
    • VUE
    • React
  • Swing专题
  • java基础
  • javaweb
  • 框架
  • 数据库
  • netty
  • 设计模式
  • 微服务及架构
  • 云原生
  • maven
  • 单元测试
工具
我的
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 运维

    • linux&shell
    • Docker教程
    • git
    • Jenkins教程
    • 正则表达式
    • 一键打包到linux环境
    • vmvare安装虚拟机集群
    • kubesphere部署nacos
    • Vmware安装centos7后网络配置
    • Certbot与Nginx配置SSL证书及自动续签指南
      • 目录
      • 简介
      • 前提条件
      • 安装Certbot
        • Ubuntu/Debian系统
        • CentOS/RHEL系统
        • Windows系统
      • 获取SSL证书
        • 自动配置Nginx(推荐)
        • 仅获取证书(手动配置Nginx)
      • 配置Nginx
      • 自动续签设置
        • Linux系统
        • Windows系统
      • 故障排除
        • 常见问题
        • 验证SSL配置
      • 最佳实践
      • 使用Caddy配置SSL证书
        • 安装Caddy
        • Ubuntu/Debian系统
        • CentOS/RHEL系统
        • Windows系统
        • 自动HTTPS配置
        • 手动SSL证书配置
        • 高级TLS配置
        • 启动Caddy服务
        • Caddy vs Nginx+Certbot的优势
      • Lucky
        • 主要特性
        • 部署说明
        • 使用建议
  • VSCode的使用
  • idea热部署
  • vscode+github图床
  • 旧笔记本安装pve+黑群晖
  • 使用阿里云容器镜像服务
  • nvm管理nodejs
  • ollma
  • 虚拟机挂载CentOS挂载本地目录
  • 老毛子Padavan安装应用
  • docker安装firecrawl并使用
  • Python使用UV指南
  • huggingface部署n8n
  • n8n使用飞书作为数据存储
  • frp内网穿透以及服务化
  • 工具
  • 运维
wuzhiyong
2025-05-15

Certbot与Nginx配置SSL证书及自动续签指南

# Certbot与Nginx配置SSL证书及自动续签指南

# 目录

  • 简介
  • 前提条件
  • 安装Certbot
  • 获取SSL证书
  • 配置Nginx
  • 自动续签设置
  • 故障排除
  • 最佳实践
  • 使用Caddy配置SSL证书
  • 了解Lucky

# 简介

Certbot是一个免费的开源软件工具,用于自动使用Let's Encrypt证书来启用HTTPS。本指南将帮助您使用Certbot为Nginx服务器配置SSL证书,并设置自动续签机制,确保您的网站始终保持安全连接。

# 前提条件

  • 一个已注册的域名
  • 一个运行Nginx的服务器
  • 服务器上的root或sudo权限
  • 域名已正确解析到您的服务器IP

# 安装Certbot

# Ubuntu/Debian系统

# 更新软件包列表
sudo apt update

# 安装Certbot和Nginx插件
sudo apt install certbot python3-certbot-nginx
1
2
3
4
5

# CentOS/RHEL系统

# 安装EPEL仓库
sudo yum install epel-release

# 安装Certbot和Nginx插件
sudo yum install certbot python3-certbot-nginx
1
2
3
4
5

# Windows系统

在Windows上,您可以使用以下方法安装Certbot:

  1. 安装Chocolatey (opens new window)包管理器
  2. 使用Chocolatey安装Certbot:
choco install certbot
1

# 获取SSL证书

# 自动配置Nginx(推荐)

Certbot可以自动修改Nginx配置以添加SSL设置:

sudo certbot --nginx -d example.com -d www.example.com
1

替换example.com和www.example.com为您的域名。

# 仅获取证书(手动配置Nginx)

如果您希望手动配置Nginx:

sudo certbot certonly --nginx -d example.com -d www.example.com
1

# 配置Nginx

如果您选择手动配置Nginx,请按照以下步骤操作:

  1. 编辑您的Nginx站点配置文件(通常位于/etc/nginx/sites-available/目录下)
sudo nano /etc/nginx/sites-available/example.com
1
  1. 添加或修改配置以包含SSL设置:
server {
    listen 80;
    server_name example.com www.example.com;
    
    # 将HTTP请求重定向到HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    
    # SSL证书路径
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
    # 推荐的SSL设置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    
    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    
    # 网站根目录
    root /var/www/example.com/html;
    index index.html index.htm index.nginx-debian.html;
    
    location / {
        try_files $uri $uri/ =404;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  1. 测试Nginx配置并重新加载:
sudo nginx -t
sudo systemctl reload nginx
1
2

# 自动续签设置

Let's Encrypt证书有效期为90天,需要定期续签。Certbot会自动安装一个定时任务来处理续签:

# Linux系统

检查自动续签任务是否已安装:

sudo systemctl list-timers | grep certbot
1

如果没有自动安装,您可以手动创建一个cron任务:

sudo crontab -e
1

添加以下行:

0 3 * * * certbot renew --quiet && systemctl reload nginx
1

这将在每天凌晨3点检查并续签证书,然后重新加载Nginx。

# Windows系统

在Windows上,您可以使用任务计划程序创建定期任务:

  1. 打开任务计划程序
  2. 创建基本任务
  3. 设置每天或每周运行
  4. 设置操作为运行程序:certbot renew --quiet

# 故障排除

# 常见问题

  1. 证书申请失败

    • 确保域名正确解析到服务器IP
    • 检查服务器防火墙是否允许80和443端口
    • 查看Certbot日志:/var/log/letsencrypt/
  2. Nginx配置错误

    • 使用sudo nginx -t检查配置语法
    • 检查证书路径是否正确
  3. 证书续签失败

    • 手动测试续签过程:sudo certbot renew --dry-run
    • 检查cron任务或计划任务是否正确设置

# 验证SSL配置

您可以使用在线工具如SSL Labs (opens new window)测试您的SSL配置安全性。

# 最佳实践

  1. 定期监控证书状态

    • 设置证书过期提醒
    • 使用监控工具检查HTTPS状态
  2. 安全增强

    • 配置HTTP严格传输安全(HSTS)
    • 考虑使用Content Security Policy(CSP)
  3. 备份证书

    • 备份/etc/letsencrypt目录
    • 记录证书续签流程

本指南提供了使用Certbot和Nginx配置SSL证书的基本步骤。根据您的具体环境和需求,可能需要进行额外的配置调整。请确保遵循最新的安全最佳实践,保持您的服务器和证书更新。

# 使用Caddy配置SSL证书

Caddy是一个现代化的Web服务器,它内置了自动HTTPS功能,可以自动申请、配置和续签SSL证书。相比Nginx+Certbot的组合,Caddy提供了更简单的配置方式。

# 安装Caddy

# Ubuntu/Debian系统

# 安装依赖
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

# 添加Caddy官方源
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

# 更新包列表并安装Caddy
sudo apt update
sudo apt install caddy
1
2
3
4
5
6
7
8
9
10

# CentOS/RHEL系统

yum install yum-plugin-copr
yum copr enable @caddy/caddy
yum install caddy
1
2
3

# Windows系统

在Windows上,您可以使用以下方法安装Caddy:

  1. 使用Chocolatey (opens new window)包管理器安装:
choco install caddy
1
  1. 或者从Caddy官网 (opens new window)下载可执行文件。

# 自动HTTPS配置

Caddy的一大特点是默认启用自动HTTPS。只需要简单的配置文件就可以启用HTTPS:

  1. 创建或编辑Caddyfile:
example.com {
    root * /var/www/example.com
    file_server
}
1
2
3
4

这个最小配置就足够了!Caddy会自动:

  • 申请Let's Encrypt证书
  • 配置SSL/TLS设置
  • 处理证书续签
  • 配置HTTP到HTTPS的重定向

# 手动SSL证书配置

如果您需要使用自己的SSL证书,可以这样配置:

example.com {
    tls /path/to/cert.pem /path/to/key.pem
    root * /var/www/example.com
    file_server
}
1
2
3
4
5

# 高级TLS配置

example.com {
    tls {
        protocols tls1.2 tls1.3
        ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
        curves x25519 secp521r1 secp384r1 secp256r1
        alpn h2 http/1.1
    }
    root * /var/www/example.com
    file_server
}
1
2
3
4
5
6
7
8
9
10

# 启动Caddy服务

# Linux系统(systemd)
sudo systemctl start caddy
sudo systemctl enable caddy

# Windows系统(PowerShell管理员模式)
Start-Service -Name caddy
Set-Service -Name caddy -StartupType Automatic
1
2
3
4
5
6
7

# Caddy vs Nginx+Certbot的优势

  1. 简化的SSL配置

    • 自动HTTPS,无需额外的证书管理工具
    • 自动处理证书续签,无需cron任务
    • 更简洁的配置语法
  2. 现代化特性

    • 默认启用HTTP/2和HTTP/3
    • 自动OCSP Stapling
    • 智能TLS证书管理
  3. 安全性

    • 默认启用安全的TLS配置
    • 自动处理HTTPS重定向
    • 内置安全头部
  4. 性能优化

    • 自动压缩
    • 智能静态文件服务
    • 高效的反向代理

# Lucky

Lucky是一个专为软硬路由设计的网络工具套件,主要运行在软路由系统上。以下是Lucky的主要特性和功能:https://github.com/gdy666/lucky (opens new window)

# 主要特性

  1. 网络代理功能

    • IPv6/IPv4端口转发
    • 反向代理服务
    • STUN内网穿透
  2. 网络管理工具

    • DDNS动态域名解析
    • WOL网络唤醒
    • 定时任务(cron)支持
  3. SSL证书管理

    • 集成ACME协议
    • 自动申请和续签SSL证书
  4. 文件服务功能

    • 阿里云盘集成
    • FTP服务
    • WebDAV支持
    • File Browser文件管理

# 部署说明

  • 支持一键安装部署
  • 提供Docker容器化部署方案
  • 支持OpenWrt IPK包安装

# 使用建议

对于初学者来说,建议将Lucky部署在主路由设备上以获得最佳的网络穿透效果https://lucky666.cn/docs/modules/stun/ (opens new window)。虽然Lucky提供了丰富的功能集,但每个模块的专业度相对较为基础,适合个人或小型网络环境使用https://post.smzdm.com/p/a3x63wrr/ (opens new window)

上次更新: 2025-05-15 08:55:49

← Vmware安装centos7后网络配置 VSCode的使用→

Copyright © 2020-2025 wuzhiyong
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式