しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Server Technical Preview の IIS というか http.sys の HTTP/2 有効 / 無効を切り替える方法

Windows Server Technical Preview の IIS というか http.sys が HTTP/2 に対応していたらしい - しばやん雑記 では IIS に HTTP/2 周りの設定が無いと書きましたが、色々とほげほげした結果 http.sys には設定が見つかったので紹介しておきます。

Microsoft のサポートサイトに http.sys のレジストリ設定について記載されてます。

Windows 用の Http.sys レジストリ設定

ここには書いていませんが、HTTP/2 関連でこっそりと以下の 2 種類のキーが追加されているようでした。

  • EnableHttp2Tls
  • EnableHttp2Cleartext

名前から察するに EnableHttp2Tls は https 上の HTTP/2 を有効にするかどうか、EnableHttp2Cleartext は非 https でも HTTP/2 を有効にするかどうか、もしくは暗号化なしで HTTP/2 通信を行うかのどちらかだと思うのですが、正直良く分かりません。

f:id:shiba-yan:20141007144353p:plain

とりあえずレジストリエディタを使って設定を書き込みます。デフォルトでは HTTP/2 が有効になっているので値を 0 にして HTTP/2 が使われなくなることを確認してみます。

レジストリで値を変更した後には net stop http を実行して http サービスを止めてから、net start http を実行して IIS を立ち上げなおしたら反映されるようです。

f:id:shiba-yan:20141007145853p:plain

前回と比べてレジストリの値を変更しただけですが、ちゃんと HTTP/2 が無効になっているのが分かります。

HTTP/2 は https だけではなく HTTP Upgrade を利用した http からの切り替えも対応しているらしいので色んなブラウザで試してみましたが、残念ながら今のところはブラウザ側としても非対応のようです。

将来的には Azure の Web サイトや Blob といった各種サービスでも、OS のアップデートが内部的に行われたタイミングで自動的に HTTP/2 が有効になる可能性がありそうです。