使用 acme.sh 申请域名 SSL/TLS 证书完整指南

使用 acme.sh 申请域名 SSL/TLS 证书完整指南


简介

本指南将详细介绍如何使用 acme.sh 配合 ZeroSSL 获取和管理 SSL/TLS 证书。我们将以 cheungxiongwei.com 为例,介绍从安装到自动续期的完整过程,包括根域名和泛域名证书的配置。

为什么选择 acme.sh 和 ZeroSSL?

  • 免费无限证书:可以免费生成无限数量的90天 SSL 证书
  • 支持泛域名:使用单个证书即可保护无限数量的子域名
  • 自动化管理:内置证书续期和部署功能
  • 多域名支持:可同时为多个域名颁发证书
  • 账户集成:所有证书都存储在您的 ZeroSSL 账户中

前置要求

  • 一台具有 root 访问权限的 Linux 服务器
  • 已注册的域名
  • 基本的命令行使用知识
  • 域名 DNS 设置的访问权限

安装过程

步骤一:安装 acme.sh

bash 复制代码
curl https://get.acme.sh | sh
source ~/.bashrc
acme.sh --version

步骤二:配置 ZeroSSL

  1. 设置 ZeroSSL 为默认证书颁发机构:
bash 复制代码
acme.sh --set-default-ca --server zerossl
  1. 设置 ZeroSSL EAB(外部账户绑定)凭证:
bash 复制代码
export ZERO_EAB_KEY="你的_eab_key"
export ZERO_EAB_HMAC="你的_eab_hmac"

证书申请

方法一:手动 DNS 验证(推荐新手使用)

  1. 启动证书申请:
bash 复制代码
acme.sh --issue --dns -d cheungxiongwei.com -d "*.cheungxiongwei.com" --yes-I-know-dns-manual-mode-enough-go-ahead-please
  1. 添加 DNS TXT 记录:
记录类型 主机记录 记录值
TXT _acme-challenge [提供的值]
TXT _acme-challenge.* [提供的值]
  1. 验证 DNS 解析:
bash 复制代码
dig TXT _acme-challenge.cheungxiongwei.com
dig TXT _acme-challenge.*.cheungxiongwei.com
  1. 完成证书颁发:
bash 复制代码
acme.sh --renew -d cheungxiongwei.com -d "*.cheungxiongwei.com" --yes-I-know-dns-manual-mode-enough-go-ahead-please

方法二:自动 DNS API 验证

  1. 配置 DNS API 凭证(以 DNSPod 为例):
bash 复制代码
export DP_Id="API_ID"
export DP_Key="API_KEY"
  1. 颁发证书:
bash 复制代码
acme.sh --issue --dns dns_dp -d cheungxiongwei.com -d "*.cheungxiongwei.com"

证书安装和管理

步骤一:创建 SSL 目录

bash 复制代码
sudo mkdir -p /etc/ssl/cheungxiongwei.com

步骤二:安装证书

bash 复制代码
acme.sh --install-cert -d cheungxiongwei.com \
--key-file /etc/ssl/cheungxiongwei.com/cheungxiongwei.com.key \
--fullchain-file /etc/ssl/cheungxiongwei.com/fullchain.cer \
--reloadcmd "systemctl reload nginx"

步骤三:配置 Nginx

nginx 复制代码
server {
    listen 443 ssl;
    server_name cheungxiongwei.com *.cheungxiongwei.com;

    ssl_certificate /etc/ssl/cheungxiongwei.com/fullchain.cer;              # 使用完整证书链
    ssl_certificate_key /etc/ssl/cheungxiongwei.com/cheungxiongwei.com.key; # 使用私钥文件

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/cheungxiongwei.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    server_name cheungxiongwei.com *.cheungxiongwei.com;
    return 301 https://$host$request_uri;
}

步骤四:测试并重启 Nginx

bash 复制代码
sudo nginx -t
sudo systemctl restart nginx

证书文件说明

  • fullchain.cer:完整的证书链,用于服务器配置
  • cheungxiongwei.com.key:私钥(需要安全保管)
  • ca.cer:中间证书
  • cheungxiongwei.com.cer:域名证书

自动续期

acme.sh 包含内置的 cron 任务,每天检查证书续期。我们之前使用的 --install-cert 命令已经配置了自动续期并重载 Nginx。

验证过程

  1. 检查 HTTPS 连接:访问 https://cheungxiongwei.com
  2. 验证泛域名证书:测试任意子域名,如 https://www.cheungxiongwei.com
  3. 在浏览器中检查证书详情

故障排除提示

  • 如果 DNS 验证失败,等待 10-15 分钟让解析生效
  • 检查 Nginx 错误日志:sudo tail -f /var/log/nginx/error.log
  • 验证 Nginx 配置中的证书路径
  • 确保 SSL 证书文件权限正确

安全最佳实践

  1. 确保私钥安全并做好备份
  2. 仅使用 TLS 1.2 和 1.3 版本
  3. 定期监控证书过期时间
  4. 维护证书文件的安全备份
  5. 使用强加密的 SSL 密码配置

总结

现在您的域名已经配置了完整的根域名和泛域名 SSL 证书保护。该设置包括自动续期和优化的 Nginx 安全配置。建议定期使用在线 SSL 测试工具检查 SSL 配置,以确保符合最佳实践和安全更新。

相关推荐
RayLink远程控制电脑20 分钟前
远程控制软件新趋势
网络·安全·电脑·生活
ghostwritten28 分钟前
Linux setfacl 命令详解
linux·服务器·网络
G丶AEOM30 分钟前
WebSocket了解
网络·websocket·网络协议
C++忠实粉丝31 分钟前
常见网络命令
网络
SANGEDZ_YYDS1 小时前
三格电子——新品IE103转ModbusTCP网关
服务器·网络·tcp/ip
Hacker_LaoYi1 小时前
网络地址转换NAT
网络·智能路由器
Karoku0661 小时前
【自动化部署】Ansible Playbook 基础应用
运维·网络·docker·容器·自动化·ansible·consul
代码讲故事1 小时前
子域提取工具,子域名收集神器,支持多种数据源和枚举选项,域名发现工具,可以为任何目标枚举海量的有效子域名,安全侦察工具,利用证书透明原则监控部署的新子域
网络·安全·证书·域名·提取·扫描·子域名
honghong______2 小时前
第一章 操作系统引论
linux·网络
你疯了抱抱我2 小时前
【自用】通信内网部署rzgxxt项目_02,前端pipeCloud部署(使用 nginx 部署 + NSSM 控制非窗口运行)
运维·前端·nginx