kokoni

クラウドおじさんの備忘録

Azure App Service free Managed Certificate for SSL/TLSを試してみた

本記事はAzure Advent Calendar 2019の2日目の投稿になります。

qiita.com

Ignite 2019の発表にもありましたAzure App Service free Managed Certificate for SSL/TLSがPublic Previewになったので試した内容を記載していきます。

azure.microsoft.com

docs.microsoft.com

この機能を利用するとAzure WebAppsのカスタムドメインに無料のSSLを非常に簡単にバインドできるので、スタートアップや趣味サイトなどのライトに運営したいサイトに向いている機能だと思います。

※本記事は2019年12月2日時点の情報になります。

Azure App Service free Managed Certificate for SSL/TLSについて

無料の証明書はDigiCert社のものが発行されます。Azureサービスによって提供されているSSL証明書はほぼDigiCert社の発行したものを利用してます。試しにAzure Storageの公開エンドポイントの証明書を見てみるとDigiCert社発行のものだとわかります。

MS Docsに記載されているとおり現在は下記が非サポートになります。

ワイルドカード証明書には対応していないのでサブドメインごとに証明書を発行してバインドする必要があります。 ネイキッドドメインには利用できないためWebAppsでホスト名のない「hoge.com」等を指定している場合は適応することができません。

有効期限は作成日から6か月になります。

設定方法

ここでは設定方法について説明していきます。

まず前提としてWebAppsにカスタムドメインを設定したサイトを構築してください。カスタムドメインを設定しただけだと下図のように「保護されていない通信」と表示されますのでSSL証明書を設定していきましょう。

f:id:kingkino:20191201150734p:plain

まずはAzuePortal画面で対象のWebAppsの管理画面で「カスタムドメイン」を確認します。セキュリティ保護が設定されていないことを確認しましょう。

f:id:kingkino:20191201150513p:plain

次に「TLS/SSLの設定」に移動します。タブから「秘密キー証明書(.pfx)」を選択し「App Sercvice マネージド証明書の作成」を選択します。

f:id:kingkino:20191201150540p:plain

作成用のブレードが表示されるので対象となるドメインを選択します。これは先にも説明した通りワイルドカード証明書に対応していないためホスト名毎に作成する必要があるためです。任意のホスト名を選択したら作成ボタンを選択します。

f:id:kingkino:20191201150553p:plain

証明書の作成が完了すると一覧に表示されます。サムプリントと有効期限が表示されます。先にも記載しましたが有効期限は作成日より6か月後になります。

f:id:kingkino:20191201150607p:plain

次に作成した証明書をカスタムドメインにバインドします。「カスタムドメイン」の一覧からバインディングの追加を選択します。作成した証明書を選択しTLS/SSLの設定の種類には「SNI SSL」を選択します。「SNI SSL」を選択した理由はCNAMEベースでカスタムドメインをあてているからです。

f:id:kingkino:20191201150619p:plain

正常にバインドされれば対象のカスタムドメインSSL状態がセキュアになっていることが一覧からわかると思います。

f:id:kingkino:20191201150631p:plain

証明書のバインドが正常に完了したらサイトを確認します。「保護されていない通信」の表記が外れてセキュアな状態になっていることが確認できると思います。

f:id:kingkino:20191201150647p:plain

これで設定は完了です。

まとめ

無料で使えるので自前で用意した証明書やAzure App Service Domainで購入した証明書を利用する手間と費用を考えると利用しない手はないと思います。

懸念としては有効期間の6か月が経過した後どうなるのかがまだわかってないことです。 有効期限切れの事前通知があるのだろうかとか。 将来的に自動更新機能が付与されるとありがたいのですが無料なのでそこまで用意されるかはわかりません。 LogicAppsとかAutomate系のサービス利用して通知や自動更新する仕組みを作るのもありだとは思います。

見落としていたのですが有効期限の1か月前にAppService側で証明書の有効期限を自動更新してくれるようです。 コメントでのご指摘ありがとうございました。

本格的なサイト運用で利用するのであればLet's Encryptを利用したほうが今はまだよさそうです。 とはいえAzureでワンストップで管理できるのは便利なので期待の機能といえます。 GAする頃には機能が増えているといいなぁ。