
抛弃 freessl,用 acme.sh 自动为网站证书续期
我们都知道 freessl 可以免费的获得最长一年的 SSL 证书。但是这个网站的证书到期以后需要重新申请、更换。这个操作其实是有点烦的。
用 acme.sh 就可以解决这个问题
acme.sh 实现了 acme 协议,可以从 lets encrypt 生成免费的证书。
2023.09.23 补充:时间过得真快,acme.sh 已经更新了新的版本,安装和使用方法也都有点差别,务必阅读原汁原味的英文文档哦~
acme.sh
它在大多数的服务器系统上都可以使用。是一个很好用的证书签发脚本。
同时,他还能为你的证书自动续期。至于什么时候续、怎么续,都不需要你来关心,因为这一切都是自动的。
usage
安装
使用 root 用户或者有 root 权限的用户安装
curl https://get.acme.sh | sh
安装完成后,为程序设置别名
alias acme.sh=~/.acme.sh/acme.sh
以后就可以直接使用 acme.sh
作为这个程序的别名来使用了(相当于快捷方式)。
用 DNS 签发和续期
acme.sh 支持大多数的 dns,国内的阿里云、DNSPOD 等均已得到支持。以 DNSPOD 为例,
生成 apiKey 和 ID
登录自己的 DNSPOD,点击右上角的头像弹出菜单,选择“密钥管理”。添加一个密钥,把生成的密钥记录下来。这个密钥只会显示一次,所以要自己保存。
配置环境变量
直接在 CLI 执行下面两条命令,把引号中的内容换成你自己的 id 和 token
export DP_Id="341235"
export DP_Key="1aa994c91fc86b7f4c86cb66fba30416"
签发证书
使用 dns_dp
参数配置为自动模式,将以下两个域名(主域名和泛域名)配置签发证书。
acme.sh --issue --dns dns_dp -d mitkimi.com -d *.mitkimi.com
配置证书
如果你跟我一样使用了 nginx,那么就可以在 server 里配置,参考吃瓜:网站或者服务应该怎么部署? 的最后几段。
acme.sh 会把证书签发到 /root/.acme.sh/你的域名
目录下。例如 /root/.acme.sh/mitkimi.com
证书签发后,就要安装到网站配置中了
在你的 nginx 目录下新建一个 certs 目录,进入此目录,再新建一个你的网站域名的文件夹(我觉得这样比较优雅)
cd /etc/nginx
mkdir certs
cd certs
mkdir mitkimi.com
暂定在 /etc/nginx/certs/mitkimi.com
目录下存放你的证书。那么在 nginx 中配置证书时就要指向这里。
然后回到 acme.sh 的目录(如果你有别名,就不必了)
然后安装证书
acme.sh --install-cert -d mitkimi.com --cert-file /etc/nginx/certs/mitkimi.com/cert --key-file /etc/nginx/certs/mitkimi.com/key --fullchain-file /etc/nginx/certs/mitkimi.com/fullchain --reloadcmd "service nginx reload"
这段命令制定了域名和拷贝文件目标,最后还有 reload nginx 的命令
acme.sh 还支持使用 nginx 等其他形式去配置。但我觉得用 dns 是最简单的,只要第一次配置过,以后的新配置全程一行命令,无需手动干预,是一个优雅的配置方式。