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

相关推荐
驱动小百科1 小时前
WiFi出现感叹号上不了网怎么办 轻松恢复网络
网络·智能路由器·wifi出现感叹号怎么解决·wifi无法上网·电脑wifi
好多知识都想学1 小时前
协议路由与路由协议
网络·智能路由器
SZ1701102311 小时前
中继器的作用
服务器·网络·智能路由器
Huazzi.3 小时前
Ubuntu 22虚拟机【网络故障】快速解决指南
linux·网络·学习·ubuntu·bash·编程
熙曦Sakura3 小时前
【Linux网络】HTTP
linux·网络·http
毒果3 小时前
网络安全:账号密码与诈骗防范
网络·安全·web安全
八股文领域大手子3 小时前
SSL/TLS 证书与数字签名:构建互联网信任的详解
网络·网络协议·ssl
学渣676563 小时前
TCP/IP 模型每层的封装格式
网络
XiaoCCCcCCccCcccC4 小时前
Linux网络基础 -- 局域网,广域网,网络协议,网络传输的基本流程,端口号,网络字节序
linux·c语言·网络·c++·网络协议