使用 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 配置,以确保符合最佳实践和安全更新。

相关推荐
kp000003 小时前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
许彰午3 小时前
02-网络的抽象层
网络·智能路由器
山顶夕景4 小时前
【MAE】音频自监督训练Masked Autoencoders that Listen
音视频·ssl·多模态·自监督·mae
Geek-Chow4 小时前
A Practical Tour of AWS Networking: VPCs, Subnets, Gateways, and More
网络·aws
数据知道5 小时前
网络地址转换(NAT)与安全:映射原理、打洞与内网暴露风险
网络·安全·智能路由器·内网安全
KaMeidebaby6 小时前
卡梅德生物技术快报|原核膜蛋白表达优化实操手册,膜蛋白的纯化梯度洗脱完整流程
前端·网络·数据库·人工智能·算法
神奇霸王龙6 小时前
可审计 Agent 对比:5 旗舰步骤回放
网络·图像处理·人工智能·python·ai·ai编程
kali-Myon6 小时前
深入 MySQL 内核:从临时哈希表分配机制详解 Floor 报错注入核心原理
数据库·sql·mysql·安全·web
一只小菜鸡..7 小时前
Stanford CS144 学习笔记 (七):跨越虚实的边界——物理层、链路层与无线网络
网络·笔记·学习
且随疾风前行.7 小时前
Android Binder 驱动 - 内核驱动层源码初探
android·网络·binder