使用acme.sh获取证书
官网地址
官方的地址是 acmesh-official/acme.sh
如何安装 acme.sh
官方的安装方式是
1 | curl https://get.acme.sh | sh -s email=my@example.com |
在国内如果因为网络环境安装失败,可以参考官方的教程Install in China · acmesh-official/acme.sh Wiki
记得在你的 ~/.bashrc
里面加一条 alias acme.sh=~/.acme.sh/acme.sh
这样就可以直接使用命令 acme.sh
来调用了
如何申请
这里我开始尝试直接用命令
1 | acme.sh --issue -d mydomain.com --nginx |
来申请证书,但是它告诉我我的 nginx
配置有问题,查阅英文版本的readme发现,应当使用命令
1 | acme.sh --issue -d www.ericli.vip --nginx /etc/nginx/nginx.conf |
这样就可以正常获取了,但是这时候我遇到了一个问题,之前我用的是 certbot
来获取证书,这玩意需要 sudo
权限,所以当时我的nginx配置如下:
1 | server { |
而这个路径普通用户不可读,所以运行上面的指令会报错
于是我选择换命令
1 | acme.sh --issue -d ericli.vip -d www.ericli.vip --webroot /var/www/hexo |
用这个命令来获取证书
注意,这样获取的证书是放在
~/.acme.sh/ericli.vip/
下面的,而不是~/.acme.sh/www.ericli.vip/
下面
安装证书
官方不建议直接使用 ~/.acme.sh/xxx
下面的证书,因为这里面的目录结构可能发生改变,所以推荐的方式是使用命令 acme.sh --install
系列来安装证书到另外的路径
这里我选择创建路径 ~/certs/www.ericli.vip/
来存这里申请的证书,使用命令
1 | mkdir -p ~/certs/xxx.example.com |
创建对应的路径,然后使用命令
1 | acme.sh --install-cert -d ericli.vip \ |
修改 Nginx
配置文件
修改nginx里面ssl相关配置,例如我的配置:
1 | server { |
检查自动更新证书是否正确配置
使用命令
1 | crontab -l |
应该能够看到形如
1 | 22 0 * * * "/home/eric/.acme.sh"/acme.sh --cron --home "/home/eric/.acme.sh" > /dev/null |
的东西,这样就说明自动更新配置成功了
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.