前言
本页面介绍了 ACME.sh 结合 CertCloud 的部署流程。
在开始之前需要完成 证书ACME自动部署 页面的前两个步骤。
创建 ACME 目录 URL
- 登录 CertCloud 账户,点击【自动化】->【ACME】->【添加 ACME 目录 URL】
- 在弹出框中输入具有标识性的
名称
,选择证书来源[订单,产品],选择相应的订单
或产品
组织
,点击【添加】按钮。ACME 界面会新增一条记录。 - ACME 界面会新增一条记录 ,点击对应记录的 【部署】 按钮,在跳转的页面选择
acme.sh
,点击复制图标
复制 acme.sh 部署命令 。
当前,CertCloud ACME 仅支持 OV 和 EV TLS / SSL 证书。
如果需要查看详细的 ACME URL ,则只需要点击对应数据的“ 部署 ”按钮,就可以看到详细的 ACME URL 信息。
安装
1 | curl https://get.acme.sh | sh |
普通用户和 root 用户都可以安装使用。
安装过程:
- 默认安装 acme.sh 到你的 home 目录下:
1 | #cd ~/.acme.sh/ |
为了方便使用 acme.sh,可以创建 一个 bash 的 alias:
1 | alias acme.sh=~/.acme.sh/acme.sh |
颁发并安装证书
- 通过 SSH 连接到安装有 ACME 客户端的 Web 服务器。
- 在终端提示符下,使用 ACME.sh 客户端命令执行上述复制的颁发命令请求证书。ACME.sh 客户端颁发、安装以及重颁发示例:
1 | 获取 |
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
DNS 验证( 以 DNSPod ,阿里 DNS 为例)
1
2
3
4
5
6
7export 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 类型大全]
证书部署:
1
2
3
4
5
6
7
8
9
10
11
12
13
14Nginx 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"获取并部署
1
2
3
4
5acme.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 去获取新的证书,并进行安装。
本文转载自: https://docs.certcloud.cn/docs/installation/auto/acme/acmesh/