Skip to content

使用 certbot 申请通配符域名证书

参考资料

申请证书

首先我们需要生成一个私钥文件和一个 CSR 文件。

私钥文件要保密,不要传输到其他地方。CSR 文件是用来向证书颁发机构申请证书的。

sh
# 生成私钥,如果已经有了私钥,那这一步可以忽略,除非你决定要使用新的加密算法
openssl ecparam -genkey -name secp384r1 | openssl ec -out ecc-privkey.pem

# 生成 csr 文件,需要上一步的私钥文件,里面记录了要申请的域名,如果已经有了 csr 文件,那么续订证书不需要重新生成,除非你要修改域名等信息
openssl req -new -key ecc-privkey.pem -subj "/CN=*.example.com/" -addext "subjectAltName = DNS:example.com,DNS:*.example.com" -outform pem -out ecc-csr.pem

接下来就是把 CSR 提交到证书颁发机构,通过 DNS 验证域名的所有权。

sh
# 申请、续订证书。一般证书过期了就执行下面这行代码即可,不需要重新生成私钥和 CSR。
# 途中,程序会需要你去修改 DNS TXT RECORD,这时去域名托管商那里设置好即可

# 先删除旧文件,这一步很重要,如果旧文件存在,certbot 会认为证书已经存在,申请会失败
* ecc-cert.pem
* ecc-fullchain.pem

certbot certonly \
--cert-path ecc-cert.pem \
--fullchain-path ecc-fullchain.pem \
--manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --csr ecc-csr.pem

成功后会得到 ecc-cert.pem 和 ecc-fullchain.pem 两个文件,这两个文件就是证书和完整证书链。配合私钥文件 ecc-privkey.pem,就可以部署到服务器上了。

Last updated: