Вопрос или проблема
Я пытаюсь настроить слушатель HTTPS для winrm
на Windows машине. Ранее я следовал руководству по настройке слушателя HTTPS для WinRM.
Решение выше работало для меня.
Но теперь я удалил слушатель и хочу снова настроить winrm с использованием
winrm quickconfig -transport:https
, но у меня это не получается, так как возникает ошибка
WSManFault
Сообщение = Невозможно создать слушатель WinRM на HTTPS, так как на этой машине нет подходящего сертификата. Для использования с SSL сертификат должен иметь CN, совпадающий с именем хоста, быть подходящим для серверной аутентификации, не истекшим, не отозванным и не самоподписанным.
Даже удалив слушатель HTTPS, мне не удается выполнить быструю настройку. Я чувствую, что необходимо удалить отпечаток из какого-то места, но не уверен откуда именно.
Я наткнулся на одну из ссылок, где Джаред заявил, что нужно вручную удалить отпечаток: Автоматически перенастроить слушатель HTTPS для WinRM с новым сертификатом
Недавно я настроил HTTPS + WINRM и столкнулся с точно такими же проблемами.
Решение заключается в следующем – перед вызовом команды
winrm quickconfig -transport:https
необходимо выполнить некоторые предварительные работы. А именно, необходимо установить сертификат на сервере.
Вы можете посмотреть, как это сделать здесь – http://blogs.technet.com/b/jhoward/archive/2005/02/02/365323.aspx
Если кратко:
1 создайте корневой сертификат ЦС
cmd> makecert -pe -n "CN=Test And Dev Root Authority" -ss my -sr LocalMachine -a sha1 -sky signature -r "Test And Dev Root Authority.cer"
экспортируйте его с приватным ключом из управления сертификатами на хосте, где вы вызываете makecert, и установите на сервере и клиентском хосте в сертификаты.mmc – локальная машина – доверенные корневые центры сертификации
2 создайте ssl сертификат
cmd> makecert -pe -n "CN=8.8.8.8" -ss my -sr LocalMachine -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -in "Test And Dev Root Authority" -is MY -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 8.8.8.8.cer
где CN=8.8.8.8 – должен быть IP адрес сервера
экспортируйте сертификат с приватным ключом из управления сертификатами и импортируйте на сервер в сертификаты.mmc – локальная машина – личные
ТОЛЬКО ПОСЛЕ ЭТОГО выполните
winrm quickconfig -transport:https
надеюсь, что потратив пару дней, чтобы разобраться, как это работает, я сэкономлю вам пару дней
Как автоматизировать настройку WinRM HTTPS с использованием внутреннего SSL сертификата Windows центра сертификации и групповой политики:
Следуйте шагам здесь, чтобы создать новый шаблон SSL сертификата для WinRM на вашем внутреннем центре сертификации Windows, а затем установить все доменные компьютеры (сервера и рабочие станции) на автоматическую регистрацию и автоматическое обновление этого сертификата. Затем настройте WinRM через группу политик и скрипт на старте powershell, чтобы удалить небезопасный http слушатель WinRM и создать безопасный https слушатель WinRM с использованием этого нового SSL сертификата. Это решение “Установи и забудь”, так как, когда SSL сертификат истечет, он будет автоматически обновлен, и при следующей перезагрузке компьютера создаст новый https слушатель WinRM с использованием нового сертификата:
https://www.darkoperator.com/blog/2015/3/24/bdvjiiw1ybzfdjulc5pprgpkm8os0b
Следуйте шагам здесь, чтобы настроить WinRM через групповую политику по всему домену:
https://woshub.com/enable-winrm-management-gpo/
Сохраните скрипт PowerShell ниже как “CreateWinRMHTTPSListener.ps1”. Добавьте этот скрипт в расположение скриптов на старте (Powershell) внутри той же групповой политики, что и настройки WinRM:
Примечание: Скрипт удаляет текущие слушатели (http и https), так как нельзя заменить сертификат без предварительного удаления. Он оставляет http удаленным, чтобы HTTPS был принудительно. Затем он находит локальный сертификат, который был зарегистрирован через “WinRM Web Server Template” (это название нужно обновить в скрипте, чтобы оно совпадало с тем, как вы назвали шаблон SSL сертификата на предыдущем шаге, когда создавали шаблон в центре сертификации). Затем он использует этот сертификат для создания HTTPS слушателя. Это происходит при каждом старте компьютера, так что, когда этот SSL сертификат истечет и будет обновлен, будет применен новый. Истинное решение “установи и забудь”.
#Удалить существующий слушатель HTTPS WinRM
Get-ChildItem wsman:\localhost\Listener\ | Where-Object -Property Keys -like ‘Transport=HTTP*’ | Remove-Item -Recurse
Определите имя шаблона сертификата
$templateName = “WinRM”
Поиск сертификата в личном хранилище локальной машины
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {
$_.Extensions | Where-Object {
$_.Oid.FriendlyName -eq “Certificate Template Information” -and
$_.Format($true) -like “$templateName”
}
} | Select-Object -First 1
Проверить, найден ли сертификат
if ($null -eq $cert) {
Write-Error “Сертификат с именем шаблона ‘$templateName’ не найден.”
return
}
Отобразить детали сертификата
Write-Output “Используется сертификат: $($cert.Subject) с отпечатком: $($cert.Thumbprint)”
Настроить HTTPS слушатель WinRM с выбранным сертификатом
New-Item -Path WSMan:\Localhost\Listener -Transport HTTPS -Address * -CertificateThumbprint $cert.Thumbprint -Force
Подтвердить, что слушатель был создан
Write-Output “HTTPS слушатель WinRM успешно настроен.”
Ответ или решение
Настройка слушателя WinRM по протоколу HTTPS на Windows машине может быть непростой задачей, особенно если вы уже столкнулись с ошибками при попытке повторной настройки. Давайте подробно разберемся в возможных причинах данных проблем и определим шаги для успешной настройки.
Теория
WinRM (Windows Remote Management) — это интерфейс управления на основе веб-сервисов, который позволяет удаленно взаимодействовать с Windows машинами. Использование HTTPS для WinRM добавляет слой безопасности, шифруя данные при передаче. Однако, для успешной настройки SSL/TLS подключения требуется наличие валидного сертификата на машине.
Ошибка, с которой вы столкнулись — "Невозможно создать слушателя WinRM на HTTPS, так как сертификат на машине отсутствует или неверен", указывает на несколько возможных причин:
-
Отсутствие сертификата: Для создания HTTPS слушателя нужен сертификат, выданный центром сертификации (CA), который может быть использован для серверной аутентификации. Это сертификат, CN которого должен совпадать с именем хоста, а сам сертификат не должен быть истекшим, отозванным или самоподписанным.
-
Неправильный сертификат: Даже если сертификат существует, он может не подходить по каким-то критериям (например, он может быть самоподписан, что не подходит для производственного использования).
-
Необходимость удаления старых конфигураций: Если вы уже имели HTTPS слушатель и удалили его, могут остаться конфигурации или упоминания о старых сертификатах, которые нужно очистить.
Пример
Допустим, вы пытаетесь настроить WinRM HTTPS слушатель и сталкиваетесь с вышеупомянутой ошибкой. Вы проверяете и устанавливаете необходимые сертификаты, но проблема все еще не решена. Системные администраторы сталкиваются с подобными задачами, и успешное решение обычно включает следующие шаги:
-
Создание и установка Root CA сертификата: Использование утилиты
makecert
для создания корневого сертификата, установки его в хранилище доверенных корневых сертификатов. Например:makecert -pe -n "CN=RootCA" -ss my -sr LocalMachine -a sha1 -sky signature -r RootCA.cer
-
Создание и установка SSL сертификата: Опять же используя
makecert
, создается сертификат с CN, равным IP адресу вашего сервера:makecert -pe -n "CN=server.domain.com" -ss my -sr LocalMachine -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -in "RootCA" -is my -ir LocalMachine server.domain.com.cer
-
Экспорт и импорт SSL сертификата в нужные хранилища: Откройте консоль управления сертификатами (MMC) и экспортируйте сертификат с приватным ключом для его установки на целевых клиентах и серверах.
Применение
После выполнения вышеуказанных шагов, вы можете приступать к настройке WinRM слушателя:
-
Удалите старые WinRM настройки, если они существуют:
Get-ChildItem wsman:\localhost\Listener\ | Where-Object -Property Keys -like 'Transport=HTTP*' | Remove-Item -Recurse
-
Сертификационная автоматизация: Используйте шаблоны сертификатов и политики групп для автоматического назначения сертификатов всем необходимым машинам в домене. Это разрешает проблемы с истекшими или неподходящими сертификатами.
Например, разработайте шаблон сертификата для WinRM и настройте автоматическое назначение этого сертификата через групповые политики, как описано в блоге Darkoperator.
-
Автоматизация с помощью PowerShell: Используйте скрипты PowerShell для автоматизации процессов удаления старых и создания новых слушателей:
$templateName = "WinRM" $cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Extensions | Where-Object { $_.Oid.FriendlyName -eq "Certificate Template Information" -and $_.Format($true) -like "*$templateName*" } } | Select-Object -First 1 if ($null -eq $cert) { Write-Error "No certificate found with the template name '$templateName'." return } New-Item -Path WSMan:\Localhost\Listener -Transport HTTPS -Address * -CertificateThumbprint $cert.Thumbprint -Force Write-Output "WinRM HTTPS listener configured successfully."
Настройка WinRM через HTTPS — это важный и нужный шаг для обеспечения безопасности в управлении вашими системами. При правильно выполненных действиях, идея «настроил и забыл» становится реальностью, экономя дистанционно управляемым средам время и ресурсы.