Skip to content

自动化部署证书 acme.sh 详细实践使用教程

脚本安装

安装卸载

安装

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

添加 alias

shell
vi ~/.bash_profile
# 添加以下 alias
alias acme.sh=~/.acme.sh/acme.sh
# 修改生效
source ~/.bash_profile

卸载

shell
acme.sh --uninstall
# 手动删除 ~/.acme.sh/

配置API

!> DNS验证API及申请命令参数dns_dp本文均以 腾讯云 DNSPod.cn 为例.更多API参考 官方dnsapi文档.

shell
vi ~/.acme.sh/account.conf
# 填写API
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"

申请证书

单泛域名证书

shell
acme.sh --issue --dns dns_dp -d aaa.com -d *.aaa.com

多泛域名证书

?> 参照以下命令添加 -d 域名 可同时申请多张泛域名证书,并合并为一张证书,存放及命名为第一个域名.

shell
acme.sh --issue --dns dns_dp -d aaa.com -d *.aaa.com -d bbb.com -d *.bbb.com -d ccc.com -d *.ccc.com

部署证书

!> 根据情况自行修改证书路径及重载命令

shell
acme.sh --installcert -d aaa.com \
        --key-file /usr/local/nginx/conf/ssl/aaa.com.key \
        --fullchain-file /usr/local/nginx/conf/ssl/aaa.com.cer \
        --reloadcmd  "nginx -s reload"

docker 安装

docker executable 执行模式

?> docker executable 执行模式 acme.sh 容器无需常驻运行,执行 docker run 命令申请证书.并自动删除容器.

配置API

!> DNS验证API及申请命令参数dns_dp本文均以 腾讯云 DNSPod.cn 为例.更多API参考 官方dnsapi文档.

手动创建~/acme.sh目录,并创建account.conf文件,填写API信息.

shell
vi ~/acme.sh/account.conf
# 填写API
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"

申请证书

shell
docker run --rm -it \
  -v ~/acme.sh:/acme.sh \
  neilpang/acme.sh --issue --dns dns_dp \
  -d aaa.com \
  -d *.aaa.com \
  -d bbb.com \
  -d *.bbb.com \
  -d ccc.com \
  -d *.ccc.com

部署证书

?> acme.sh 的 docker 容器不适合 --installcert 自动部署参数.可以参考以下命令并配合以上申请证书命令,合并为 shell 一键脚本.根据情况自行修改证书路径及重载命令.

shell
# 部署证书
\cp -rf /root/acme.sh/aaa.com/aaa.com.key /usr/local/nginx/conf/ssl/aaa.com.key 
\cp -rf /root/acme.sh/aaa.com/fullchain.cer /usr/local/nginx/conf/ssl/aaa.com.cer
# 重载 nginx
nginx -s reload

docker daemon 守护模式

?> docker daemon 守护模式 acme.sh 容器将常驻运行,执行 docker exec 命令申请证书.

启动容器

shell
docker run -itd  \
  -v ~/acme.sh:/acme.sh  \
  --net=host \
  --name=acme.sh \
  --restart=always \
  neilpang/acme.sh daemon

配置API

!> DNS验证API及申请命令参数dns_dp本文均以 腾讯云 DNSPod.cn 为例.更多API参考 官方dnsapi文档.

shell
vi ~/acme.sh/account.conf
# 填写API
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"

申请证书

shell
docker exec acme.sh --issue --dns dns_dp \
  -d aaa.com \
  -d *.aaa.com \
  -d bbb.com \
  -d *.bbb.com \
  -d ccc.com \
  -d *.ccc.com

部署证书

?> acme.sh 的 docker 容器不适合 --installcert 自动部署参数.可以参考以下命令并配合以上申请证书命令,合并为 shell 一键脚本.根据情况自行修改证书路径及重载命令.

shell
# 部署证书
\cp -rf /root/acme.sh/aaa.com/aaa.com.key /usr/local/nginx/conf/ssl/aaa.com.key 
\cp -rf /root/acme.sh/aaa.com/fullchain.cer /usr/local/nginx/conf/ssl/aaa.com.cer
# 重载 nginx
nginx -s reload