適用対象: Windows Server Update Services
2020 年 7 月以降、ユーザーは WSUS 同期を経験し、Windows Update (WU) または Microsoft Update (MU) エンドポイントに関する問題をインポートしました。
この記事では、一般的な問題をトラブルシューティングする方法について説明します。 これらのトラブルシューティング手法の一部 (ネットワーク キャプチャなど) は、他の多くの問題にも使用できます。
エンドポイント
現在、WSUS は次のエンドポイントを使用してメタデータを同期します。
https://sws.update.microsoft.com
ほとんどの WSUS サーバーは、この新しいエンドポイントと同期する必要があります。 2020 年 7 月以降、このエンドポイントはトランスポート層セキュリティ (TLS) 1.2 接続のみを受け入れます。 一部の暗号は無効でした。
https://sws1.update.microsoft.com
この古いエンドポイントは最終的に使用停止になります。 詳細については、「 WSUS 3.0 SP2 の同期の実行」を参照してください。 このエンドポイントは、TLS 1.2、TLS 1.1、および TLS 1.0 接続をサポートしています。
https://fe2.update.microsoft.com
この古いエンドポイントは WSUS 同期エンドポイントとして使用停止され、そのエンドポイントへの接続は失敗します。 ただし、Microsoft Update と同期するように構成された Windows Update クライアントでは、引き続きこのエンドポイントを使用できます。
WSUS 同期または手動インポートの問題が発生した場合は、まず、同期するエンドポイントを確認します。
WSUS サーバーで管理者特権の PowerShell コマンド プロンプト ウィンドウを開きます。
現在の同期エンドポイントを検索するには、次の PowerShell スクリプトを実行します。
$server = Get-WsusServer $config = $server.GetConfiguration() # Check current settings before you change them $config.MUUrl
windows Server 2012 以降のバージョンは、 https://sws.update.microsoft.com
エンドポイントを使用するように構成する必要があります。 まだhttps://sws1.update.microsoft.com
またはhttps://fe2.update.microsoft.com
を使用している場合は、「SOAPException でWSUS 同期が失敗するの手順に従って、新しいエンドポイントに変更します。 必要に応じて、 https://sws.update.microsoft.com
エンドポイントに関する接続の問題のトラブルシューティングを行います。
問題 1: 手動インポートは失敗するが、同期は成功する
多くのユーザーが WSUS に手動で更新プログラムをインポートします。一部の更新プログラムは手動でインポートする必要があります。 たとえば、月の 3 週目と 4 週目にリリースされたプレビュー更新プログラムは、手動でインポートする必要があります。 2020 年 7 月末から、更新プログラムを手動でインポートできない場合があります。
ただし、一部の WSUS サーバーでは引き続き更新プログラムを正常にインポートできます。 WU と MU との通常の同期は引き続き機能します。
この問題は、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、または Windows Server 2019 を実行している WSUS サーバーで発生します。
問題 1 のトラブルシューティング
Endpoints で PowerShell スクリプトを実行して、WSUS サーバーが使用するエンドポイントを決定します。 作業しているサーバーが
https://fe2.update.microsoft.com
またはhttps://sws1.update.microsoft.com
と通信していて、失敗したサーバーがhttps://sws.update.microsoft.com
と通信していることがわかります。更新プログラムを手動でインポートするときに、
%Program Files%\Update Services\LogFiles\SoftwareDistribution.log
ファイルでエラーがないか確認します。 次の例のようなエラーを探します。ProcessWebServiceProxyException found Exception was WebException. Action: Retry. Exception Details: System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) -- End of inner exception stack trace --- ... at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.Net.ConnectStream.WriteHeaders(Boolean async)
エラーの次のメッセージは、WSUS サーバーが TLS を使用して WU/MU に接続しようとしたが、WU/MU が接続を閉じたことを示しています。
リモート ホストによって、既存の接続は強制的に切断されました。
次のスクリーンショットは、接続試行のネットワーク キャプチャを示しています。
ネットワーク キャプチャでは、フレーム 874 は TLS 1.0 を使用するクライアント Hello パケットです。 フレーム 877 はサーバー応答です。 応答には、ACK (A) フラグと RST (R) フラグが含まれます。 https://sws.update.microsoft.com
エンドポイントは TLS 1.2 接続のみをサポートするため、接続を拒否し、リセット応答を発行します。
問題 1 の解決策
この問題は、WSUS インポート機能で TLS 1.2 を使用できないために発生します。
この問題を解決するには、以下のいずれかの方法を使用します。
レジストリ キーを使用して TLS 1.2 を使用するように .NET Framework を構成します。
レジストリ キーを設定するには、「 強力な暗号化の構成」を参照してください。 レジストリ キーを設定した後、サーバーを再起動します。
TLS 1.2 を有効にするために、w3wp.exe.config ファイルを作成または更新します。
Note
この変更は、WSUS 用かどうかに関係なく、作成されたすべてのw3wp.exe インスタンスに適用されます。 リモート側でこのバージョンがサポートされている場合、W3wp.exeは TLS 1.2 を使用します。 TLS 1.1 と TLS 1.0 が有効になっている場合、ターゲット サイトが TLS 1.2 をサポートしていない場合、W3wp.exeはこれらのプロトコルをネゴシエートします。
%SystemRoot%\system32\inetsrv\w3wp.exe.config
ファイルが存在しない場合は、次の手順に従います。%SystemRoot%\system32\inetsrv
フォルダーに W3wp.exe.config という名前の新しいファイルを作成します。メモ帳などのテキスト エディターでファイルを開きます。
ファイルに次の行を追加し、ファイルを保存します。
<?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/> </runtime> </configuration>
%SystemRoot%\system32\inetsrv\w3wp.exe.config
ファイルが既に存在する場合は、次の手順に従います。メモ帳または別のテキスト エディターでファイルを開きます。
<configuration> 要素のすぐ下に次の行を追加し、ファイルを保存します。
<runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/> </runtime>
W3wp.exe.config ファイルを作成または更新した後、管理者特権のコマンド プロンプト ウィンドウを開き、
iisreset
を実行してすべてのワーカー プロセスを再起動します。 手動インポートが機能するかどうかをテストします。
問題 2: TLS 1.1 または TLS 1.0 を無効にした後に手動インポートが失敗する
TLS 1.1 と TLS 1.0 は安全でないと見なされるため、段階的に廃止されています。 これらのプロトコルを無効にすると、更新プログラムをインポートできなくなります。 ただし、同期は引き続き機能します。
この問題は、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、または Windows Server 2019 を実行している WSUS サーバーで発生します。
問題 2 のトラブルシューティング
WSUS は、起動時に有効になっている SSL/TLS バージョンをログに記録します。 SSL/TLS のバージョンを確認するには、次の手順に従います。
WSUS サービスを再起動します。
管理者特権のコマンド プロンプトで
iisreset
を実行して、WSUS にスタートアップ シーケンスを強制的に実行させます。WSUS コンソールを開き、サーバーに接続します。
%Program Files%\Update Services\LogFiles\SoftwareDistribution.log
を開き、SCHANNEL プロトコルで始まるエントリを探します。 次の例のようなエントリが表示されます。SCHANNEL Protocol 'TLS 1.0' disabled SCHANNEL Protocol 'TLS 1.1' disabled SCHANNEL Protocols subkey for 'TLS 1.2' not found. Protocol is enabled
これらのエントリは、TLS 1.1 と TLS 1.0 が無効になっており、TLS 1.2 が有効になっていることを示しています。
インポート プロセスが失敗した場合、SoftwareDistribution.logは次のエラー エントリをログに記録します。
ProcessWebServiceProxyException found Exception was WebException. Action: Retry. Exception Details: System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.ComponentModel.Win32Exception: The client and server cannot communicate, because they do not possess a common algorithm
次のスクリーンショットは、接続試行のネットワーク キャプチャを示しています。
ネットワーク キャプチャでは、フレーム 1518 から 1520 は、クライアントとサーバーの間の 3 方向ハンドシェイク (SYN、SYN ACK、ACK) を示します。 フレーム 1536 は、WSUS サーバーからの ACK FIN パケットです。
WSUS は接続を閉じます。これは、インポートに使用する方法を認識しているすべてのプロトコル (SSL3、TLS 1.0、TLS 1.1) が無効になっており、TLS 1.2 を使用できないためです。
問題 2 の解決策
この問題は、WSUS インポートで TLS 1.2 を使用できない問題 1 に似ています。 この問題を解決するには、問題 1 の Resolution を使用。
問題 3: セキュリティのみの更新プログラムのみを適用する Windows Server 2012 および Windows Server 2012 R2 WSUS サーバーで同期が失敗する
Windows Server 2012 および Windows Server 2012 R2 サービスには、次の更新プログラム トラックが含まれています。
- 累積的ではないセキュリティのみの更新プログラム。 セキュリティ修正プログラムのみが含まれています。 たとえば、2020 年 6 月 9 日 KB4561673 (セキュリティのみの更新プログラム)。
- 累積的な月次ロールアップ。 これには、セキュリティのみの更新プログラムのすべてのセキュリティ修正プログラムが含まれており、セキュリティ以外の修正プログラムも含まれています。 たとえば、2020 年 6 月 9 日 KB4561666 (月次ロールアップ)などです。
Windows Server 2012 および Windows Server 2012 R2 の WSUS では、次のいずれかの月次ロールアップ以降の月次ロールアップがインストールされていない限り、同期に TLS 1.2 を使用できません。
- 2017 年 6 月 27 日 — Windows Server 2012 のKB4022721 (月次ロールアップのプレビュー)
- 2017 年 6 月 27 日 — Windows Server 2012 R2 のKB4022720 (月次ロールアップのプレビュー)
WSUS で TLS 1.2 を使用できるようにする変更はセキュリティ以外の修正プログラムであり、月次ロールアップにのみ含まれています。
一部のユーザーは、セキュリティのみの更新プログラムのみをインストールし、月次ロールアップをインストールしないことを選択します。 そのため、WSUS サーバーには TLS 1.2 を有効にする更新プログラムがインストールされていません。 TLS 1.2 接続のみを受け入れるように https://sws.update.microsoft.com
エンドポイントが変更されると、これらの WSUS サーバーはエンドポイントと同期できなくなります。 この問題は、新しくインストールされた Windows Server 2012 または Windows Server 2012 R2 WSUS サーバーで、月次ロールアップがインストールされていない場合にも発生します。
問題 3 のトラブルシューティング
WSUS サーバーに正しい更新プログラムがインストールされている場合、WSUS は起動時に有効になっている SSL/TLS バージョンをログに記録します。 WSUS サーバーで次の手順を実行します。
WSUS サービスを再起動します。
管理者特権のコマンド プロンプトから
iisreset
を実行して、WSUS にスタートアップ シーケンスを強制的に実行させます。WSUS コンソールを開き、サーバーに接続します。
%Program Files%\Update Services\LogFiles\SoftwareDistribution.log
を開き、SCHANNEL プロトコルで始まるエントリを検索します。 次の例のようなエントリが表示されます。SCHANNEL Protocol 'TLS 1.0' disabled SCHANNEL Protocol 'TLS 1.1' disabled SCHANNEL Protocols subkey for 'TLS 1.2' not found. Protocol is enabled
これらのエントリが見つからない場合は、TLS 1.2 を有効にする更新プログラムがインストールされていないことを意味します。
同期が失敗した場合、SoftwareDistribution.logは次のエラー メッセージをログに記録します。
WebServiceCommunicationHelper.ProcessWebServiceProxyException ProcessWebServiceProxyException found Exception was WebException. Action: Retry. Exception Details: System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
次のスクリーンショットは、接続試行のネットワーク キャプチャを示しています。
ネットワーク キャプチャでは、フレーム 95 は TLS 1.0 を使用するクライアント Hello パケットです。 フレーム 96 は、 https://sws.update.microsoft.com
からの RST パケットです。 エンドポイントは TLS 1.2 接続のみをサポートするため、接続を拒否し、リセット応答を発行します。 WSUS サーバーは、終了する前に複数回試行します。 したがって、このシーケンスは繰り返されます。
問題 3 の解決策
この問題を解決するには、Windows Server 2012 または Windows Server 2012 R2 の最新の月次ロールアップをインストールします。 また、問題 1 の Resolution を適用して 手動インポートの失敗を防ぎます。
問題 4: WSUS が Configuration Manager と統合されている場合、2020 年 7 月以降に同期が失敗する
多くの WSUS インストールは、Microsoft Endpoint Configuration Manager ソフトウェアの更新ポイント (SUP) と統合されています。 2020 年 7 月以降、Surface ドライバーを同期するように Configuration Manager が構成されている場合、同期エラーが発生する可能性があります。
この問題は、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、または Windows Server 2019 を実行している WSUS サーバーで発生します。
問題 4 のトラブルシューティング
この問題が発生すると、次の例のようなエントリがWsyncmgr.logに記録されます。
Calling ImportUpdateFromCatalogSite for driver update GUIDs
Generic exception : ImportUpdateFromCatalogSite failed. Arg = 001d4517-c586-4bb1-9e66-ed6ff8e8d34f. Error =The underlying connection was closed: An unexpected error occurred on a receive.
Generic exception : ImportUpdateFromCatalogSite failed. Arg = 0037641d-bb9b-4530-9568-11e413223106. Error =The underlying connection was closed: An unexpected error occurred on a receive.
また、 %Program Files\Update Services\LogFiles\SoftwareDistribution.log
ファイルには次のエラーが記録されます。
ProcessWebServiceProxyException found Exception was WebException. Action: Retry. Exception Details: System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.ComponentModel.Win32Exception: The client and server cannot communicate, because they do not possess a common algorithm
これらのエラーは、接続が閉じられたことを示します。 この問題は、Configuration Manager で WSUS インポート機能が使用されるために発生します。 そのため、同じ制限があります。
問題 4 の解決策
この問題を解決するには、問題 1 の Resolution を使用。
問題 5: 暗号が制限されているため、2020 年 7 月以降に同期が失敗する
TLS 接続をセキュリティで保護するために、さまざまな暗号を無効にすることができます。 2020 年 7 月以降、WSUS サーバーは WU/MU と同期できなくなります。 また、TLS 1.2 接続のみを受け入れるように https://sws.update.microsoft.com
が変更されると、一部の暗号が削除されます。
この問題は、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、または Windows Server 2019 を実行している WSUS サーバーで発生します。
問題 5 のトラブルシューティング
%Program Files\Update Services\LogFiles\SoftwareDistribution.log
ファイルでは、同期時に次のエラーが記録されます。
ProcessWebServiceProxyException found Exception was WebException. Action: Retry. Exception Details: System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
ただし、これらのエントリは、暗号の問題があるかどうかを判断するのに役立ちません。
このような場合は、ネットワーク キャプチャを使用するか、適用されたグループ ポリシー オブジェクト (GPO) を確認します。 適用された GPO を確認するには、管理者特権のコマンド プロンプトで次のコマンドを実行します。
gpresult /scope computer /h GPReport.html
ブラウザーでGPReport.htmlを開きます。
SSL 暗号スイートの順序と、SSL 暗号スイート設定を検索します。 通常、この設定は構成されていません。 構成されている場合は、WU/MU に共通の暗号がないため、問題が発生する可能性があります。
2020 年 8 月の時点で、 https://sws.update.microsoft.com
では次の暗号がサポートされています。
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Note
この一覧は、テクノロジの向上に伴って暗号が徐々に弱くなるため、時間の経過と同時に変化します。
GPO が適用され、これらの暗号のいずれかが指定されていない場合、WU/MU との通信は失敗します。
次のスクリーンショットは、ネットワーク キャプチャを示しています。
ネットワーク キャプチャでは、フレーム 400 は TLS 1.2 を使用するクライアント Hello パケットです。 フレームの詳細は、クライアントによって送信された暗号を示します。 フレーム 404 は、 https://sws.update.microsoft.com
からの RST パケットです。 共通の暗号がないため、同期は失敗します。
問題 5 の解決策
この問題を解決するには、次の手順に従ってください。
gpresult
の出力を使用して、SSL 暗号スイートの順序を指定する GPO を特定し、GPO を削除します。 または、https://sws.update.microsoft.com
でサポートされている暗号を含むように変更します。Windows Server 2016 および Windows Server 2019 の場合は、次のいずれかの暗号を含めます。
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Windows Server 2012 および 2012 R2 の場合は、次のいずれかの暗号を含めます。
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
GPO によって暗号が設定されていない場合は、次のレジストリ サブキーを見つけます。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002
レジストリ キーの Functions 値に必要な暗号のいずれかを追加します。
WSUS サーバーを再起動します。
手動インポートの失敗を防ぐには、問題 1 の Resolution も適用。
正常な接続
次のスクリーンショットは、Windows Server 2016 WSUS サーバーが更新プログラムを同期したときに正常に接続されたことを示しています。
ネットワーク キャプチャでは、フレーム 191 は TLS 1.2 を使用するクライアント Hello パケットです。 フレームの詳細は、クライアントによって送信された暗号を示します。 フレーム 195 は、エンドポイントからのサーバー Hello パケットです。 WU によって選択された TLSCipherSuite はTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384。 サーバー証明書は、サーバー Hello パケットでも送信されます。
追加の接続設定は、フレーム 196 から 203 で行われます。 アプリケーション (WSUS) と https://sws.update.microsoft.com
エンドポイントによるデータ転送は、フレーム 207 で開始されます。
プロキシ サーバーに関する注意事項
プロキシ サーバーを使用する場合、ネットワーク キャプチャの外観は異なります。 WSUS サーバーがプロキシに接続すると、接続先の https://sws.update.microsoft.com
、 https://sws1.update.microsoft.com
、または https://fe2.update.microsoft.com
を含む CONNECT 要求が表示される場合があります。 WSUS は、サポートされている暗号を使用してクライアント Hello パケットを発行します。 TLS のバージョンが間違っているために接続が成功しなかった場合、または共通の暗号がない場合は、RST パケットが表示される場合と表示されない場合があります。 プロキシは、接続の終了を示すために FIN をクライアントに返す傾向があります。 ただし、これはすべてのプロキシ サーバーに当てはまるとは言えない場合があります。 一部のプロキシ サーバーでは、RST パケットまたは他の何かが送信されます。
WSUS は WU エンドポイントと直接通信しないため、プロキシを使用する場合は、プロキシ サーバーの内部インターフェイスの IP アドレスを知っている必要があります。 プロキシ サーバーの IP アドレスを取得できない場合は、ネットワーク キャプチャで CONNECT 要求を検索し、Windows Update エンドポイントの URL を検索します。