Windows のレジストリ設定を Http.sys する

この記事では、Windows のレジストリ設定 Http.sys について説明します。

元の製品バージョン: Windows 8、Windows Server 2012、2008 R2、2008
元の KB 番号: 820129

概要

Windows Server 2008 以降のバージョンでは、Http.sys はハイパーテキスト転送プロトコル (HTTP) 要求を処理するカーネル モード ドライバーです。 特定の要件に従って、いくつかのレジストリ値を構成できます。 [ レジストリ キー ] セクションの表には、これらのレジストリ値に関する次の情報が含まれています。

  • レジストリ キー名
  • 既定値
  • 有効な値範囲
  • レジストリ キー関数
  • 警告コード (該当する場合)

注:

既定の設定以外の設定を使用してレジストリ値を作成および構成するときの潜在的なリスクについては、「 警告コード 」セクションを参照してください。

この記事は上級ユーザーを対象としており、レジストリの知識と、レジストリが変更されたときに関連するリスクについて説明します。

レジストリ キー

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

次のレジストリ キーの下に、次の DWORD レジストリ値を作成できます。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

レジストリ キー 既定値 有効な値範囲 レジストリ キー関数 警告コード
AllowRestrictedChars 0 ブール値 0 以外の場合、Http.sys は、U+0000 - U+001F および U+007F - U+009F 範囲にデコードする要求 URL 内の 16 進エスケープ文字を受け入れます。 0
EnableAggressiveMemoryUsage 0 0
1
非ページ プール メモリを事前に割り当て。 既定では、非ページ プール メモリが 20 MB 未満の場合、HTTP サービスは接続の受け入れを停止します。 この値をレジストリに追加すると、8 MB 未満の非ページ プール メモリが使用可能になると、HTTP サービスは接続の受け入れを停止します。 このレジストリ値を設定すると、Httperr.log ファイル内Connections_refusedエラー数と 503 エラーの数が減る可能性があります。 0
EnableNonUTF8 1 Boolean 0 の場合、Http.sys は UTF-8 でエンコードされた URL のみを受け入れます。 0 以外の場合、Http.sys は ANSI または DBCS でエンコードされた URL も要求で受け入れます。 0
FavorUTF8 1 Boolean 0 以外の場合、Http.sys は常に最初に URL を UTF-8 としてデコードしようとします。その変換が失敗し、 EnableNonUTF8 0 以外の場合、Http.sys ANSI または DBCS としてデコードしようとします。 0 (および EnableNonUTF8 が 0 以外) の場合、Http.sys は ANSI または DBCS としてデコードしようとします。成功しなかった場合は、UTF-8 変換が試行されます。 0
MaxBytesPerSend 65536 1-0xFFFFF (バイト) Http.sys によって使用される TCP ウィンドウ サイズをオーバーライドします。 値を大きくすると、帯域幅が広く待機時間が長いネットワーク環境では、ダウンロード速度が高くなる可能性があります。 0
MaxConnections MAX_ULONG 1024 (1k) - 2031616 (2 MB) 接続 ドライバーの計算を MaxConnections オーバーライドします。 これは主にメモリの関数です。 1
MaxEndpoints 0 0 - 1024 許可されている現在のエンドポイント オブジェクトの最大数。 既定値 0 は、最大値が使用可能なメモリから計算されることを意味します。 1
MaxFieldLength 16384 64 から 65534 (64k - 2) バイト 各ヘッダーの上限を設定します。 MaxRequestBytes を参照してください。 この制限は、URL の約 32,000 文字に変換されます。 1
MaxRequestBytes 16384 256 - 16777216 (16 MB) バイト 要求行とヘッダーの合計サイズの上限を決定します。
既定の設定は 16 KB です。 この値が より MaxFieldLength小さい場合は、 MaxFieldLength 値が調整されます。
1
PercentUAllowed 1 Boolean 0 以外の場合、Http.sys は要求 URL で % uNNNN 表記を受け入れます。 0
UrlSegmentMaxCount 255 0 - 16,383 セグメント URL パス セグメントの最大数。 0 の場合、カウントは の最大値 ULONGで囲まれます。 1
UriEnableCache 1 Boolean 0 以外の場合、Http.sys 応答キャッシュとフラグメント キャッシュが有効になります。 0
UriMaxUriBytes 262144 (バイト) 4096 (4k) - 16777216 (16 MB) バイト この値を超える応答は、カーネル応答キャッシュにキャッシュされません。 1
3
UriScavengerPeriod 120 (秒) 10 - 0xFFFFFFFF 秒 キャッシュ スカベンジャーの頻度を決定します。 と等しい UriScavengerPeriod 秒数でアクセスされていない応答またはフラグメントがフラッシュされます。 1
2
UrlSegmentMaxLength 260 0 ~ 32,766 文字 URL パス セグメント内の最大文字数 (URL 内のスラッシュの間の領域)。 0 の場合は、 の最大値 ULONGで囲まれた長さになります。 1
DisableServerHeader 0 0 ~ 2 このキーは、クライアントに送信する応答に http 応答ヘッダーサーバーを追加することに関して、http.sys がどのように動作するかを制御します。 値 0 (既定値) は、アプリケーションが http.sys するために提供するヘッダー値を使用するか、 の Microsoft-HTTPAPI/2.0 既定値を応答ヘッダーに追加します。 値 1 は、http.sys によって生成された応答 (400、503、およびその他の状態コードで終わる応答) の Server ヘッダーを追加しません。 値 2 を指定すると、http.sys が応答に Server ヘッダーを追加できなくなります。 応答にサーバー ヘッダーが存在する場合は削除されず、存在しない場合は追加されません。 0

