Windows
控制自動續訂證書時 NPS 網路策略選擇哪個證書
我有多個使用帶有自簽名證書的 Microsoft PEAP 的 NPS 網路策略。當我們的內部 CA 自動更新證書時,所有網路策略都會切換到 NPS 伺服器上安裝的另一個(看起來是隨機的)證書。發生這種情況時,無線客戶端無法進行身份驗證,從而對我們的基礎架構造成嚴重破壞。
自簽名證書所基於的證書模板會在證書到期前 6 周自動更新證書。為了緩解此問題,我為自己設置了一個提醒,以編輯 NPS 策略並選擇續訂的證書。但我是一名 IT 消防員,有時火災讓我無法完成日常任務,甚至是重要的任務。
有沒有辦法告訴 NPS 使用更新的證書而不是隨機選擇一些證書?
當配置為由網路策略使用的證書自動續訂時,無法控制 NPS 將選擇哪個證書。因此,最好的做法是執行以下操作:
- 在證書自動續訂之前手動續訂自簽名證書,然後
- 立即編輯所有受影響的 NPS 網路策略以使用續訂的證書。
這個問題困擾了我多年。我想我終於找到了一個涉及修改 ias.xml 配置文件文本的解決方案。我編寫了一個 PS 函式,將 xml 文件中的證書指紋替換為 nps 證書的指紋。如果 System32\ias 中的配置文件日期早於證書的 notbefore 日期,我們將在主伺服器上執行此函式。在導入配置之前,我們還在每個同步主配置的從伺服器上執行常式。我們使用 PEAP MSCHAPv2,因此請確認指紋在您的配置文件中的相同位置。帶有配置的 xml 元素稱為 msEAPConfiguration。我們所有的 PEAP 配置的長度都是 1728。證書指紋從索引 72 開始,長度為 40 個字元。有些配置較短,但我還沒有調查過它們。
function replace-certThumbprint { param ( $srcNPSConfigPath, $newThumbprint ) # read xml file for iteration [xml]$npsXmlFile = Get-Content -path $srcNPSConfigPath # read raw xml file for overwrite $rawXML = Get-Content -Path $srcNPSConfigPath -Raw # get eap config part of xml file $eapNodes = $npsXmlFile.getelementsbytagname("msEAPConfiguration") # find certificate thumbprint in nodes foreach ($node in $eapNodes) { # confirm node is 1728 char long if ($node.'#text'.Length -eq 1728) { # save original node text $origNode = $node.'#text' # get thumbprint from node $thumbprint = $node.'#text'.substring(72, 40) # replace thumbprint of old cert with new cert if not present if ($origNode.indexof($newThumbprint) -eq -1) { # node text does not contain new thumbprint # replace node text in raw xml file with new node text $rawXML = $rawXML -replace $origNode, ($origNode -replace $thumbprint, $newThumbprint) } } # $node | fl * } $rawXML | set-content -Path $srcNPSConfigPath -Force }