美文网首页
使用acme.sh生成https证书

使用acme.sh生成https证书

作者: KN郑某某 | 来源:发表于2019-04-25 22:18 被阅读0次

一、安装

参考 acme.sh文档

$ curl  https://get.acme.sh | sh

阿里云服务器中上面的方式不能下载到,所以使用下面的方式:

$ curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1  sh

使用命令source ~/.bashrc让alias生效,或者再次执行

$ alias acme.sh=~/.acme.sh/acme.sh

二、添加DNSAPI密钥

我使用阿里云的域名,所以直接先添加阿里云的dnsapi, 登录阿里云控制台-头像-accesskeys, 或者登录后直接打开 链接,添加并获取AccessKeyIDAccessKeySecret,存在旧的也可以直接使用。

其他类型的可以参考dnsapi文档

三、生成证书

使用阿里云的dns,所以下面的dns参数是dns_ali, 例如我们申请zqyu.com这个域名的泛域名证书

$ export Ali_Key="[参数是上面申请的AccessKeyID]"
$ export Ali_Secret="[参数是上面申请的AccessKeySecret]"
$ acme.sh --issue --dns dns_ali -d zqyu.com -d *.zqyu.com

如果下载失败可以使用 --debug参数打印更多的信息,例如

$ acme.sh --issue --dns dns_ali -d zqyu.com-d *.zqyu.com --debug

等待证书下载并保存,acme.sh 用到的所有文件都放在路径 ~/.acme.sh/, 下载的证书也全部放在这里。

四、安装证书

官方文档建议不要直接使用这个目录下的文件,所以使用命令将生成的证书安装到其他的目录。

例如nginx使用的证书,使用下面的命令将证书复制到/etc/letsencrypt/zqyu.com/nginx目录中

$ acme.sh --install-cert -d zqyu.com \
--key-file       /etc/letsencrypt/zqyu.com/nginx/key.pem  \
--fullchain-file /etc/letsencrypt/zqyu.com/nginx/cert.pem

nginx中使用证书

ssl_certificate /etc/letsencrypt/zqyu.com/nginx/cert.pem;
ssl_certificate_key /etc/letsencrypt/zqyu.com/nginx/key.pem;

重新加载nginx配置

$ nginx -s reload

五、证书更新

acme.sh 安装时默认添加了一个自动更新证书的定时任务

57 0 * * * "~/.acme.sh"/acme.sh --cron --home "~/.acme.sh" > /dev/null

所以证书是可以自动更新了,上面的dnsapi账号信息保存到了~/.acme.sh/account.conf文件中,安装的目录保存到了~/.acme.sh/zqyu.com/zqyu.com.conf,自动更新时会读取这些信息。

更新证书之后需要重新加载nginx配置

$ nginx -s reload

可以将命令也加到定时任务里面

57 0 * * * "~/.acme.sh"/acme.sh --cron --home "~/.acme.sh" > /dev/null && nginx -s reload

六、 acme.sh 更新

手动更新

$ acme.sh --upgrade

设置自动更新

acme.sh --upgrade --auto-upgrade

取消自动更新

acme.sh --upgrade --auto-upgrade 0

七、 acme.sh 卸载

  1. 删除文件夹 ~/.acme.sh
  2. 使用 crontab -e 删除生成的定时任务
  3. 删除别名 unalias acme.sh
  4. 删除 ~/.bashrc 中的 . "/root/.acme.sh/acme.sh.env"

相关文章

网友评论

      本文标题:使用acme.sh生成https证书

      本文链接:https://www.haomeiwen.com/subject/nbjtnqtx.html