Let's Encrypt 免费的通配符域名证书
免费 SSL 证书提供商 Let's Encrypt 去年承诺的 ACME v2 以及通配符证书(Wildcard Certificate)终于在 3 月 14 日正式发布了。ACME 全称“自动化证书管理环境”,用于自动验证域名所有权并颁发 SSL 证书;本次发布的新版 ACME v2 添加了通配符证书的支持,再也不用每次添加子域名都重新申请证书。
ACME v2 目前只有一种方案支持通配符证书的验证—— DNS-01 challenge,即:通过向域名添加一条 TXT 记录来证明用户对域名的所有权。一般只要提供了 Token 访问的 DNS 服务商都可以支持,例如 GoDaddy、CloudFlare、DNSPod 等。
截至目前为止,官方推荐的 ACME 客户端 Certbot 还没有支持 ACME v2,这里推荐另一个小巧的客户端 acme.sh,它完全用 shell 脚本构成,快速安装方法如下:
1 | curl https://get.acme.sh | sh |
为了使用 DNS-01 challenge,先在 DNS 服务商那里启用 Token 访问。这里以 DNSPod 为例,其它服务商参见完整支持列表。
然后运行:
1 | export DP_Id="49644" |
如果一切顺利,可以看到证书已经生成了。如果要安装到 nginx 中,还需要转换成 PEM 格式:
1 | acme.sh --install-cert -d example.com -d *.example.com \ |
最后把 nginx 配置从 HTTP 修改成 HTTPS:
1 | server { |
重启 nginx,大功告成。