使用 acme.sh 生成免费 90 天的 SSL 泛域名证书
使用 acme.sh 生成免费 90 天的 SSL 泛域名证书使用 acme.sh 生成免费 90 天的 SSL 泛域名证书
原创 西瓜皮 codebox代码助手
2024年10月16日 08:00 英国 听全文
图片
acms.sh 是 Github 上开源的一款 SSL 证书申请工具,该工具安装配置完成后可帮我们申请免费 SSL 证书,并通过定时任务实现证书自动续期,理论上配置一次终生使用,官方有提供了中文文档可自行查阅,下面是关于使用 acme.sh 生成免费 90 天 SSL 泛域名证书的详细步骤:
1. 安装 acme.sh
acme.sh 是一个纯 Shell 脚本的 ACME 协议客户端,支持从 Let’s Encrypt 等提供商申请证书。
安装命令:
curl https://get.acme.sh | sh
或者
wget -O - https://get.acme.sh | sh
安装完成后,可以通过执行以下命令来加载 acme.sh 的路径:
source ~/.bashrc
2. 申请免费 SSL 泛域名证书
申请 SSL 泛域名证书的关键是通过 DNS 验证来确保你对域名的控制权。Let’s Encrypt 提供了免费的 90 天有效期的证书。
2.1. 选择 DNS API
acme.sh 支持多种 DNS API,例如 Cloudflare、阿里云、DNSPod 等,你需要选择适合你的域名提供商。
以下是一些常用 DNS API 的示例:
Cloudflare API:
export CF_Key="你的Cloudflare API Key"
export CF_Email="你的Cloudflare账户邮箱"
阿里云 DNS API:
export Ali_Key="你的阿里云AccessKey ID"
export Ali_Secret="你的阿里云AccessKey Secret"
DNSPod API:
export DP_Id="你的DNSPod API ID"
export DP_Key="你的DNSPod API Key"
2.2. 阿里云获取 DNS API
acme提供的泛域名证书只能通过dns的形式来做验证,因此我们需要进入域名解析控制台(你可以在此处找到你的域名解析提供商)创建API ID 和 API Key。
我这里以阿里云为例,登录成功后,去到阿里云的RAM访问控制面板来创建用户。
图片
• 创建完用户之后,点击添加权限按钮
图片
• 勾选RAM的访问控制权限(需要对添加/删除dns记录)
图片
• 复制AccessKey ID和AccessKey Secret下来,保存好。
图片
acme提供的泛域名证书只能通过dns的形式来做验证,因此我们需要进入域名解析控制台(你可以在此处找到你的域名解析提供商)创建API ID 和 API Key。
我这里以阿里云为例,登录成功后,去到阿里云的RAM访问控制面板来创建用户。
获取 DNS API 参数
获取 DNS API 参数
2.3. 申请泛域名证书
申请泛域名证书时,你需要使用 --dns 参数指定 DNS 验证方式。
以 Cloudflare 为例,命令如下:
acme.sh --issue --dns dns_cf -d example.com -d *.example.com
-d example.com 代表主域名,-d *.example.com 代表泛域名。
2.4. 指定 DNS 提供商的命令示例:
• 阿里云:
acme.sh --issue --dns dns_ali -d example.com -d *.example.com
• DNSPod:
acme.sh --issue --dns dns_dp -d example.com -d *.example.com
2.5. 强制使用 Let’s Encrypt 签发证书
如果想指定 Let’s Encrypt 签发,可以加上 --server 参数:
acme.sh --issue --dns dns_cf -d example.com -d *.example.com --server letsencrypt
3. 安装证书
申请成功后,你可以安装或使用这些证书。安装命令根据实际情况可能会有所不同,以下是常见的几种方式:
3.1. 安装到 Nginx:
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "service nginx force-reload"
3.2. 安装到 Apache:
acme.sh --install-cert -d example.com \
--key-file /etc/apache2/ssl/example.com.key \
--fullchain-file /etc/apache2/ssl/fullchain.cer \
--reloadcmd "service apache2 force-reload"
4. 实现效果
最后,我们重启nginx,通过浏览器访问网站就能看到证书信息了🤗
最后,我们重启nginx,通过浏览器访问网站就能看到证书信息了🤗图片
5. 自动续期
acme.sh 会自动续期证书,无需手动干预。你可以通过执行以下命令来检查或强制续期:
acme.sh --renew -d example.com --force
6. 卸载 acme.sh(如果需要)
如果需要卸载 acme.sh,可以使用以下命令:
acme.sh --uninstall
7. 总结
通过 acme.sh,你可以轻松生成免费的 90 天 SSL 泛域名证书,并自动处理续期问题。只需要配置好你的 DNS API,申请和安装证书的过程非常简洁快速。这种方法非常适合需要为多个子域名申请 SSL 证书的情况。
8. 地址
GitHub
https://github.com/acmesh-official/acme.sh
中文文档
https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
阅读 588