Skip to content

使用 acme.sh 生成证书

说明

GitHub 原始仓库

安装 acme.sh

  1. 以下是使用 root 用户执行,使用CentOS为例

  2. 安装(使用镜像仓库)

    bash
    # git clone https://framagit.org/xuxiaowei-com-cn/acme.sh.git
    git clone https://gitee.com/neilpang/acme.sh.git
    cd acme.sh
    # 换成自己的邮箱,便于接收邮件
    ./acme.sh --install -m my@example.com
    
    ./acme.sh --register-account -m my@example.com

    我这里选择了 DNS 验证,我个人感觉比较方便:

    先找到你的厂商 API 点进去 点我跳转,这里以阿里云为🌰:

    将他们的 key、secret 设置为环境变量

    bash
    export Ali_Key="xxx"
    export Ali_Secret="xxx"

    生成证书(这里的 example.com 改成你自己的域名即可)

    bash
    ./acme.sh --issue --dns dns_ali -d xiaojingge.com -d *.xiaojingge.com

    在此期间等待执行就好了,可能会一点时间,因为还要等待证书生效。

  3. 复制证书

    我这边是 nginx 所以使用官方命令 nginx 示例就行(由于我的 nginx 使用 docker 安装,则后面的重启命令改为 docker restart nginx容器名称/容器id 即可),命令如下:

bash
./acme.sh --install-cert -d xiaojingge.com \
--key-file       /ssl/server.key  \
--fullchain-file /ssl/server.crt \
--reloadcmd     "docker restart nginx"

这里说明下:

  • reloadcmd 非常重要。证书会自动申请续签,但是如果没有正确的 reloadcmd 命令,证书可能无法被重新应用到 Apache 或者 Nginx,因为配置没有被重载。

修改完记得重启 nginx 哦。

(扩展📜)更新证书

目前证书每 60 天自动更新,你无需任何操作。

但是你也可以强制续签证书:

bash
acme.sh --renew -d example.com --force