Мы пытаемся отключить SSL V3 на многих серверах Windows; в его рамках реестры обновляются удаленно через скрипт. Проблема в том, что после изменения реестра требуется много перезагрузок. Есть ли способ обойти это, можно ли перезапустить службу на сервере, чтобы больше не принимать SSL V3 после изменения реестра?
Изменить: немного больше разъяснений, это об отключении «сервера SSL V3»; на серверах Windows 2012 R2.
Да ... наверное ... если вы говорите о приложениях, которые вызывают schannel.dll.
Вы упомянули «Серверы» и упомянули «SSlv3», который является протоколом. Для внесения изменений в этот раздел реестра требуется перезагрузка.
Прочтите эту статью Microsoft: https://support.microsoft.com/en-us/kb/245030
Это в основном библия по этой теме.
Обратите внимание, что в статье говорится: «Изменения ключа CIPHERS или HASHES вступают в силу немедленно, без перезапуска системы».
Однако вы меняете ключ PROTOCOLS. Итак, перезагрузите.
РЕДАКТИРОВАТЬ: О, я забыл упомянуть самую важную часть - изменения в этом разделе реестра, они влияют только на приложения, которые обращаются к Schannel DLL. (Например, IIS, RDP, SQL Server и т. Д.) Они НЕ ВЛИЯЮТ на приложения, использующие сторонние библиотеки, такие как OpenSSL. В этих приложениях мы не можем знать, потребуется ли перезагрузка или нет, потому что это зависит от приложения.
Вы можете перезапустить службу HTTP, используя net stop http
и net start http
. Очевидно, это повлияет только на приложения, использующие его (например, IIS).
Вам также потребуется перезапустить любые службы в зависимости от службы HTTP и закрыть любой другой процесс, используя \Device\Http\*
(иначе служба не остановится).
Вот сценарий PowerShell для всего этого. (Оно использует handle.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.)