本文详细介绍了如何在目标服务器上使用 acme.sh 工具(下载地址:https://github.com/acmesh-official/acme.sh),通过 DNS 模式申请证书、安装证书的一系列操作步骤。
DNS 验证:在您的服务器网络环境比较复杂情况下,可以使用 DNS 验证,不需要任何公网 IP,不需要任何服务器,只需要 DNS 的解析记录即可完成验证。
安装 acme.sh 工具
首先,使用 scp 命令将 acme.sh.tar 文件传输到指定服务器的指定目录:
scp acme.sh.tar shumei@ip:/home/shumei/software
这里 shumei 是用户名,ip 是目标服务器的 IP 地址。
然后登录服务器,解压 acme.sh.tar 文件后,进入到 acme.sh 所在的目录,命令如下:
tar -zxvf acme.sh.tar
cd acme.sh
接着,执行以下命令进行安装:
./acme.sh --install -m mail@163.com
其中 -m 参数后的邮箱 mail@163.com 用于生成证书。
申请证书
DNS 方式的可以使用域名解析商提供的 API 自动添加 TXT 记录,且在完成验证后删除对应的记录。这里以 aliyun 为例,具体操作步骤如下:
- 登录 Aliyun 账号,创建一个 RAM API key. https://ram.console.aliyun.com/users
- 将 key 和 secret 保存在环境变量中,命令如下:
export Ali_Key="keyStr"
export Ali_Secret="secretStr"
- 使用 acme.sh 命令申请证书。
acme.sh --issue --dns dns_ali -d example.com -d *.example.com
-d 指定域名,*.example.com 表示通配符域名。也可以仅指定一个域名,如 example.com。
Ali_Key 和 Ali_Secret 会保存在 ~/.acme.sh/account.conf 中,当后期更新证书时会用到。
安装证书
使用 acme.sh 命令将申请到的证书安装到指定目录。–key-file 指定私钥文件路径,–fullchain-file 指定证书文件路径,–reloadcmd
指定安装完成后重新加载 nginx 服务的命令,命令如下:
acme.sh –install-cert -d example.com -d *.example.com
–key-file /etc/nginx/cert/example/cert.key
–fullchain-file /etc/nginx/cert/example/cert.cer
–reloadcmd “service nginx force-reload”
通过以上步骤,我们就完成了从证书申请和安装的整个过程。
相关技术资源链接:
acme.sh 官方文档:https://github.com/acmesh-official/acme.sh/wiki
nginx官方文档:https://nginx.org/en/docs/
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 ethan89@aliyun.com