在 Linux 中使用 Certbot 配置 HTTPS
在现代网站开发中,启用 HTTPS 已成为保障数据传输安全的基本需求。Certbot 是一款免费且开源的工具,能够轻松地为网站申请和安装 SSL/TLS 证书,广泛支持 Let’s Encrypt 证书。本指南将详细介绍如何在 Linux 系统中使用 Certbot 配置 HTTPS。
环境准备
- 一台运行 Linux 系统的服务器(推荐 Ubuntu 或 CentOS)。
- 拥有管理员权限的账户。
- 已解析到服务器的域名。
- 已安装的 Web 服务器(如 Nginx 或 Apache)。
步骤 1:安装 Certbot 和 Nginx 插件
-
确保系统软件包已更新:
sudo apt update sudo apt upgrade -y
-
安装 Certbot 和 Nginx 插件:
sudo apt install certbot python3-certbot-nginx -y
步骤 2:确保 Nginx 正常运行
-
确保 Nginx 已启动并正常运行:
sudo systemctl status nginx
-
配置 Nginx 的域名服务器块。例如,编辑以下文件(根据实际路径调整):
sudo nano /etc/nginx/sites-available/default
添加或确认以下内容(替换
your_domain.com
为实际域名):server { listen 80; server_name your_domain.com www.your_domain.com; location / { root /var/www/html; index index.html index.htm; } }
-
测试并重载 Nginx 配置:
sudo nginx -t sudo systemctl reload nginx
步骤 3:使用 Certbot 获取 SSL 证书
运行以下命令自动为域名配置 HTTPS:
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
- 说明:
-d your_domain.com
和-d www.your_domain.com
是你想配置 HTTPS 的域名。- Certbot 会自动更新 Nginx 配置文件,添加 HTTPS 配置。
-
Certbot 会提示你输入一些信息并询问是否重定向 HTTP 到 HTTPS,选择
2
以强制 HTTPS:Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
步骤 4:验证 HTTPS 配置
-
打开浏览器,访问你的域名(如
https://your_domain.com
),确保 HTTPS 已生效。 -
使用以下命令检查证书有效性:
sudo certbot certificates
步骤 5:自动续期配置
-
Certbot 默认会在安装时创建一个自动续期任务。可以通过以下命令检查:
sudo systemctl list-timers | grep certbot
-
手动测试续期任务(确保不会有错误):
sudo certbot renew --dry-run
如果返回
Congratulations, all renewals succeeded!
,说明自动续期配置成功。
错误问题与解决方法
问题描述:
这个错误表明当前环境中的 requests_toolbelt
和 urllib3
版本之间存在不兼容的问题。urllib3
的更新移除了对 appengine
的支持,而 requests_toolbelt
的某些旧版本仍依赖于它,导致运行 Certbot 时发生 ImportError
。
解决方法:
-
更新
requests_toolbelt
和urllib3
。确保
requests_toolbelt
和urllib3
是最新版本。运行以下命令更新它们:
sudo pip install --upgrade requests_toolbelt urllib3
再次尝试:
sudo certbot --nginx