前些日子我突然发现自己的 bolg 被 DNS 污染,这时候我才知道 vercel 已经被墙了。这给了我一个教训:

永远不要把自己的域名指向某个提供公共部署服务的平台上。

幸好我还有一台VPS,可以进行代理。但是 vercel 使用的是 https —— 理所当然。我并没有去研究它是否可以退化成 http,这个想法本身就让人不安。所以,我需要解决证书问题。于是,certbot 走入我的视野。

certbot 是什么?

Certbot 是一个免费的开源软件工具,用于在手动管理的网站上自动使用"Let's Encrypt" 证书,以启用 HTTPS。

Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的传输层安全性协议(TLS)证书。

https://letsencrypt.org/

从我此次申请证书的体验来看,他们显然做到了。

安装

首先,根据不同的 serve 安装不同的包。以 nginx 为例:

sudo apt-get install python-certbot-nginx

使用

假设为 domain.com 申请证书

sudo certbot -d domain.com -d "*.domain.com"

跟着提示走即可。

注意这里同时申请了所有的子域。如果只申请 www.domain.com, 添加子域的时候就需要执行额外的命令。

sudo certbot --nginx -d subdomain.domain.com --expand

这些指令会修改你的 nginx 配置,证书会生成到 /etc/letsencrypt/live/domain.com/ 目录下

定时更新

Certbot 证书的有效期为90天, 需要定时续期。新版本会帮你设置。

查看定时器:sudo systemctl status certbot.timer

参考:

Certbot 介绍

Certbot 安装和使用

使用Certbot给域名加上ssl证书

如何验证Certbot对免费Let's Encrypt证书的续期是否会成功