[PowerShell] 批量更新 IIS SSL 憑證教學 (V1 版:基礎自動化腳本)

這篇是 PowerShell 自動化更新 IIS SSL 憑證 V1 版的存檔教學。雖然目前已釋出更安全的 V6 版,但本篇展示了如何透過網路下載密碼、自動匯入 PFX 憑證以及使用 netsh 指令更新綁定的早期實作邏輯,適合研究 PowerShell 自動化歷程。
📝 前言:
💡 系列導讀:這是 V1 版本腳本存檔。
多台伺服器要手動更新 SSL 憑證實在太累人了,使用 PowerShell 來一鍵完成更為實際。本版本實現了從遠端下載 PFX 並自動重新綁定 IIS 站台的功能。

🚀 新版發布:IIS SSL 自動化腳本 V6 (完整版)

您目前觀看的是 V1 基礎版 教學。為了提升安全性與自動化穩定度,我已釋出最新的 V6 完整版,整合了 AES 加密與自動解密流程,建議前往觀看。

👉 點此前往:[PowerShell] IIS SSL 憑證自動更新全攻略 (V6)

1. 操作流程說明

這個腳本會依序執行以下關鍵步驟:

  • 獲取 SSL 綁定資訊: 取得目前的憑證指紋 (Thumbprint)。
  • 下載 PFX 憑證: 從指定的內部網址下載新憑證。
  • 匯入本機存放區: 將 PFX 匯入至 LocalMachine\My。
  • 更新綁定: 使用 netsh 強制更新 SSL 綁定。
  • 清理與重啟: 刪除舊憑證檔案並重新啟動 IIS 服務。

2. [程式碼] IIS 憑證自動更新腳本 (V1)

請將以下程式碼存為 Update-IIS-Cert-V1.ps1 並以系統管理員權限執行:

# 設置變數環境 $PFX_FILE_URL = "http://192.168.1.1.123.pfx" $PFX_PASSWORD = "W123456122" $TEMP_PFX_PATH = "C:\temp\123.pfx" $SSL_BINDING_IPPORT = "0.0.0.0:443" $SSL_APP_ID = "{4dc3e181-e14b-4a21-b022-59fc669b0914}" # 1. 獲取目前 IIS 站台資訊 $sites = Get-Website $CertificateThumbprints = @() foreach ($site in $sites) { Write-Host "站台: $($site.Name)" $bindings = Get-WebBinding -Name $site.Name -Port 443 -Protocol "https" -ErrorAction SilentlyContinue if ($bindings) { foreach ($binding in $bindings) { Write-Host " 憑證指紋: $($binding.CertificateHash)" $CertificateThumbprints += $binding.CertificateHash } } } # 2. 下載 PFX 檔案 Write-Host "正在下載 PFX 檔案..." Invoke-WebRequest -Uri $PFX_FILE_URL -OutFile $TEMP_PFX_PATH # 3. 匯入憑證 Write-Host "正在匯入憑證..." $cert = Import-PfxCertificate -FilePath $TEMP_PFX_PATH -CertStoreLocation Cert:\LocalMachine\My -Password (ConvertTo-SecureString $PFX_PASSWORD -AsPlainText -Force) $thumbprint = $cert.Thumbprint Write-Host "新憑證指紋: $thumbprint" # 4. 使用 netsh 更新 SSL 綁定 Write-Host "執行 netsh 更新綁定..." try { Invoke-Expression "netsh http delete sslcert ipport=$SSL_BINDING_IPPORT" | Out-Null Invoke-Expression "netsh http add sslcert ipport=$SSL_BINDING_IPPORT certhash=$thumbprint appid=$SSL_APP_ID" | Out-Null } catch { Write-Host "更新綁定發生錯誤: $_" -ForegroundColor Red } # 5. 清理舊憑證與重啟服務 Write-Host "正在刪除舊憑證並重啟 IIS..." Restart-Service W3SVC -Force Remove-Item $TEMP_PFX_PATH -Force Write-Host "操作完成。"

📚 參考資源

🏷️ 文章標籤 (Tags)

留言

自訂樣式 ~ CSS -- 簡約相簿

© Copyright 2021 Design By 灰鴿 | Modified by Sungshu ( Powered by Blogger )