Мы пытаемся отключить SSL V3 на многочисленных серверах Windows; в рамках этого процесса реестры обновляются удаленно с помощью скрипта. Проблема в том, что после изменения реестра требуется много перезагрузок. Есть ли способ обойти это, можно ли перезапустить службу на сервере, чтобы она больше не принимала SSL V3 после изменения реестра?
Редактировать: Еще немного пояснений: речь идет об отключении «сервера SSL V3» на серверах Windows 2012 R2.
решение1
Да... возможно... если вы говорите о приложениях, которые обращаются к schannel.dll.
Вы упомянули "Серверы" и упомянули "SSlv3", который является протоколом. Изменения в этом разделе реестра требуют перезагрузки.
Прочитайте эту статью Microsoft:https://support.microsoft.com/en-us/kb/245030
По сути, это библия по данной теме.
Обратите внимание, что в статье говорится: «Изменения ключа CIPHERS или HASHES вступают в силу немедленно, без перезапуска системы».
Однако вы меняете ключ PROTOCOLS. Поэтому перезагрузите.
РЕДАКТИРОВАТЬ:О, я забыл упомянуть самую важную часть — изменения в этом разделе реестра, они влияют только на приложения, которые вызывают Schannel DLL. (Такие как IIS, RDP, SQL Server и т. д.) Они НЕ ОКАЗЫВАЮТ ВЛИЯНИЯ на приложения, которые используют стороннюю библиотеку, такую как OpenSSL. В этих приложениях мы не можем знать, потребуется ли перезагрузка или нет, потому что это зависит от приложения.
решение2
Вы можете перезапустить службу HTTP с помощью net stop http
и net start http
. Очевидно, что это повлияет только на приложения, использующие ее (например, IIS).
Вам также потребуется перезапустить все службы, зависящие от службы HTTP, и закрыть все другие процессы, использующие ее \Device\Http\*
(иначе служба не остановится).
Вот скрипт PowerShell, который все это делает. (Он используетручка.exeотhttps://live.sysinternals.com/и не учитывает множественные уровни зависимых услуг.)
$depencies = Get-Service HTTP -DependentServices |? Status -eq Running
Stop-Service $depencies
.\handle.exe -nobanner -a \Device\Http\ |? { $_ -match '\s+pid:\s*(?<pid>\d+)\s+' } |% { $matches.pid } | gu |% { Stop-Process -Id $_ -Confirm }
Restart-Service HTTP
Start-Service $depencies
(Я тестировал это только на Windows 7.)