免费通配符域名证书申请

前置说明

申请证书时需要证明域名是属于你的,有2种方式验证。

  1. HTTP方式:自己部署HTTP服务,监听80端口,并根据证书机构的提示在指定URI位置下提供一个包含指定内容的文件。
  2. DNS方式: 在域名供应商/DNS解析服务添加一个TXT类型DNS解析记录,将指定子域名解析到指定字符串。有些供应商会提供DNS插件,自动调用DNS服务器API,从而自动验证,没有的话需要手动配置解析。

通配符域名只支持DNS方式申请证书。

推荐全部用DNS方式,除非你需要IP证书。

certbot工具申请证书

certbot不支持IP证书。
docker镜像:certbot/certbot:v2.6.0, certbot/certbot:latest,需要配置dockerhub镜像源。
推荐使用DNS方式申请证书,部分DNS服务商支持自动验证,从而可以定时执行renew来自动更新证书。

单域名证书

1
2
3
4
docker run -it --rm --name certbot \
-v "/etc/letsencrypt:/etc/letsencrypt" \
-v "./cert/letsencrypt:/var/lib/letsencrypt" \
certbot/certbot:latest certonly --manual --preferred-challenges dns -d www.cr-test.top
  • --manual 手动申请证书,配置该选项生成的证书不支持通过certbot自动更新,过期后需再次执行上面命令重新生成。
  • preferred-challenges dns 指定验证方式为DNS验证。不带该选项则使用HTTP验证。
  • -d 指定域名。

通配符证书

通配符域名只能通过DNS方式申请。

  1. 执行下面命令
    1
    2
    3
    4
    docker run -it --rm --name certbot \
    -v "/etc/letsencrypt:/etc/letsencrypt" \
    -v "./cert/letsencrypt:/var/lib/letsencrypt" \
    certbot/certbot:v2.6.0 certonly --preferred-challenges dns --manual -d *.cr-test.top --server https://acme-v02.api.letsencrypt.org/directory
  2. 根据提示,配置TXT域名解析记录
  3. 根据提示,查询DNS解析是否生效,https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.cr-test.top.
  4. 按回车生成证书。

参考:
https://www.jianshu.com/p/1eb7060c5ede
https://sspai.com/post/66008
https://leohsiao.com/Web/Web%E6%9C%8D%E5%8A%A1%E5%99%A8/Nginx/%E7%9B%B8%E5%85%B3%E5%91%BD%E4%BB%A4.html