1. 背景與目標
本文檔提供了一個詳細的操作指南,用于在已運行 Nginx 的 Windows Server 環(huán)境下,使用 win-acme (WACS) 客戶端為新的域名申請 Let's Encrypt SSL 證書,并從一開始就配置好全自動的續(xù)訂和部署流程。此方法旨在避免分階段配置的繁瑣,實現(xiàn)“一步到位”。
前提條件:
服務器操作系統(tǒng):Windows Server
Web 服務器:Nginx (已在運行并處理 HTTP/HTTPS 請求)
SSL 證書客戶端:win-acme (WACS)
您已有一個或多個域名通過類似流程成功配置,并擁有一個可用的、通用的 Nginx 重載腳本 (例如 reload_nginx.bat
)。
核心目標:
為新域名成功申請 Let's Encrypt SSL 證書,Nginx 服務不中斷。
證書直接以 PEM 格式存儲在指定位置,私鑰不加密。
Nginx 在證書成功獲取及后續(xù)自動續(xù)訂后,能夠自動重新加載配置。
2. 步驟一:前期準備 (在運行 win-acme 之前)
在啟動 win-acme 為新域名申請證書前,務必完成以下準備工作:
2.1. DNS 配置
確保您的新域名 (例如 newdomain.example.com
) 已經(jīng)正確地將 A 記錄 (或 CNAME 記錄) 解析到您這臺 Nginx 服務器的公網(wǎng) 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";
# 指定新域名的網(wǎng)站根目錄 (webroot)
# win-acme 會在這個目錄下創(chuàng)建 .well-known/acme-challenge/ 子目錄并寫入驗證文件
root D:/path/to/newdomain_webroot; # 將這里替換為新域名實際的網(wǎng)站文件根目錄
}
# 將所有其他 HTTP 請求永久重定向到 HTTPS
location / {
return 301 https://$server_name$request_uri;
}
}
重要:
(可選) 準備 443 端口的 server 塊骨架:
您可以先為新域名創(chuàng)建一個監(jiān)聽 443 端口的 server 塊的基本結構。ssl_certificate 和 ssl_certificate_key 的路徑可以暫時留空或使用占位符,等 win-acme 成功頒發(fā)證書后再回來填寫準確的路徑。
# 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 等)
# # 網(wǎng)站根目錄和 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
),并按照以下步驟操作:
選擇創(chuàng)建模式:
指定域名來源 (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
(將驗證文件保存到(網(wǎng)絡)路徑,即 filesystem/webroot 方式)。
當提示輸入 Path:
(網(wǎng)站根路徑) 時,輸入您在步驟 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:
(腳本文件路徑) 時,輸入您已經(jīng)準備好并且測試通過的、用于重新加載 Nginx 的通用批處理腳本的完整路徑 (例如 D:\smartPC\nginx-1.24.0\reload_nginx.bat
),然后按回車。
當提示輸入 Parameters:
(腳本參數(shù)) 時,將其留空 (直接按回車鍵)。
當詢問 Add another installation step?
(是否添加其他安裝步驟) 時,選擇 3: No (additional) installation steps
,然后按回車。
其他選項與完成:
win-acme 可能會詢問關于 CSR (證書簽名請求) 生成、密鑰類型等問題,通常接受默認選項 (如 RSA 密鑰) 即可。
仔細閱讀后續(xù)的確認信息。win-acme 在完成所有配置后,通常會立即嘗試為新域名申請證書。
觀察 win-acme 的輸出,確保域名驗證成功、證書下載成功、PemFiles
存儲成功,以及安裝腳本被調(diào)用。
4. 步驟三:更新 Nginx 的 443 端口配置 (如果之前未完成)
如果在步驟 2.2.2 中您只為新域名創(chuàng)建了 443 端口 server
塊的骨架,現(xiàn)在 win-acme 已經(jīng)成功頒發(fā)了證書并將 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 配置)
# 網(wǎng)站根目錄和 location 配置
root D:/path/to/newdomain_webroot; # 與 80 端口配置中的 root 保持一致
location / {
# ... (例如 try_files, index 等) ...
}
}
測試并重載 Nginx:
運行 nginx -t
。
運行 nginx -s reload
。
5. 步驟四:測試
瀏覽器測試:
(可選) win-acme 手動續(xù)訂測試:
如果您想立即測試續(xù)訂流程,可以在 win-acme 中找到為新域名創(chuàng)建的續(xù)訂任務,選擇強制運行 (S: Run ... (force)
)。
檢查 win-acme 的輸出、Nginx 重載腳本的日志文件 (D:\smartPC\nginx-1.24.0\logs\win-acme_nginx_reload_script.log
) 以及 PEM 文件的修改時間,確保一切按預期工作。
通過以上“一步到位”的配置方法,您可以高效地為新的域名在 Nginx 環(huán)境下配置好 Let's Encrypt SSL 證書的自動申請與續(xù)訂,確保網(wǎng)站的 HTTPS 服務持續(xù)、安全且無需人工干預。
?轉自https://blog.csdn.net/vasing_/article/details/148135054
該文章在 2025/9/2 8:22:49 編輯過