Let's Encrypt 是一个开源的证书颁发机构,由 Internet Security Research Group (ISRG) 运营。它提供免费的 SSL/TLS 证书,并通过自动化工具 Certbot 简化了证书的获取和更新过程。
Certbot 申请域名证书
要使用 Certbot 申请域名证书,你可以按照以下步骤操作:
- 安装 Certbot:首先,确保你已经安装了 Certbot。你可以通过包管理器安装 Certbot,具体安装命令取决于你使用的操作系统。例如,在 Ubuntu 上,你可以使用以下命令安装:
sudo apt-get update
sudo apt-get install certbot
2. 运行 Certbot:安装完成后,运行 Certbot 命令来开始申请证书。你需要使用 certonly 选项来只获取证书而不安装它们。在命令中指定你想要申请证书的域名。例如:
sudo certbot certonly --standalone -d yourdomain.com
在这个命令中,-d 选项用于指定域名,--standalone 选项告诉 Certbot 使用独立模式来验证域名所有权。
若在此过程中,出现“cannot import name 'appengine' from 'urllib3.contrib'”错误,则执行以下指令
pip install --upgrade twine requests-toolbelt
3. Certbot证书路径:
安装完成后,日志会显示证书位置,我的是这个路径
root@app1:/etc/letsencrypt/live/yourdomain.com# ls
cert.pem chain.pem fullchain.pem privkey.pem README
在 Let’s Encrypt证书的文件夹中,
cert.pem:证书文件,包含了服务器的公钥以及相关信息,被用来证明服务器身份。privkey.pem:私钥文件,只有服务器拥有,并且用于加密通信和验证服务器身份。
你可以将 cert.pem 文件用于配置服务器以使用 Let’s Encrypt 证书,而 privkey.pem 文件则必须在服务器中保持私密,并且不应该分享或公开。
注意:若外部请求出现X509错误,则对应配置的公钥证书可改为fullchain.pem。,错误信息如下:tls: failed to verify certificate: x509: certificate signed by unknown authority
- Certbot续约证书:
以下是使用 Certbot 续约 Let’s Encrypt 证书的示例命令:通常,续约命令会自动检测证书的到期日期,并在接近到期时执行续约操作。
sudo certbot renew
或者,如果你想手动执行续约而不等待证书到期:
sudo certbot renew --force-renewal
要设置定期执行 certbot renew 命令以续约证书,你可以使用 crontab 来创建一个定时任务。以下是如何在 crontab 中设置每 3 个月执行一次 certbot renew 的步骤:
配置 crontab 自动续约证书
- 编辑 crontab 文件:运行以下命令来编辑当前用户的 crontab 文件:
crontab -e
如果是第一次编辑 crontab,系统可能会要求你选择编辑器,选择你喜欢的编辑器即可。
- 添加定时任务:在 crontab 文件中添加以下行来设置每 3 个月执行一次
certbot renew命令:
0 0 1 */3 * /usr/bin/certbot renew
这个定时任务表示在每个月的第一天凌晨 00:00(即午夜)执行 certbot renew 命令,并且只有当月份是 3 的倍数时才会执行,即每 3 个月执行一次。
- 保存并退出:在编辑器中保存 crontab 文件并退出。
- 验证定时任务:添加完定时任务后,crontab 会自动加载该任务。你可以通过以下命令来查看当前用户的 crontab 配置:
crontab -l
你应该会看到刚刚添加的定时任务。确认没有错误后,定时任务就会自动生效。
这样就设置好了定期执行 certbot renew 命令以续约证书的任务。定时任务会在每个季度的第一天执行,确保你的证书得到及时续约。