Certbot是Let's Encrypt官方指定的证书申请工具之一,这里我们介绍下如何使用Certbot申请Let's Encrypt的免费HTTPS证书
一、什么是Certbot
Certbot 是一个由电子前哨基金会(EFF)开发的免费、开源软件工具,用于从Let's Encrypt等证书颁发机构获取和管理 SSL/TLS 证书。它旨在使网站所有者能够轻松地为其网站启用 HTTPS,提高互联网的安全性和隐私性。 Certbot 支持多种服务器软件,包括 Apache、Nginx、IIS 等,并提供了简单易用的命令行界面和自动配置选项。它可以自动完成证书申请、安装和更新等任务,减少了手动操作的复杂性和错误风险。
二、使用Certbot申请HTTPS证书
1.安装 Certbot
根据你的服务器操作系统和软件环境,选择合适的安装方法。Certbot提供了多种安装方式,包括官方的安装脚本、软件包管理器等。 例如,在 Ubuntu 系统上,可以使用以下命令安装Certbot:
sudo apt-get update
sudo apt-get install certbot
2.准备域名和服务器
确保你的域名已经正确解析到你的服务器 IP 地址。你可以通过域名注册商的管理界面或 DNS 服务提供商进行域名解析设置。 确认你的服务器上已经安装并配置了相应的 Web 服务器软件(如 Apache、Nginx 等),并且可以通过域名访问你的网站。
3.选择验证方式
Certbot支持多种验证方式来证明你对域名的所有权,以便从证书颁发机构获取证书。常见的验证方式包括:
- HTTP 验证:Certbot 会在你的服务器上创建一个临时的验证文件,并通过访问特定的 URL 来验证你对域名的所有权。这种方式通常适用于大多数 Web 服务器环境。
- DNS 验证:通过在域名的 DNS 记录中添加特定的 TXT 记录来验证域名所有权。这种方式适用于一些特殊的服务器环境或当 HTTP 验证不可行时。
4.运行Certbot命令申请证书
- HTTP 验证方式:
sudo certbot certonly --webroot -w /path/to/webroot -d example.com
--webroot 表示使用 HTTP 验证方式
-w /path/to/webroot 指定你的网站根目录路径,Certbot 会在这个目录下创建验证文件
-d example.com 指定要申请证书的域名,可以指定多个域名
DNS 验证方式(以 Cloudflare 为例): 安装相应插件,如使用 Cloudflare 的 DNS 服务,可以安装 certbot-dns-cloudflare插件:
sudo apt-get install certbot-dns-cloudflare
获取 DNS 服务的 API 凭证。以 Cloudflare 为例:
- 登录到 Cloudflare 账户。
- 在右上角点击用户名,选择 “My Profile”。
- 在左侧菜单中选择 “API Tokens”。
- 点击 “Create Token”。
- 选择 “Edit zone DNS” 权限,并选择要使用的域名范围。
- 给令牌取一个名称,然后点击 “Create Token”。
- 复制生成的 API 令牌,妥善保管,因为它只会显示一次。
运行Certbot命令:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /path/to/credentials.txt -d example.com
- --dns-cloudflare表示使用 Cloudflare 的 DNS 验证方式
- --dns-cloudflare-credentials /path/to/credentials.txt指定包含 Cloudflare API 凭证的文件路径,这个文件应该包含你的 Cloudflare API 令牌,一行一个
- -d example.com指定要申请证书的域名,可以指定多个域名
5.配置 Web 服务器使用证书
证书申请成功后,Certbot 会将证书文件和私钥文件保存在指定的目录中。你需要根据你的 Web 服务器软件进行相应的配置,以启用 HTTPS。 例如,对于 Nginx 服务器,可以在服务器配置文件中添加以下内容:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 其他服务器配置...
}
6.自动更新证书
Let's Encrypt 颁发的证书有效期通常为 90 天。Certbot 可以自动更新证书,以确保证书始终有效。 你可以设置一个 cron 任务来定期运行 Certbot 的更新命令。例如,在 Ubuntu 系统上,可以使用以下命令设置每两个月更新一次证书:
sudo crontab -e
在打开的编辑器中添加以下内容:
0 0 1 */2 * sudo certbot renew --quiet
这将在每个月的第一天的凌晨 0 点运行 Certbot 的更新命令。
通过以上步骤,你可以使用Certbot轻松地为你的网站申请和管理HTTPS证书,提高网站的安全性和用户信任度。同时,定期更新证书可以确保证书的有效性,保障网站的正常运行。