INTERNET Server API (ISAPI) アプリケーションまたは IIS でホストされている Common Gateway Interface (CGI) アプリケーションが応答を送信すると、インターネット インフォメーション サービス (IIS) のパフォーマンスが低下する可能性があります。 この問題が発生した場合は、レジストリに MaxBufferedSendBytes DWORD 値を追加できます。

Windows Server 2008 以降のバージョンでは、次のレジストリ キーの下に次の DWORD 値を作成することもできます。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTPFilter\Parameters

レジストリ キー 既定値 有効な値範囲 レジストリ キー関数 警告コード
CertChainCacheOnlyUrlRetrieval 1 0
1
既定では、IIS がクライアント証明書を使用するように構成されている場合、チェーン検証中に AIA ヒントはフォローされません。 この動作は、パフォーマンスとセキュリティ上の理由から発生します。 たとえば、この動作は DoS 攻撃を防ぐのに役立ちます。 ただし、この動作により、AIA 取得が必要な場合に予期しない証明書の拒否が発生する可能性もあります。 この動作をオーバーライドするには、レジストリ キーの下で DWORD パラメーター CertChainCacheOnlyUrlRetrieval を 0 (ゼロ) に HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTPFilter\Parameters 設定します。 該当なし

警告コード

  • 0: リスクなし。
  • 1: このレジストリ キーの変更は危険と見なされます。 このキーにより、Http.sys はより多くのメモリを使用し、悪意のある攻撃の脆弱性が増加する可能性があります。
  • 2: 値が小さいと、キャッシュがより頻繁にフラッシュされる可能性があります。 この動作が発生すると、パフォーマンスに影響する可能性があります。
  • 3: 値を小さくすると、静的コンテンツのパフォーマンスに影響する可能性があります。

レジストリに加えられた変更は、HTTP サービスを再起動するまで有効になりません。 さらに、関連する IIS サービスを再起動する必要がある場合があります。

HTTP サービスを再起動するには、「」と入力し、関連するすべての IIS サービスを次の手順に従います。

  1. [ スタート] を選択し、[ 実行] を選択し、「 Cmd」と入力して、[ OK] を選択します

  2. コマンド プロンプトに net stop http と入力し、Enter キーを押します。

  3. コマンド プロンプトに net start http と入力し、Enter キーを押します。

  4. コマンド プロンプトに net stop iisadmin /y と入力し、Enter キーを押します。

    注:

    IIS 管理 Service サービスに依存するすべての IIS サービスも停止されます。 IIS 管理 サービスを停止すると停止する IIS サービスに注目してください。 次の手順で各サービスを再起動します。

  5. 手順 4 で停止した IIS サービスを再起動します。 これを行うには、コマンド プロンプトで「」と入力 net start servicename し、Enter キーを押します。 コマンドの servicename は、再起動するサービスの名前です。 たとえば、World Wide Web Publishing Service サービスを再起動するには、「」と入力 net start World Wide Web Publishing Serviceし、Enter キーを押します。