win-acme 为新域名申请 Nginx SSL 证书的一步到位指南
				
									
					
					
						|  | 
							freeflydom 2025年9月2日 8:22
								本文热度 1522 | 
					
				 
				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.conf 或 conf.d 目录下的某个文件) 为新域名添加或修改相应的 server 块。
- 配置 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;
    }
}
 - 重要: 
- (可选) 准备 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 等) ...
#     }
# }
 
- 测试并重载 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),并按照以下步骤操作:
- 选择创建模式: 
- 指定域名来源 (Source): - 通常选择 - Manual input(手动输入) 或类似的选项。
 
- 输入您的新域名 (例如 - newdomain.example.com),然后按回车。
 
- 可能会提示输入一个“友好名称 (Friendly name)”,您可以接受默认(通常是主域名)或自定义一个。 
 
- 配置域名验证 (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)”。
 
 
- 配置证书存储 (Store): - win-acme 可能会首先列出一些存储选项,或者默认选中了 Windows Certificate Store。我们的目标是使用 - PemFiles。
 
- 选择添加/更改存储插件的选项。 
- 选择 - 2: PEM encoded files (Apache, nginx, etc.)存储插件。
 
- 当提示输入 - File path:(PEM 文件输出路径) 时,为您的新域名指定一个清晰、固定且独立的目录路径,例如- D:\cer\newdomain.example.com\(请确保这个路径与您为其他域名配置的路径不同,以便管理)。然后按回车。
 
- 当提示为私钥文件设置密码 (- 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(无额外的存储步骤),然后按回车。
 
 
- 配置安装步骤 (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),然后按回车。
 
- 当提示输入 - Parameters:(脚本参数) 时,将其留空 (直接按回车键)。
 
- 当询问 - Add another installation step?(是否添加其他安装步骤) 时,选择- 3: No (additional) installation steps,然后按回车。
 
 
- 其他选项与完成: - 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\),您需要:
- 确认 PEM 文件名:进入该目录 (例如 - D:\cer\newdomain.example.com\),查看实际生成的证书文件名。通常会有类似- newdomain.example.com-chain.pem(完整证书链) 和- newdomain.example.com-key.pem(私钥) 的文件。
 
- 更新 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 等) ...
    }
}
 
- 测试并重载 Nginx: - 运行 - nginx -t。
 
- 运行 - nginx -s reload。
 
 
5. 步骤四:测试
- 浏览器测试: 
- (可选) win-acme 手动续订测试: 
通过以上“一步到位”的配置方法,您可以高效地为新的域名在 Nginx 环境下配置好 Let's Encrypt SSL 证书的自动申请与续订,确保网站的 HTTPS 服务持续、安全且无需人工干预。
转自https://blog.csdn.net/vasing_/article/details/148135054
该文章在 2025/9/2 8:22:49 编辑过