Azure App ServiceにLet's Encryptを導入する
常時HTTPSが主流になりつつあるので、Azure App Serviceで運用しているサイトもLet’s Encryptを使ってサクッとHTTPS化を済ませたいところです。
App Serviceには「Site Extentions」という機能を追加できる仕組みがあり、Let’s Encrypt用の機能拡張もGithubで開発されているものが使えるようになっています。
前提条件
App ServiceにLet’s Encryptを導入するには、以下の前提条件をクリアしている必要があります。
- カスタムドメインを導入している(xxx.azurewebsites.net のまま使う場合はデフォルトで証明書が付いている)
- Let’s Encryptが発行する証明書でOKである: 取得可能な SSL/TLS証明書の種類
- Azure Active Directory(AAD)に、アプリ登録できる権限を持っていること(またはアプリ登録を依頼できる)
導入手順
詳細は、公式の導入手順の通りなのですが、いくつか重要となるポイントがあるので紹介します。
(なお、公式手順では一部クラシックポータルを利用するようになっていますが、通常のポータルのみで大丈夫です。)
Azure Active Directoryへのアプリ登録(サービスプリンシパルの取得)
[Azure Active Directory]-[アプリの登録]から[追加]でアプリを登録します。
[名前]は任意(この例ではLetsencrypt)、 [サインオンURL]は証明書を適用するサイトのURLを入れておきます。
[Azure Active Directory]に作成されたアプリを選択し、[アプリケーションID(クライアントID)]をコピーしてメモしておきます。
[設定]-[キー]で、キー(シークレット)を作成し保存します。必ず保存直後にキーの値をコピーしてメモしておきます(このタイミングしかコピーできないので注意)。
リソースグループへの権限登録
Azure Active Directoryで作成したアプリをリソースグループに権限登録します。
リソースグループはWebサイト(AppService)が属しているグループです。
もしAppServiceをホストしているAppServiceプランのリソースグループが異なる場合は、そのグループにも権限を登録する必要があります(ここはハマリやすいポイント)。
[リソースグループ]-[アクセス制御(IAM)]-[追加]で、役割を「共同作成者」にユーザをAADで登録したアプリケーションを選択します。
App Serviceへの拡張機能のインストール
事前準備が整ったので、AppServiceにLet’s Encrypt拡張機能をインストールしていきます。
[App Service]-[対象のAppService]-[拡張機能]で、[追加]から「Azure Let’s Encrypt (x64)」または「Azure Let’s Encrypt (x86)」を選択して導入します(32ビットか64ビットはアプリケーション設定で確認できます)。
Let’s Encrypt拡張機能の設定
[拡張機能]-[Azure Let’s Encrypt (x64)]で、[参照]をクリックするとLet’s Encryptの設定画面に遷移します。
設定画面の[Automated Installation (click to expand)]以下のフォームに必要事項を入力していきます。
[ClientId]にはAADのアプリ登録でメモした「アプリケーションID」を、[ClientSecret]には同じくメモした「キー」を
貼り付けます。それ以外の項目はポータルにて取得できます。
[NEXT]を実行すると確認画面が出るので、内容を確認して問題無ければ、さらに[NEXT]を実行します。
証明書を取得するホスト名を選択し、メールアドレスを入力、[Request and Install certificate]を実行します。ここでLet’ Encryptのサイトに申請が行われます。
証明書が発行されました!
証明書の適用
最後に発行された証明書をWebサイトに紐付けます。
Let’s Encrypt証明書の有効期間は90日間です。期限が近くなると、Let’s Encryptからメールが送られてくるので、再度管理画面で[Request and Install certificate]を実行すれば継続が完了します(自動更新にはまだ対応していないようです)。