win-acme 为新域名申请 Nginx SSL 证书的一步到位指南

1. 背景与目标

本文档提供了一个详细的操作指南,用于在已运行 Nginx 的 Windows Server 环境下,使用 win-acme (WACS) 客户端为新的域名申请 Let's Encrypt SSL 证书,并从一开始就配置好全自动的续订和部署流程。此方法旨在避免分阶段配置的繁琐,实现“一步到位”。

前提条件:

  • 服务器操作系统:Windows Server

  • Web 服务器:Nginx (已在运行并处理 HTTP/HTTPS 请求)

  • SSL 证书客户端:win-acme (WACS)

  • 您已有一个或多个域名通过类似流程成功配置,并拥有一个可用的、通用的 Nginx 重载脚本 (例如 reload_nginx.bat)。

核心目标:

  • 为新域名成功申请 Let's Encrypt SSL 证书,Nginx 服务不中断。

  • 证书直接以 PEM 格式存储在指定位置,私钥不加密。

  • Nginx 在证书成功获取及后续自动续订后,能够自动重新加载配置。

2. 步骤一:前期准备 (在运行 win-acme 之前)

在启动 win-acme 为新域名申请证书前,务必完成以下准备工作:

2.1. DNS 配置

确保您的新域名 (例如 newdomain.example.com) 已经正确地将 A 记录 (或 CNAME 记录) 解析到您这台 Nginx 服务器的公网 IP 地址。

2.2. Nginx 配置 (针对新域名)

您需要在 Nginx 的配置文件中 (通常是 nginx.confconf.d 目录下的某个文件) 为新域名添加或修改相应的 server 块。

  1. 配置 80 端口的 server 块:

    这个 server 块主要负责两件事:处理 Let's Encrypt 的 HTTP-01 域名验证请求,以及将所有其他 HTTP 请求重定向到 HTTPS。

    server {
        listen 80;
        server_name newdomain.example.com; # 将这里替换为您的新域名
    
        # ACME HTTP-01 域名验证处理
        location ^~ /.well-known/acme-challenge/ {
            default_type "text/plain";
            # 指定新域名的网站根目录 (webroot)
            # win-acme 会在这个目录下创建 .well-known/acme-challenge/ 子目录并写入验证文件
            root D:/path/to/newdomain_webroot; # 将这里替换为新域名实际的网站文件根目录
        }
    
        # 将所有其他 HTTP 请求永久重定向到 HTTPS
        location / {
            return 301 https://$server_name$request_uri;
        }
    }
    
    

    重要

    • newdomain.example.com 替换为您的实际新域名。

    • D:/path/to/newdomain_webroot 替换为该新域名对应的网站文件在服务器上的实际根目录路径。确保 Nginx 对此路径有读取权限。

  2. (可选) 准备 443 端口的 server 块骨架:

    您可以先为新域名创建一个监听 443 端口的 server 块的基本结构。ssl_certificate 和 ssl_certificate_key 的路径可以暂时留空或使用占位符,等 win-acme 成功颁发证书后再回来填写准确的路径。

    # server {
    #     listen 443 ssl http2;
    #     server_name newdomain.example.com; # 替换为您的新域名
    #
    #     ssl_certificate         D:/cer/newdomain.example.com/fullchain.pem; # 证书路径占位符
    #     ssl_certificate_key     D:/cer/newdomain.example.com/privkey.pem;  # 私钥路径占位符
    #
    #     # 其他 SSL 配置 (ssl_protocols, ssl_ciphers 等)
    #     # 网站根目录和 location 配置
    #     root D:/path/to/newdomain_webroot; # 与 80 端口配置中的 root 保持一致
    #     location / {
    #         # ... (例如 try_files, index 等) ...
    #     }
    # }
    
    
  3. 测试并重载 Nginx 配置

    • 保存对 Nginx 配置文件的修改。

    • 打开命令提示符 (以管理员身份),导航到 Nginx 的安装目录。

    • 运行 nginx -t 来测试配置文件的语法是否正确。确保没有错误。

    • 如果测试通过,运行 nginx -s reload 来重新加载 Nginx 配置,使新的 server 块生效。

确保 Nginx 能够正常启动,并且可以通过 HTTP 访问您的新域名(即使它会立即重定向到 HTTPS,或者对于 /.well-known/acme-challenge/ 路径能被正确路由到指定的 root)。

3. 步骤二:使用 win-acme 为新域名申请证书 (一步到位配置)

