acme.sh
是一个开源的纯 Shell 脚本实现的 ACME 客户端,可用于自动化申请、续期和管理 SSL/TLS 证书,以下是使用 acme.sh
的详细步骤:
1. 安装 acme.sh
打开终端,执行以下命令进行安装:
bash
复制代码
curl https://get.acme.sh | sh -s email=your_email@example.com
或者使用 wget
:
bash
复制代码
wget -O - https://get.acme.sh | sh -s email=your_email@example.com
上述命令中的 your_email@example.com
要替换成你自己的邮箱地址,此邮箱用于接收证书相关的通知。安装完成后,acme.sh
会自动添加一个 cron
定时任务,以实现证书的自动续期。
2. 选择验证方式
acme.sh
支持多种域名验证方式,常见的有以下几种:
- HTTP 验证(HTTP-01):适用于可以通过 80 端口访问的 Web 服务器。
acme.sh
会在 Web 服务器的特定目录下创建验证文件,Let's Encrypt 服务器会通过 HTTP 请求来验证文件的存在。
- DNS 验证(DNS-01):适用于各种情况,尤其是无法开放 80 或 443 端口的场景。
acme.sh
会在域名的 DNS 记录中添加特定的 TXT 记录,Let's Encrypt 服务器会通过 DNS 查询来验证域名所有权。
- TLS-ALPN 验证(TLS-ALPN-01):通过 443 端口进行验证,适用于支持 ALPN 扩展的 Web 服务器。
3. 以 DNS 验证为例申请证书
3.1 配置 DNS 提供商的 API 密钥
如果你使用的是腾讯云 DNS,需要设置环境变量:
bash
复制代码
export Tencent_SecretId="your_secret_id"
export Tencent_SecretKey="your_secret_key"
将 your_secret_id
和 your_secret_key
替换为你自己的腾讯云 API 密钥。
3.2 申请证书
使用以下命令申请证书:
bash
复制代码
./acme.sh --issue --dns dns_tencent -d example.com -d *.example.com
--issue
:表示触发证书申请流程。
--dns dns_tencent
:指定使用腾讯云的 DNS 验证方式。
-d example.com
:指定要申请证书的主域名。
-d *.example.com
:指定要申请证书的泛域名(可选)。
4. 以 HTTP 验证为例申请证书
4.1 确保 Web 服务器可访问
确保你的 Web 服务器(如 Nginx、Apache)正在运行,并且可以通过 80 端口访问。
4.2 申请证书
使用以下命令申请证书:
bash
复制代码
./acme.sh --issue -d example.com --webroot /path/to/your/webroot
-d example.com
:指定要申请证书的域名。
--webroot /path/to/your/webroot
:指定 Web 服务器的根目录,acme.sh
会在该目录下创建验证文件。
5. 安装证书
申请成功后,需要将证书安装到 Web 服务器上。以 Nginx 为例,执行以下命令:
bash
复制代码
./acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.cer \
--reloadcmd "systemctl reload nginx"
--install-cert
:表示安装证书。
-d example.com
:指定要安装证书的域名。
--key-file
:指定私钥文件的保存路径。
--fullchain-file
:指定证书链文件的保存路径。
--reloadcmd
:指定安装完成后重新加载 Web 服务器的命令。
6. 自动续期
acme.sh
会自动添加一个 cron
定时任务,在证书到期前 30 天自动尝试续期。你可以通过以下命令查看 cron
任务:
bash
复制代码
crontab -l
如果需要手动触发续期,可以使用以下命令:
bash
复制代码
./acme.sh --renew -d example.com
7. 卸载 acme.sh
如果你不再需要使用 acme.sh
,可以执行以下命令进行卸载:
bash
复制代码
~/.acme.sh/acme.sh --uninstall
rm -rf ~/.acme.sh
上述命令会移除 acme.sh
的安装目录和相关配置。
通过以上步骤,你可以使用 acme.sh
轻松地申请、安装和管理 SSL/TLS 证书。