部署
acme.sh 的部署我采用的是 docker 方式进行部署,相应的 docker-compose.yaml 文件内容如下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
version: "3"
services:
acme.sh:
image: neilpang/acme.sh:latest
container_name: acme.sh
command: daemon
volumes:
- "./Volume:/acme.sh"
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- DEPLOY_DOCKER_CONTAINER_LABEL=__nginx__
- DEPLOY_DOCKER_CONTAINER_RELOAD_CMD="nginx -s reload -c /etc/nginx/nginx.conf"
restart: always
networks:
- internal-network
networks:
internal-network:
external: true
|
其中 ./Volume
是用于挂载证书文件夹的。
证书申请
无论是使用哪种方式申请证书,都需要注册申请人的信息。使用 docker exec -ti <container-name> sh
命令进入到容器内部,随后执行以下命令注册信息。
1
|
acme.sh --register-account -m <你的 Email 邮箱地址>
|
阿里云一键申请
首先登录阿里云的控制台,鼠标移动到右上角头像位置,弹出的下拉中选择 AccessKey 管理。
在新的页面中,选择 创建 AccessKey 即可创建一个新的密钥,记录好 Key 与 Secret 备用。
还是来到 acme.sh 的容器内部,执行以下命令,将阿里云相关的密钥信息导出到环境变量,以便 acme.sh 使用。最后调用 acme.sh --issue
方法开始自动申请证书。
下面的变量以 example.com 域名为例,只要申请成功就是泛解析域名的证书。
1
2
3
4
5
6
|
# 导出到环境变量。
export Ali_Key="Key"
export Ali_Secret="Secret"
# 申请证书。
acme.sh --issue --dns dns_ali -d example.com -d *.example.com --debug
|
Godaddy 申请
前置操作也是一样的,需要注册申请人的信息,然后来到 Godaddy 对应的 API Key Managment 页面,选择 Create New API Key,在随后的 Environment 中选择 Production,生成了对应的密钥之后,保存下来。
这里只会显示一次,请记得复制保存对应的密钥信息。
最后进入到 acme.sh 容器,键入以下命令开始申请 SSL 证书。
1
2
3
4
5
6
|
# 导出到环境变量。
export GD_Key="Key"
export GD_Secret="Secret"
# 申请证书。
acme.sh --issue --dns dns_gd -d example.com -d *.example.com
|
Reference: acme.sh 搭配 GoDaddy 自動續期 Let’s Encrypt 免費萬用憑證 - 腳印網頁資訊設計