使用新证书自动重新配置 WinRM HTTPS 侦听器?

Jar*_*red 6 remote-access powershell https credssp winrm

我希望在我们所有的服务器上启用 WinRM HTTPS 侦听器,以便在服务器之间使用 CredSSP 解决双跳问题时进行安全通信。

设置这个很好,我们有来自内部 CA 的 CN 适当的证书,所以侦听器的初始设置很好并且工作得很好。唯一的问题是这些证书的有效期仅为 1 年,因此一旦它们到期,我们需要重新配置每台服务器上的侦听器,因为服务器证书的自动注册不会修改 WinRM 配置中的证书指纹.

有没有人遇到过这个问题的好解决方案?

Rya*_*her 5

我最近整理了一个简短的脚本,以完成您正在尝试完成的相同事情,以下是相关部分。请注意,当您等待 Restart-Service 命令的结果时,Invoke-Command 将重置 WinRM 服务,因此最后会出现错误...

$yourCred = Get-Credential domain\account
$yourServer = "your.server.fqdn"

$LatestThumb = Invoke-Command -ComputerName $yourServer `
                            -Credential $yourCred `
                            -ScriptBlock {
                                Get-ChildItem -Path Cert:\LocalMachine\My |
                                Where-Object {$_.subject -match "CN=$yourServer"} |
                                Sort-Object -Property NotAfter |
                                Select-Object -Last 1 -ExpandProperty Thumbprint
                            }

Set-WSManInstance -ResourceURI winrm/config/Listener `
                  -SelectorSet @{Address="*";Transport="HTTPS"} `
                  -ComputerName $yourServer `
                  -Credential $yourCred `
                  -ValueSet @{CertificateThumbprint=$LatestThumb}

Invoke-Command -ComputerName $yourServer `
               -Credential $yourCred `
               -ScriptBlock { Restart-Service -Force -Name WinRM }
Run Code Online (Sandbox Code Playgroud)

这是针对带有 Posh v3 的 Server 2008 R2 运行的。我敢打赌它适用于 Server 2012,但它可能需要为 v2 做一些工作。


Tre*_*van 2

您通常会使用该Set-WSManQuickConfig -UseSSL命令在 WinRM 服务上配置 SSL 证书。或者,您可以手动Set-Item在 WinRM 服务上配置指纹。请参阅下面的示例。

Set-Location -Path WSMan:\localhost\Service;
Set-Item -Path .\CertificateThumbprint -Value 'THUMBPRINT';
Run Code Online (Sandbox Code Playgroud)

注意:确保您正在部署最新版本的 Windows Management Framework Core(包括 PowerShell)。我最近遇到了一位客户的问题,其中Set-WSManQuickConfigcmdlet 无法正确识别证书存储中的有效 SSL 证书。