Linux下配置HTTPS:Let's Encrypt + Certbot

361 阅读2分钟

微信图片_20230808094553.png在Linux环境下配置HTTPS协议,使用Let's Encrypt与Certbot组合已成为主流方案,既能实现免费证书管理,又能通过自动化工具简化运维流程。

前期准备****

部署前需满足以下条件:

1. 拥有已备案的域名,并完成DNS解析至服务器IP

2. 服务器已安装Nginx或Apache(以Ubuntu 22.04为例)

3. 开放80端口(用于验证)和443端口(HTTPS服务)

安装Certbot****

根据Web服务器类型选择安装方式:

bash

 # Nginx用户
 sudo apt update
 sudo apt install certbot python3-certbot-nginx
  
 # Apache用户
 sudo apt install certbot python3-certbot-apache

对于CentOS/RHEL系统,需先启用EPEL仓库:

bash

 sudo yum install epel-release
 sudo yum install certbot python3-certbot-nginx

证书申请与配置****

单域名证书****

执行以下命令自动申请并配置证书:

bash

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

或分步操作:

bash

 # 仅申请证书
 sudo certbot certonly --nginx -d example.com
  
 # 手动配置Nginx
 sudo nano /etc/nginx/sites-available/example.com

在配置文件中添加:

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;
 # 其他配置...
 }

泛域名证书****

需使用DNS验证方式:

bash

 sudo certbot certonly --manual --preferred-challenges dns \
 -d "*.example.com" -d example.com

根据提示在DNS服务商处添加_acme-challenge TXT记录,验证通过后证书将自动生成。

证书自动续期****

Let's Encrypt证书有效期为90天,需配置自动续期:

bash

 # 测试续期流程
 sudo certbot renew --dry-run
  
 # 添加cron任务(每天凌晨3点执行)
 (crontab -l 2>/dev/null; echo "0 3 * * * /usr/bin/certbot renew --quiet")crontab -

对于Nginx用户,可添加续期后重启服务命令:

bash

 0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

验证配置****

访问example.com,浏览器地址栏应显示绿色锁形图标。使用以下命令检查Nginx配置:

bash

 sudo nginx -t
 sudo systemctl restart nginx

高级配置建议****

1. 强制HTTPS跳转

nginx

 server {
 listen 80;
 server_name example.com;
 return 301 https://hosthostrequest_uri;
 }

1. OCSP Stapling

nginx

 ssl_stapling on;
 ssl_stapling_verify on;
 resolver 8.8.8.8 8.8.4.4 valid=300s;
 resolver_timeout 5s;

1. 证书吊销

bash

 sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/fullchain.pem

通过该方案,可实现从证书申请到自动续期的全流程自动化管理,有效降低HTTPS部署成本与运维复杂度。