Это небольшое пошаговое руководство, в котором показано, как настроить порт HTTPS и самоподписанный сертификат SSL при использовании удаленного подключения Powershell.
Для того, что бы мы смогли удаленно подключиться к компьютеру, необходимо создать самоподписанный сертификат. Раньше для этого приходилось использовать отдельную утилиту из SDK под названием MakeCert, но в последних версиях операционной системы Windows данную процедуру можно выполнить с помощью того же Powershell.
Хорошим тоном считается создание сертификатов по именам устройств, получить имя в переменную можно вот так:
$hostName = $env:COMPUTERNAME
но мы будем делать сертификат связанный с IP адресом компьютера, так как в нашей сети нет ни домена, ни DNS сервера способного обработать данный запрос.
$serverCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName IP-Address-PC
Мы успешно создали сертификат, теперь необходимо его экспортировать.
Export-Certificate -Cert $serverCert -FilePath c:\cert\PsRemoting-Cert-my-pc.cer
Проверим появился ли сертификат в нашей папке:
Get-ChildItem c:\Cert\PsRemoting-Cert-my-pc-my-pc.cer
Запустим службу WinRM:
Enable-PSRemoting -Force
TCP порт по умолчанию для Powershell Remoting HTTP — 5985 и HTTPS — 5986. По умолчанию наш служба слушает порт 5985, то есть HTTP, нам же нужно будет это изменить.
Get-ChildItem wsman:\localhost\Listener
Удаляем запись с ключом HTTP и добавляем HTTPS.
Get-ChildItem wsman:\localhost\Listener\ | Where-Object -Property Keys -eq 'Transport=HTTP' | Remove-Item -Recurse
Проверяем, что запись удалена:
Get-ChildItem wsman:\localhost\Listener
Создаем новую запись и привязываем сертификат:
New-Item -Path WSMan:\localhost\Listener\ -Transport HTTPS -Address * -CertificateThumbPrint $serverCert.Thumbprint -Force
Создадим правило для файрвола:
New-NetFirewallRule -Displayname 'WinRM - Powershell remoting HTTPS-In' -Name 'WinRM - Powershell remoting HTTPS-In' -Profile Any -LocalPort 5986 -Protocol TCP
Теперь перезагрузим службу WinRM.
Restart-Service WinRM
Настройка сервера на данном этапе завершена, дальше необходимо добавить сертификат на машину с которой хотим подключаться.
Import-Certificate -FilePath c:\Cert\PsRemoting-Cert.cer -CertStoreLocation Cert:\LocalMachine\root\
Вот и все, теперь для того чтобы подключиться, нужно запустить Powershell и ввести команду:
Enter-PSSession -Computername 192.168.22.19 -UseSSL -Credential admin
Удачных экспериментов!!!!