acme.sh 免费申请 HTTPS 证书
服务器环境:Ubuntu 16.04 + Nginx
安装 acme.sh
因为自动需要续期需要重启 nginx,建议使用 root 用户安装
1 | curl https://get.acme.sh | sh |
然后再重载一下 .bashrc
1 | source ~/.bashrc |
申请证书
可以使用两种方式验证:HTTP 和 DNS 验证,我使用的是后者。下面主要介绍 DNS 验证。
acme.sh 目前支持 cloudflare、dnspod、cloudxns、godaddy 以及 ovh 等数十种解析商的自动集成。
这里我使用的是 DNSPod,登录 DNSPod,在 安全设置 里面新建一个 API TOKEN。
创建好了然后:
1 | export DP_Id="ID" |
为了等待 TXT 记录生效,可能要等待 120 秒左右。
生成好了之后,ID 和 Token 会自动保存,下次再使用 DNSPod 的时候就不用指定,直接生成就好了。
安装证书
我打算把证书保存在 /etc/nginx/ssl/<domain>
目录下,所以先创建该目录。
1 | mkdir -p /etc/nginx/ssl/sxzz.moe/ #直接创建多级目录 |
执行完这些命令后,证书会自动拷贝到指定的位置,并且以后自动更新证书(60 天)就会自动按照这些参数运行。
官方提示:这里用的是
service nginx force-reload
,不是service nginx reload
,据测试,reload
并不会重新加载证书,所以用的force-reload
。
配置 Nginx
这里我使用的是 Nginx 作为 Web 服务器,下面是我的配置,仅供参考。
1 | server { |
重启一下 Nginx,大功告成!
自动更新 acme.sh(引用自官方 Wiki)
目前由于 acme 协议和 Let’s Encrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步。
升级 acme.sh 到最新版:
1 | acme.sh --upgrade |
如果你不想手动升级,可以开启自动升级:
1 | acme.sh --upgrade --auto-upgrade |
之后,acme.sh 就会自动保持更新了。
你也可以随时关闭自动更新:
1 | acme.sh --upgrade --auto-upgrade 0 |