ACME.sh 证书自动部署

CertCloud 支持完整的 ACME 协议。本页面介绍了 ACME.sh 结合 CertCloud 的部署流程。

在开始之前需要完成 证书ACME自动部署 页面的前两个步骤。

创建 ACME 目录 URL

  1. 登录 CertCloud 账户,点击【自动化】->【ACME】->【添加 ACME 目录 URL】 ACME URL 生成操作步骤
  2. 在弹出框中输入具有标识性的名称,选择证书来源[订单,产品],选择相应的订单产品 组织 ,点击【添加】按钮。ACME 界面会新增一条记录。
  3. ACME 界面会新增一条记录 ,点击对应记录的 【部署】 按钮,在跳转的页面选择 acme.sh ,点击复制图标 复制 acme.sh 部署命令

当前,CertCloud ACME 仅支持 OV 和 EV TLS / SSL 证书。
如果需要查看详细的 ACME URL ,则只需要点击对应数据的“ 部署 ”按钮,就可以看到详细的 ACME URL 信息。

安装

官网:ACME.sh GitHub项目地址

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

普通用户和 root 用户都可以安装使用。

安装过程:

  1. 默认安装 acme.sh 到你的 home 目录下:
#cd ~/.acme.sh/

为了方便使用 acme.sh,可以创建 一个 bash 的 alias:

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

颁发并安装证书

  1. 通过 SSH 连接到安装有 ACME 客户端的 Web 服务器。
  2. 在终端提示符下,使用 ACME.sh 客户端命令执行上述复制的颁发命令请求证书。ACME.sh 客户端颁发、安装以及重颁发示例:
# 获取
sudo acme.sh --issue -d DOMAIN --dns DNS_TYPE --server YOUR-ACME-URL --days DAYS 

# 安装
sudo acme.sh --installcert -d DOMAIN --key-file  YOUR-KEY.pem  --fullchain-file  YOUR-CERT.pem --reloadcmd   "YOUR-SERVER-RELOAD"

# 获取并安装(以上两条命令合在一起)
sudo acme.sh --issue -d DOMAIN --dns DNS_TYPE --server YOUR-ACME-URL --days DAYS && sudo acme.sh --installcert -d DOMAIN --key-file  YOUR-KEY.pem  --fullchain-file  YOUR-CERT.pem --reloadcmd   "YOUR-SERVER-RELOAD"
  • DOMAIN 需要替换为申请时提交的域名信息,可以为多个。
  • DNS_TYPE 为需要验证的域名的 DNS 的类型,不同的类型需要配置不同的环境变量。(预审核通过的可以直接配置为 dns_dp ,不需要配置密钥信息)
  • DAYS 为申请的证书的请求周期,应比当前订单的密钥轮换周期时间小。
  • YOUR-ACME-URL 为先前创建的 ACME 目录 URL (请参阅 创建 ACME 目录 URL)。
  • YOUR-KEY.pem 表示服务配置的证书私钥的路径地址信息。
  • YOUR-CERT.pem 表示服务配置的证书文件的路径地址信息。
  • YOUR-SERVER-RELOAD 表示服务重载服务的命令。(具体的实例,可以看下方的 ACME.sh 部分常用命令

注:可以根据自己的需要和服务器环境自定义 ACME 客户端执行命令。

ACME返回的错误和错误消息与 CertCloud API 中返回的错误和错误消息相同。有关错误代码及其含义的列表,请参见 Open API 错误

完成后,终端将显示一条成功消息
恭喜你!ACME 证书请求已完成,并且新发行的证书已安装(保存)在 Web 服务器上。可以访问网站以确认安装成功。

常用命令

为了更方便使用,提供了部分 ACME.sh 的常用命令。

字段信息 解释
- -issue 签发请求
- -days [days] 请求签发证书的周期,配合 –issue 使用
- -server [ACME 目录 URL] 证书服务商的 ACME 目录 URL,配合 –issue 使用
- -installcert 安装证书
-d [网站域名] 配置证书的域名信息
- -webroot [网站跟文件路径] 文件验证需要的网站跟文件路径
- -dns [DNS类型] 配置验证域名的DNS信息
- -cert-file [证书保存的路径] 安装证书保存的路径
- -key-file [私钥保存的路径] 安装私钥保存的路径
- -fullchain-file [证书链保存的路径] 安装证书链保存的路径
- -reloadcmd [Web 重载命令] 安装证书完成之后Web服务的重载命令
  1. 文件验证

    acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/ --server https://acme.certcloud.cn/acme/directory/XXX 
    
  2. DNS 验证( 以 DNSPod ,阿里 DNS 为例)

    export DP_Id="XXX"
    export DP_Key="XXX"
    acme.sh  --issue  --dns dns_dp   -d aa.com  -d www.aa.com --server https://acme.certcloud.cn/acme/directory/XXX 
       
    export Ali_Key="XXX"
    export Ali_Secret="XXX"
    acme.sh  --issue --dns dns_ali -d example.com -d www.example.com --server https://acme.certcloud.cn/acme/directory/XXX 
    

    更多支持的DNS类型详见 [ACME.sh 支持的 DNS 类型大全]

  3. 证书部署:

    Nginx example:
       
    acme.sh --installcert -d example.com --server https://acme.certcloud.cn/acme/directory/XXX \
    --key-file       /path/to/keyfile/in/nginx/key.pem  \
    --fullchain-file /path/to/fullchain/nginx/cert.pem \
    --reloadcmd     "service nginx force-reload"
       
    Apache example:
       
    acme.sh --installcert -d example.com --server https://acme.certcloud.cn/acme/directory/XXX  \
    --cert-file      /path/to/certfile/in/apache/cert.pem  \
    --key-file       /path/to/keyfile/in/apache/key.pem  \
    --fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
    --reloadcmd     "service apache2 force-reload"
    
  4. 获取并部署

     acme.sh --issue -d example.com -d www.example.com --dns dns_dp --server https://acme.certcloud.cn/acme/directory/XXX --days 30 
     && acme.sh --installcert -d example.com -d www.example.com \
     --key-file    /etc/nginx/conf.d/example.com.key  \
     --fullchain-file /etc/nginx/conf.d/example.com.cer \
     --reloadcmd  "service nginx force-reload"
    

    days 的周期为 30 天,acme.sh 会每 30 天去请求 server 去获取新的证书,并进行安装。

更多详细和最新信息请参考ACME.sh Wiki `

August 27, 2020