Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构(CA),我们可使用 Certbot 官方工具从其申请免费 HTTPS 证书。为了不污染主机环境,我们可使用 Docker Certbot 证书申请方案。

申请证书

执行以下命令,即可创建一个 certbot 容器来申请 HTTPS 证书。具体使用时,请替换命令中的 *.jiahonzheng.com

docker run -it --rm \
    --name certbot \
    -v "/etc/letsencrypt:/etc/letsencrypt" \
    -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
    certbot/certbot certonly \
    --preferred-challenges dns \
    --manual \
    -d *.jiahonzheng.com

申请证书时,Certbot 需验证 _acme-challenge.${domain} 域名的 TXT 记录。进行域名解析的配置后,由于缓存的原因,TXT 记录无法立马生效,可通过以下命令查询记录是否生效。

nslookup -type=txt _acme-challenge.jiahonzheng.com

部署证书

HTTPS 证书以 PEM 文件存储,具体存储在 /etc/letsencrypt/${domain} 目录中,其中公钥文件名为 fullchain.pem ,私钥文件名为 privkey.pem 。由于文件权限的原因,在查看证书内容时,需使用 sudo 命令。

# 查看公钥内容
sudo cat /etc/letsencrypt/live/jiahonzheng.com/fullchain.pem

# 查看私钥内容
sudo cat /etc/letsencrypt/live/jiahonzheng.com/privkey.pem