acme.sh
是一个开源的 ACME 协议客户端,用于自动获取和续签 Let's Encrypt 等证书颁发机构(CA)的 SSL/TLS 证书。相比于其他工具,它无需依赖任何系统包,并且支持多种 DNS 提供商,能以多种方式验证域名所有权,在 Linux 服务器上被广泛使用。下面为你详细介绍其使用方法:
在终端执行以下命令即可完成安装:
curl https://get.acme.sh | sh -s email=your_email@example.com
上述命令中的 your_email@example.com
需替换为你自己的邮箱地址,该邮箱用于接收证书相关的通知。
安装完成后,acme.sh
会自动添加到系统环境变量中,并且会创建一个定时任务来自动续签证书。
若要使用 DNS 验证方式(适用于通配符证书或其他复杂场景),需要配置相应 DNS 提供商的 API 密钥。以阿里云为例,需设置以下环境变量:
export Ali_Key="your_aliyun_access_key"
export Ali_Secret="your_aliyun_access_secret"
你需要将 your_aliyun_access_key
和 your_aliyun_access_secret
替换为自己阿里云账户的 Access Key 和 Secret。
如果你的网站已经可以通过 HTTP 访问,可使用 HTTP 验证方式获取证书,命令如下:
acme.sh --issue -d example.com -d www.example.com --webroot /path/to/your/webroot
这里的 example.com
和 www.example.com
是你要获取证书的域名,/path/to/your/webroot
是网站的根目录。
若要获取通配符证书或者网站无法通过 HTTP 访问,可使用 DNS 验证方式,示例命令如下:
acme.sh --issue --dns dns_ali -d example.com -d "*.example.com"
其中,dns_ali
表示使用阿里云的 DNS 验证,example.com
和 *.example.com
分别是主域名和通配符域名。
获取证书后,需要将其安装到 Nginx 服务器上,命令如下:
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/fullchain.crt \
--reloadcmd "service nginx force-reload"
上述命令中,/etc/nginx/ssl/example.com.key
和 /etc/nginx/ssl/fullchain.crt
是证书文件的保存路径,service nginx force-reload
是重新加载 Nginx 配置的命令。
acme.sh
会自动创建一个定时任务来检查证书的有效期,并在证书即将到期时自动续签。你可以手动测试续签功能:acme.sh --cron --home "$(dirname "$(readlink -f "$(which acme.sh)")")"
acme.sh --revoke -d example.com
acme.sh --remove -d example.com
通过以上步骤,你可以使用 acme.sh
自动获取、安装和续签 SSL/TLS 证书。