多くのWindowsサーバーでSSL V3を無効にしようとしています。その一部として、レジストリはスクリプトを介してリモートで更新されています。問題は、レジストリの変更後に何度も再起動する必要があることです。それを回避する方法はありますか?レジストリの変更後にSSL V3を受け入れないようにサーバーでサービスを再起動できますか?
編集:もう少し明確にすると、これは「SSL V3サーバー」の無効化に関するものです。 Windows 2012 R2サーバー。
はい...たぶん... schannel.dllを呼び出すアプリケーションについて話しているなら。
あなたは「サーバー」について言及し、プロトコルである「SSlv3」について言及しました。このレジストリキーを変更するには、再起動が必要です。
このMicrosoftの記事をお読みください: https://support.Microsoft.com/en-us/kb/2450
それは基本的にこのトピックの聖書です。
「CIPHERSキーまたはHASHESキーへの変更は、システムを再起動せずにすぐに有効になります」という記事に注意してください。
ただし、PROTOCOLSキーを変更します。したがって、再起動します。
編集:ああ、私は最も重要な部分を言及するのを忘れていました-このレジストリキーへの変更は、Schannel DLLを呼び出すアプリケーションにのみ影響します。 (IIS、RDP、SQL Serverなど)。OpenSSLなどのサードパーティライブラリを使用するアプリケーションには影響しません。これらのアプリでは、アプリに依存しているため、再起動が必要かどうかを知ることはできません。
net stop http
およびnet start http
を使用して、HTTPサービスを再起動できます。 IISのようなそれを使用するアプリケーションにのみ影響します。
また、HTTPサービスに応じてサービスを再起動し、\Device\Http\*
を使用して他のプロセスを閉じる必要があります(それ以外の場合、サービスは停止しません)。
これを行うためのPowerShellスクリプトを次に示します。 ( handle.exehttps://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でのみテストしました。)