acme.sh生成自动续费的免费SSL证书
acme.sh 实现了 acme 协议,可以从 letsencrypt 生成免费的证书。
一个完全用Shell(Unix shell)语言编写的ACME协议客户端,支持ACME v1和ACME v2,只需一个脚本即可生成发布,续订和自动安装SSL证书。
安装acme.sh
1 | curl https://get.acme.sh | sh |
把 acme.sh 安装到你的 home 目录下:
1 | ~/.acme.sh/ |
创建 一个 bash 的 alias
1 | alias acme.sh=~/.acme.sh/acme.sh |
执行完毕后,将自动为你生成 crontab 任务,每天 0:00 点自动检测所有的证书, 如果快过期了,需要更新,则会自动更新证书。
生成证书
acme.sh 实现了 acme 协议支持的所有验证协议。一般有两种方式验证: http 和 dns 验证,这里我们以 http 为例。
http 方式需要在你的网站根目录下放置一个文件,来验证你的域名所有权,完成验证,然后就可以生成证书了。
1 | acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/ |
只需要指定域名,并指定域名所在的网站根目录,acme.sh 会全自动的生成验证文件,并放到网站的根目录,然后自动完成验证,最后会聪明的删除验证文件,整个过程对网站没有任何影响。
如果你用的 apache/nginx 服务器,acme.sh 还可以智能的从配置中自动完成验证, 你不需要指定网站根目录:
Apache
1 | acme.sh --issue -d mydomain.com --apache |
Nginx
1 | acme.sh --issue -d mydomain.com --nginx |
copy/安装证书
前面证书生成以后,接下来需要把证书 copy 到真正需要用它的地方。
Apache
1 | acme.sh --install-cert -d example.com \ |
Nginx
1 | acme.sh --install-cert -d example.com \ |
service nginx force-reload 将会重启 nginx ,centos7 以上使用 systemctl 命令
修改配置
此处以 nginx 配置为例
1 | server { |
更新证书
相关链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 骤雨重山!
评论