Windows Server 2016 へのアップグレードが行われた際に、一部のリージョンでテスト的に有効化されていた HTTP/2 がグローバルで GA になってました。例によって ASE にはまだデプロイされていないみたいですが、近いうちに対応するみたいです。
HTTP/2 はデフォルトで有効化されているわけではなく、設定から有効にする必要があります。この辺りはブログにも書いてるので省略。
まだ Azure Portal から設定できないので、ARM Explorer を使って設定を変えます。
HTTP/2 よりも気になる設定が増えているので、さらっと試しておきました。とりあえず適当な Web App で HTTP/2 を有効にしたので、適当にブラウザで確認しておきました。
設定を行う前は HTTPS となっています。
設定後は HTTP/2 と表示が変わっているので、ちゃんと有効化されています。今後もデフォルトで有効化という流れにはならないと思うので、必要なケースで都度有効化しましょう。
HTTP/2 と言えば ASP.NET 4.6 から Server Push に対応していたので、App Service でも使えるか確認しておきました。結論としては使えませんでした。
App Service の HTTP/2 は ARR 部分での対応っぽいので、ARR <=> Web Worker の部分が HTTP/2 になっていないので Server Push が使えないのかも知れません。リバースプロキシが絡むと少し面倒ですね。
具体的には Response.PushPromise を呼び出した瞬間にエラーとなってしまいました。
ARR が Preload に対応していれば問題なく使えるようになりそうですが、これに関しては割と望み薄ですね。Service Worker 周りで App Service を使いたい場合に困るケースがあるかも知れませんね。
HTTP/2 に関してはこのくらいにして、もう一つ増えていた minTlsVersion について適当に試しておきました。正式リリースされていないので挙動は不安定っぽいので注意。
デフォルトでは TLS 1.0 が有効になってますが、これを 1.2 に変えると TLS 1.2 のみを有効に出来るはずです。出来るはずなのですが、今の挙動はよくわからない感じです。
謎挙動ですが、この時点で SSL Labs のテスト的には TLS 1.2 のみ有効という扱いになってました。なので、HSTS を追加すれば App Service でも A+ 評価を得ることが出来るはずです。
Web.config を弄って適当に Strict-Transport-Security ヘッダーを追加します。
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <httpProtocol> <customHeaders> <clear /> <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" /> </customHeaders> </httpProtocol> </system.webServer> </configuration>
これでテストを再実行すると無事に A+ 評価になりました。
6 月までには正式リリースされるはずなので、その時には再度挙動を確認しておきたいと思います。