しばやん雑記

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

App Service Managed Certificate が Apex ドメインに対応したので試した

Apex ドメインに対応するまでは GA しないオーラが漂っていた App Service Managed Certificate ですが、Ignite 合わせと見せつつ全く関係ない感じで Apex ドメインに対応したと発表がありました。

最初に公開されたのが 2019/11 なので非常に長いプレビューになっています。GA は未定っぽいです。

公式ブログの内容と実際に試した結果から、分かったことを簡単にまとめておきました。Web アプリケーション向けには問題なく使えると思っていますが、注意点も少しあります。

  • http-token を使ったドメイン所有の検証を行っている
    • 公式ブログの通り IP Restriction を使っている場合は検証リクエストが通らないので失敗する
  • Windows / Linux に関係なく利用可能
    • Web Worker ではなく前段の ARR で検証リクエストを処理しているっぽい
    • つまり Easy Auth の影響は恐らく受けない(Easy Auth は Web Worker での処理なので)
  • Azure Functions (Consumption 以外) でも使えるはず
    • Consumption Plan はそもそも A レコードが使えないので関係ない
  • サブドメインに関してはこれまで通り CNAME が必須
    • A レコード + http-token に対応ではなく、Apex ドメイン + http-token に対応という形
  • Traffic Manager を入れた構成には非対応
    • http-token を使った検証がどのインスタンスに振られるか不定だからだと思う
  • ワイルドカード証明書は未対応
    • 今後も対応されない気がする
  • App Service Environment も非対応のままっぽい
    • http-token を使った方法なら対応できそうな気もするが謎

前段の ARR でこういった処理を行えるのは App Service のメリットという感じがしますね。わかりやすい仕組みなのに、対応までに非常に時間がかかったのはちょっと謎です。

汎用的な作りにはなっておらず、完全に Apex ドメインに特化した実装のようなので、サブドメインに関しては CNAME 必須のままでした。試すと以下のようなエラーになるので、若干わかりにくいかも知れません。

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

普通に Apex ドメインに対して使う分にはサクッと発行できるので、要件が合う場合には積極的に使って行けばよいと思います。個人的には最初の更新が上手くいくのかを、見届けてからかなという気持ちです。

実際に Linux の App Service を新しく作成して、Apex ドメインへの証明書発行を試しておきました。これまでは Apex ドメインはエラーになっていたはずですが、問題なくチェックが通ります。

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

ちなみにワイルドカードドメインは一覧に表示すらされません。後は Create を実行するだけで証明書が作成されますが、自分が何回か試した限りでは 3,4 分ぐらいかかりました。

発行された証明書はこれまで通り DigiCert 発行の 180 日有効なものでした。例によって CAA には注意。

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

単純な証明書であればこれで十分という感じですね。実際に更新が上手くいくか若干怪しいと思っていますが、最悪手動で再発行もできるので何とでもなります。

Traffic Manager が必要なシナリオや、ワイルドカードや SANs といった複雑な証明書が必要な場合は、これまで通り購入するか Let's Encrypt などを使うことになると思います。