美文网首页
使用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