自动化部署证书 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