acme.sh获取Let's Encrypt通配符证书
一. 简介
Let's Encrypt跳票1个月零2周后,终于发布通配符证书啦。
不过试着用certbot获取证书,怎么也不行,看了文档好像目前还不支持的感觉。
论坛里有人推荐使用acme.sh,看了它github上的简介,纯shell脚本,三分钟就可以上手。用了下发现真的很简单,以后就用它了。
二. 安装
// 安装
curl https://get.acme.sh | sh
这样就安装成功了,安装的目录是/root/.acme.sh。
三. 申请证书
acme提供了DNS API来申请通配符证书,介绍页面如下
https://github.com/Neilpang/acme.sh/tree/master/dnsapi
我用的是cloudflare,所以执行的命令是
export CF_Email="xxx@qq.com"
export CF_Key="xxx"
acme.sh --issue --dns dns_cf -d *.wangbin.io -d wangbin.io
上面xxx是cloudflare的账号和api key,到cloudflare管理页面找找就可以找到。
这个命令会保存cloudflare的信息,而且会将renew命令添加到crond中,每天执行,也就可以自动renew啦。
DNS API现在基本上支持所有主流的DNS服务商,包括阿里、CloudFlare、DNSPod、CloudXNS、GoDaddy、Namesilo...
四. ecc证书
acme支持申请更安全的ecc证书,只需要在上面的命令后面加上"--ecc",具体命令如下
export CF_Email="xxx@qq.com"
export CF_Key="xxx"
acme.sh --issue --dns dns_cf -d *.wangbin.io -d wangbin.io --ecc
五. nginx配置
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name wangbin.io;
server_name www.wangbin.io;
# ssl
ssl_certificate /root/.acme.sh/*.wangbin.io/fullchain.cer;
ssl_certificate_key /root/.acme.sh/*.wangbin.io/*.wangbin.io.key;
# ecc
ssl_certificate /root/.acme.sh/*.wangbin.io_ecc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/*.wangbin.io_ecc/*.wangbin.io.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
}
}
六. 其他命令
renew证书
/root/.acme.sh/acme.sh --renew -d *.wangbin.io
/root/.acme.sh/acme.sh --renew -d *.wangbin.io --ecc
移除crontab定时renew任务
/root/.acme.sh/acme.sh --uninstall-cronjob
升级acme
/root/.acme.sh/acme.sh --upgrade
如果不需要证书了,想要删除的话,执行
/root/.acme.sh/acme.sh --remove -d *.wangbin.io
/root/.acme.sh/acme.sh --remove -d *.wangbin.io --ecc
然后手动删除之前申请的证书目录就可以啦
rm -rf /root/.acme.sh/*.wangbin.io
rm -rf /root/.acme.sh/*.wangbin.io_ecc
七. 总结
参考: