Linux下Certbot使用教程

简介

Certbot 是一个命令行工具,用于自动执行从 Let's Encrypt 获取和更新SSL/TLS 证书的过程。它通过管理证书、配置 Web 服务器并自动更新证书来简化网站安全保护。

安装

  • 在 Ubuntu/Debian 上
shell 复制代码
sudo apt update
sudo apt install certbot python3-certbot-nginx  # For Nginx
sudo apt install certbot python3-certbot-apache  # For Apache
  • 在 CentOS/RHEL 上
shell 复制代码
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx  # For Nginx
sudo yum install certbot python3-certbot-apache  # For Apache

常用选项

  • --nginx:获取并配置 Nginx 的证书。

  • --apache:获取并配置 Apache 的证书

  • certonly:仅获取证书,不执行安装

  • renew:更新所有已安装的证书

  • delete:删除证书

  • revoke --cert-path <path>:吊销证书

证书文件说明

证书文件位置在:/etc/letsencrypt/live/<domain>/

  • fullchain.pem:完整的证书链

  • privkey.pem:私钥文件

  • cert.pem:域名证书

  • chain.pem:证书颁发机构链

示例用法

使用 Nginx 自动获取并安装证书
shell 复制代码
sudo certbot --nginx

# 根据提示输入以下信息
# 输入邮箱用于过期提醒
# 同意服务条款
# 选择nginx配置的域名
使用 Apache 自动获取并安装证书
shell 复制代码
sudo certbot --apache

# 与nginx类似
使用独立模式生成证书

一般用于没有 Web 服务在运行

shell 复制代码
# 先停止 `nginx`
sudo systemctl stop nginx

# 运行certbot
sudo certbot certonly --standalone -d example.com -d www.example.com

# 启动nginx
sudo systemctl start nginx
通过写入已运行的 Web 服务器的 Webroot 目录来获取证书。
shell 复制代码
certbot certonly --webroot -w /var/www/example -d www.example.com
测试证书更新过程
shell 复制代码
sudo certbot renew --dry-run
手动更新证书
shell 复制代码
sudo certbot renew
使用通配符证书
shell 复制代码
sudo certbot certonly --manual --preferred-challenges=dns -d "*.example.com" -d example.com

# Certbot 将提示需要添加 DNS TXT 记录以进行域验证
Nginx 配置 https 证书
nginx 复制代码
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
}
Apache 配置 https 证书
xml 复制代码
<VirtualHost *:443>
    ServerName example.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
强制更新证书
shell 复制代码
sudo certbot renew --force-renewal
重新颁发证书
shell 复制代码
sudo certbot certonly --nginx -d example.com -d www.example.com
删除一个证书
shell 复制代码
sudo certbot delete

# 会提示选择已配置证书的域名
Which certificate would you like to delete?
  1: example.com
  2: test.com
吊销证书
shell 复制代码
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/fullchain.pem
默认的证书更新脚本

通常 Certbot 会设置 /etc/cron.d/certbot 计划任务,默认是每天两次自动续订距离到期日期还有三十天的证书,并且 systemd 会配置一个 certbot.timer 的服务来执行。

shell 复制代码
● certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset:>
     Active: active (waiting) since Mon 2022-04-11 20:52:46 UTC; 4min 3s ago
    Trigger: Tue 2022-04-12 00:56:55 UTC; 4h 0min left
   Triggers: ● certbot.service

Apr 11 20:52:46 jammy-encrypt systemd[1]: Started Run certbot twice daily.
手动添加计划任务更新证书
shell 复制代码
0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

0 3 * * * certbot renew --quiet && systemctl reload nginx
相关推荐
Z21-X6 分钟前
云原生运维学习笔记:容器技术的演进、底层原理与 Docker 全生命周期管理
运维·笔记·学习·云原生
Rabitebla8 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
Decay__8 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
天远API13 小时前
零信任架构实战:基于天远运营商三要素详版V即时版构建自动化消费电子大促电商平台高价值权益秒杀与优惠券防羊毛高并发实名核验网关
运维·人工智能·架构·自动化
Android系统攻城狮13 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
程序员初一13 小时前
8080 打不开的四层定位:监听地址、ufw、DOCKER 链、安全组
linux·ssh
程序开发阿元13 小时前
swappiness 60 和 10 差在哪:一台 1C1G 的三轮对比
linux·ssh
无足鸟ICT14 小时前
【RHCA+】mpstat命令(监控CPU)
linux
乐维_lwops14 小时前
案例解读:大型综合性科创产业园运维监控落地实践
运维·网络·人工智能·安全·it监控·国产运维智能体
GeW15 小时前
新质生产力Linux和数据库为啥这么关键
linux