完成上述准备工作后,启动 win-acme 客户端 (wacs.exe),并按照以下步骤操作:

  1. 选择创建模式

    • 在主菜单中,输入 M 选择 Create certificate (full options) (创建证书 - 完整选项),然后按回车。

  2. 指定域名来源 (Source)

    • 通常选择 Manual input (手动输入) 或类似的选项。

    • 输入您的新域名 (例如 newdomain.example.com),然后按回车。

    • 可能会提示输入一个“友好名称 (Friendly name)”,您可以接受默认(通常是主域名)或自定义一个。

  3. 配置域名验证 (Validation)

    • 当询问如何证明域名所有权时 (How would you like to prove ownership for the domain(s)?), 选择 HTTP-01 验证方式。

    • 在具体的 HTTP-01 验证方法列表中,选择 1: [http] Save verification files on (network) path (将验证文件保存到(网络)路径,即 filesystem/webroot 方式)。

    • 当提示输入 Path: (网站根路径) 时,输入您在步骤 2.2.1 中为新域名 Nginx 配置中指定的 root 目录路径 (例如 D:\path\to\newdomain_webroot),然后按回车。

    • 当询问 Copy default web.config before validation? (y/n*) (是否在验证前复制默认 web.config) 时,直接按回车选择默认的“否 (n)”。

  4. 配置证书存储 (Store)

    • win-acme 可能会首先列出一些存储选项,或者默认选中了 Windows Certificate Store。我们的目标是使用 PemFiles

    • 选择添加/更改存储插件的选项。

    • 选择 2: PEM encoded files (Apache, nginx, etc.) 存储插件。

    • 当提示输入 File path: (PEM 文件输出路径) 时,为您的新域名指定一个清晰、固定且独立的目录路径,例如 D:\cer\newdomain.example.com\ (请确保这个路径与您为其他域名配置的路径不同,以便管理)。然后按回车。

      • 提示:如果该目录不存在,win-acme 通常会自动创建它。

    • 当提示为私钥文件设置密码 (Password to set for the private key .pem file.) 时,选择 1: None (无密码),然后按回车。

    • 当询问 Would you like to store it in another way too? (是否还想用其他方式存储) 时,选择 5: No (additional) store steps (无额外的存储步骤),然后按回车。

  5. 配置安装步骤 (Installation) - Nginx 重载

    • 当询问安装步骤时 (Which installation step should run first?),选择 2: Start external script or program (启动外部脚本或程序)。

    • 当提示输入 File: (脚本文件路径) 时,输入您已经准备好并且测试通过的、用于重新加载 Nginx 的通用批处理脚本的完整路径 (例如 D:\smartPC\nginx-1.24.0\reload_nginx.bat),然后按回车。

      • 这个脚本应该是您为 bgzs.pcxzf.cn 配置并测试成功的那个,它可以被多个续订任务共用。

    • 当提示输入 Parameters: (脚本参数) 时,将其留空 (直接按回车键)。

    • 当询问 Add another installation step? (是否添加其他安装步骤) 时,选择 3: No (additional) installation steps,然后按回车。

  6. 其他选项与完成

    • win-acme 可能会询问关于 CSR (证书签名请求) 生成、密钥类型等问题,通常接受默认选项 (如 RSA 密钥) 即可。

    • 仔细阅读后续的确认信息。win-acme 在完成所有配置后,通常会立即尝试为新域名申请证书。

    • 观察 win-acme 的输出,确保域名验证成功、证书下载成功、PemFiles 存储成功,以及安装脚本被调用。

4. 步骤三:更新 Nginx 的 443 端口配置 (如果之前未完成)

如果在步骤 2.2.2 中您只为新域名创建了 443 端口 server 块的骨架,现在 win-acme 已经成功颁发了证书并将 PEM 文件保存到了您在步骤 3.4 中指定的路径 (例如 D:\cer\newdomain.example.com\),您需要:

  1. 确认 PEM 文件名:进入该目录 (例如 D:\cer\newdomain.example.com\),查看实际生成的证书文件名。通常会有类似 newdomain.example.com-chain.pem (完整证书链) 和 newdomain.example.com-key.pem (私钥) 的文件。

  2. 更新 Nginx 配置:

    编辑 Nginx 配置文件,找到为新域名配置的 443 端口 server 块,将 ssl_certificate 和 ssl_certificate_key 指令指向这些实际生成的 PEM 文件:

    server {
        listen 443 ssl http2;
        server_name newdomain.example.com; # 替换为您的新域名
    
        ssl_certificate         D:/cer/newdomain.example.com/newdomain.example.com-chain.pem; # 确保证书链文件名正确
        ssl_certificate_key     D:/cer/newdomain.example.com/newdomain.example.com-key.pem;  # 确保证书私钥文件名正确
    
        # 其他 SSL 配置 (ssl_protocols, ssl_ciphers 等,可以参考您成功的 bgzs.pcxzf.cn 配置)
        # 网站根目录和 location 配置
        root D:/path/to/newdomain_webroot; # 与 80 端口配置中的 root 保持一致
        location / {
            # ... (例如 try_files, index 等) ...
        }
    }
    
    
  3. 测试并重载 Nginx

    • 运行 nginx -t

    • 运行 nginx -s reload

5. 步骤四:测试

  1. 浏览器测试

    • 打开浏览器,访问 https://newdomain.example.com

    • 点击地址栏的小锁图标,检查证书详情,确认颁发给的是您的新域名,签发者是 Let's Encrypt,并且有效期是正确的。

  2. (可选) win-acme 手动续订测试

    • 如果您想立即测试续订流程,可以在 win-acme 中找到为新域名创建的续订任务,选择强制运行 (S: Run ... (force))。

    • 检查 win-acme 的输出、Nginx 重载脚本的日志文件 (D:\smartPC\nginx-1.24.0\logs\win-acme_nginx_reload_script.log) 以及 PEM 文件的修改时间,确保一切按预期工作。

通过以上“一步到位”的配置方法,您可以高效地为新的域名在 Nginx 环境下配置好 Let's Encrypt SSL 证书的自动申请与续订,确保网站的 HTTPS 服务持续、安全且无需人工干预。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值