win-acme 为新域名申请 Nginx SSL 证书的一步到位指南
|
freeflydom
2025年9月2日 8:22
本文热度 233
|
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 编辑过