Let’s Encrypt を使って Azure Web Apps でのhttps通信を設定する


Azure Web Apps 拡張機能(Site Extention)の「Azure Let's Encryption」を使ってHTTPS通信を設定する方法をまとめておきます(いわゆるSSLを張るというやつです)。goorooの「"Let's Encrypt" Azure Web Apps the Free and Easy Way 」に記載されていることの手順と注意すべき点の解説です。「"Let's Encrypt" Azure Web Apps the Free and Easy Way 」では、一部、Powershell を使って作業していますが、この投稿では、すべて、ポータル作業で実施していますので、より簡単な作業になっていると思います。

前提

  • ここで使用している Azure Let's Encryption のバージョンは 0.4.4 です。将来的に、設定方法が変わる可能性があるかもしれません。
  • App Service Planは、Basic 以上が必要です。
  • 現在、Let's Encryptはパブリックベータ中という事もご留意ください。
  • Let's Encrypt については 本家サイトをご参照ください https://letsencrypt.org/

準備

  • Azure Web Apps の作成
  • カスタムドメインの設定

この2つは、特に迷うことはないとおもいますので、通常通り設定します。

この際、Resource Manger モデルで作業する場合、App Service Plan と Web Apps は同一のリソースグループに入れなければならないという点をご注意ください。同一の App Service Plan を使いながら、複数のウェブサイトを運用しているような場合、ウェブサイト事にリソースグループを別けて運用したりしているかもしれませんが、現時点(0.4.4)の拡張機能では、同一のリソースグループに App Service Plan と Web Apps が存在しないとエラーになります。

大まかな流れ

  1. ストレージアカウントの作成(webjob作業用)
  2. Azure Active Directory でアプリケーションサービスプリンシパルの登録
  3. サービスプリンシパルを Web Apps の共同管理者に設定
  4. Web Apps に必要なアプリケーション設定を追加
  5. Azure Let's Encryption 拡張機能のインストール
  6. Azure Let's Encryption の設定
  1. ストレージアカウントの作成
    拡張機能が利用するストレージのアカウントを作成します。リソースマネージャモデルでもクラシックモデルでもどちらでも構いません。
  2. Azure Active Directory へ、アプリケーションとサービスプリンシパルの登録
    クラシックポータルで、以下の手順でアプリケーションサービスプリンシパルを作成します。
    手順 画面例
    クラシックポータルの左ペインで Azure Active Directory を選択します

    現在のアカクントが所属しているディレクトリを選択し、上部の「アプリケーション」をクリックし、下部の「追加」をクリックします。
    「組織で開発中のアプリケーション」を選択します。
    「WEBアプリケーションやWEB API」を選択し、名前を適当に付けます。
    「サインオンURL」と「アプリケーション ID/URI」を入力します。このURLはどこかで使われるものではないので、http://xxxxxxxxxxxx の様な形式で適当に設定します。どちらも同じURLで構いません。
    アプリケーションが追加されるので、上部の「構成」をクリックします。
    「クライアントID」 をメモします。これが、拡張機能を実行するサービスプリンシパルのIDになります。
    また、「キー」を作成し、このキーもメモします。
    aad07
  3. サービスプリンシパルを Web Apps の共同管理者に設定
    新ポータルで、Web Apps の共同管理者に、先ほど作ったアプリケーションを共同管理者で登録します。Web Apps のペインの右上の「人」マークのところをクリックしてすすめます。ユーザーの追加で、アプリケーション名で検索して追加してください。アプリケーション名は自動的にリストされまませんのでご注意ください。

  4. Web Apps に必要なアプリケーション設定を追加

    この設定は慎重に実施してください。以下の情報をアプリケーション設定として追加します。設定は新ポータルでも、クラシックポータルでも構いません。

    キー
    AzureWebJobsStorage

    作成したストレージアカウントのキーを

    DefaultEndpointsProtocol=https;AccountName={storage account name};AccountKey={storage account key}

    のフォーマットで入力します。新ポータルでは「プライマリ接続文字列」をコピーすれば、上記形式でコピーできますので便利です。

    AzureWebJobsDashboard AzureWebJobsStorage と同一

    letsencrypt:Tenant

    Azure Active Directoryのドメイン名。xxxxxxxxx.onmicrosoft.com の形式。
    letsencrypt:ResourceGroupName

    リソースグループ名

    letsencrypt:SubscriptionId

    サブスクリプションID

    letsencrypt:ClientId

    サービスプリンシパルのクライアントID。手順2で作成。

    letsencrypt:ClientSecret サービスプリンシパルのキー。手順2で作成。

  5. Azure Let's Encryption 拡張機能のインストール・起動

    kuduもしくは新ポータルでAzure Let's Encryption 拡張機能をインストールし、起動します。

  6. Azure Let's Encryption の設定
    アプリケーション設定が正しく行われていれば、必要な設定情報はすでにフォームに入力されていますので、[Next]そのままウィザードを進めます。[Request and Install certificate]の画面では、ターゲットとなるホスト名と連絡先であるメールアドレスを入力し、ウィザードを進めていけば完了です。

 

正しく設定されていれば、サイトにhttpsでアクセスすると、URLの横に正しく鍵マークが表示され、鍵マークをクリックすれば証明書を表示できます。

 

 

Comments (0)

Skip to main content