Wir versuchen, SSL V3 auf zahlreichen Windows-Servern zu deaktivieren. Dabei werden Registrierungen per Remote-Zugriff per Skript aktualisiert. Das Problem besteht darin, dass nach der Änderung der Registrierung viele Neustarts erforderlich sind. Gibt es eine Möglichkeit, dies zu umgehen? Kann der Dienst auf dem Server neu gestartet werden, damit er nach der Änderung der Registrierung kein SSL V3 mehr akzeptiert?
Bearbeiten: Kleine weitere Klarstellung, hier geht es um die Deaktivierung des „SSL V3-Servers“; auf Windows 2012 R2-Servern.
Antwort1
Ja ... wahrscheinlich ... wenn Sie von Anwendungen sprechen, die schannel.dll aufrufen.
Sie haben „Server“ erwähnt und Sie haben „SSlv3“ erwähnt, was ein Protokoll ist. Änderungen an diesem Registrierungsschlüssel erfordern einen Neustart.
Lesen Sie diesen Microsoft-Artikel:https://support.microsoft.com/en-us/kb/245030
Das ist im Grunde die Bibel zu diesem Thema.
Beachten Sie, dass im Artikel steht: „Änderungen am CIPHERS-Schlüssel oder am HASHES-Schlüssel werden sofort wirksam, ohne dass ein Systemneustart erforderlich ist.“
Sie ändern jedoch den Schlüssel PROTOCOLS. Führen Sie daher einen Neustart durch.
BEARBEITEN:Oh, ich habe vergessen, den wichtigsten Teil zu erwähnen – Änderungen an diesem Registrierungsschlüssel wirken sich nur auf Anwendungen aus, die die Schannel-DLL aufrufen. (Wie IIS, RDP, SQL Server usw.) Sie haben KEINE AUSWIRKUNGEN auf Anwendungen, die eine Drittanbieterbibliothek wie OpenSSL verwenden. Bei diesen Apps können wir nicht wissen, ob ein Neustart erforderlich ist oder nicht, da dies von der App abhängt.
Antwort2
Sie können den HTTP-Dienst mit net stop http
und neu starten net start http
. Dies wirkt sich natürlich nur auf Anwendungen aus, die ihn verwenden (wie IIS).
Sie müssen außerdem alle Dienste neu starten, die vom HTTP-Dienst abhängen, und alle anderen Prozesse schließen, die diesen Dienst verwenden \Device\Http\*
(sonst wird der Dienst nicht beendet).
Hier ist ein PowerShell-Skript, das all dies erledigt. (Es verwendethandle.exeaushttps://live.sysinternals.com/und berücksichtigt nicht mehrere Ebenen abhängiger Dienste.)
$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
(Ich habe dies nur unter Windows 7 getestet.)