2018-03-14 Let’s Encrypt 发布了 v02 的接口。可以签发泛域名证书了。
我们使用 acme.sh
这个工具来签发。由于目前泛域名证书只能通过DNS来验证域名所有权。所以需要我们有对应域名的DNS记录的修改权限。
安装 acme.sh
的过程其官网写的很详细,略过不表。
申请证书
建议使用 dns-api 的方式进行验证。以 hxsf.me 为例:
acme.sh --issue --dns <dns_api> -d hxsf.me -d '*.hxsf.me' -d '*.static.hxsf.me'
-d hxsf.me
保证包含主域名-d *.hxsf.me
二级泛域名-d *.static.hxsf.me
三级泛域名
部署证书
不建议直接在 webserver 中直接使用 acme.sh 的内部目录。原因有很多。
acme.sh
安装在$HOME/.acme.sh
下, 一般而言 webserver 会使用单独的用户和组。权限问题acme.sh
内部的文件结构可能会变化,尽量的解耦合,防止后期自动更新证书出问题。- 在
acme.sh
更新证书之后,需要让 webserver 重新读取新的证书。这就需要个钩子。
好在新版本的 acme.sh
已经考虑到了这个特效,增加了部署hook,虽然目前只是简单的使用了文件拷贝和执行自定义命令。以nginx为例,使用方式如下:
acme.sh --installcert -d hxsf.me --key-file /etc/nginx/ssl/wc.hxsf.me.key --fullchain-file /etc/nginx/ssl/wc.hxsf.me.crt --reloadcmd "nginx -s reload"
刷新下浏览器,网站已经挂上了小绿锁。