使用 acme.sh 申请免费 SSL 证书
条评论阿里云、腾讯云的免费 SSL 证书相继从1年缩短3个月,意味着每三个月就得自己手动去云服务厂商那里申请一次新的 SSL 证书,那就麻烦了。
幸好遇见了 acme.sh,它可以把这一过程自动化,只要一次性配置好,后续就不用再操心 SSL 证书过期的事情了。
以 Ubuntu 系统的云服务器为例,记录一下操作过程。
1、安装 acme.sh
1.1、官方安装方式
acme.sh 官方地址:https://github.com/acmesh-official/acme.sh
以 root 账号 SSH 登录到服务器,切换到 /root
目录,执行安装(记得替换邮箱地址):
1 | cd /root |
1.2、手动安装
如果执行很慢,也可以换个方式,直接拉取 Github 仓库代码:
1 | cd /root |
这里为啥把仓库重命名为 .acme.sh
呢,就是为了上面那种安装方式保持一致嘛。
因为是手动安装,所以为了 acme.sh
命令能够全局执行,还需要在 /root/.bashrc
的最后添加一行:
1 | . "/root/.acme.sh/acme.sh.env" |
再执行 source .bashrc
重载环境变量。
现在就可以测试 acme.sh
命令是否可用:
1 | acme.sh --version |
手动安装的话,还需要执行命令安装一下定时任务(否则acme.sh无法自动给 SSL 证书续期):
1 | acme.sh --install-cronjob |
至此安装完毕。
2、阿里云 RAM API key
我的域名在阿里云,在 acme.sh 申请 SSL 证书时,验证域名所有权,需要阿里云授权。
为了更安全,可以用阿里云的 RAM API key,具体设置参考:https://ram.console.aliyun.com/users。
阿里云账号里设置好后,会拿到一个 key 和 secret。
我们接着在服务器上执行:
1 | export Ali_Key="<key>" |
后续 acme.sh 会读取这两个环境变量。
3、生成证书
1 | ./acme.sh --issue --dns dns_ali -d www.guozhenyi.com |
耐心等待,acme.sh 会自动验证域名和申请 SSL 证书,全程旁观就好。
执行完,提示成功的话,就说明有效期3个月的 SSL 证书已经申请好了。
4、部署证书
接着,把 SSL 证书放到指定位置。我这里是在 /etc/nginx
建了个 cert
目录,用来存放证书。
1 | mkdir -p /etc/nginx/cert |
执行以下命令部署证书:
1 | acme.sh --install-cert -d www.guozhenyi.com \ |
走到这一步,就代表使用 acme.sh
的所有流程已经完毕,后续在 SSL 证书过期之前,acme.sh
可以自动为我们“续期”(重新申请新的证书)。
5、Nginx 设置
贴一下我的 SSL 设置:
1 | server { |
6、总结
整个过程还是比较顺利的,操作步骤也不多。终于不用担心 SSL 证书过期啦。
参考:
https://github.com/acmesh-official/acme.sh/wiki
https://github.com/acmesh-official/acme.sh/wiki/说明
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
End–
本文标题:使用 acme.sh 申请免费 SSL 证书
文章作者:郭大侠
发布时间:2024-05-11
最后更新:2025-04-03
原始链接:https://www.guozhenyi.com/post/2024/05/11/acme-sh-apply-free-ssl-certificate.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!