Azure App Serviceでのカスタムドメインの使用と常時SSL化

せっかくWebサイトを作るならAzure App Serviveのアドレスではなく、自分の好きなアドレスを使いたいですね。
連載の11回目は、Azure App Serviceをサービスとして公開するためにドメインを変更します。
また、ドメインを変更するとAzureのデフォルトのSSLは使えなくなるため、自分でSSL証明書を購入してSSL化する必要があります。

カスタムドメイン

Azure App Serviceをカスタムドメイン化するにはドメインを取得する必要があります。
Azure App Serviceではプランにもよりますが、サブドメイン形式を使います。
例:http://wordpress-sample.slowat.net

ドメインの取得とDNS登録

ドメインの取得方法やDNSの登録方法はドメイン管理会社毎に違うので扱いませんが、個人で利用する場合は「ムームードメイン」が扱いやすいです。

ここではDNSに以下が登録されたとして話を進めます。

  • サブドメイン:wordpress-sample(全体のドメインはwordpress-sample.slowcat.net)
  • 種別:CNAME
  • ホスト名:slowcat-wordpress-sample.azurewebsites.net(Azure App Serviceのホスト名)

Azure App Serviceのドメイン変更

まずはAzure Portalにアクセスします。
https://portal.azure.com

App Serviceの画面から「カスタムドメイン」⇒「ホスト名の追加」ボタンを押します。

Azure App Serviceへのカスタムドメインの登録

DNSに登録したドメイン名を入力し「検証」ボタンを押します。

Azure App Serviceへのカスタムドメインの登録

ホスト名の利用可否とドメイン所有権に問題なければ「ホスト名の追加」ボタンを押します。

Azure App Serviceへのカスタムドメインの登録

Azure App ServiceのSSL化

WebサイトをSSL化するにはSSL証明書の取得(購入)とAzure App Serviceへの登録が必要です。

SSL証明書の取得

SSL証明書はAzureからも購入できますが、価格が高いのでなるべく安いところから購入しましょう。
何でも良いならドメイン認証の証明書を使いましょう。KingSSLが安いです。

SSL証明書の入手方法は購入先毎に手順が異なるので扱いませんが、基本的に以下の流れになります。

  1. CSR(Certificate Signing Request)の作成
  2. 証明書の購入(作成したCSRを使用)
  3. メールで送られてくる証明書の文字列から証明書を作成

CSRの作成

SSL証明書を作成するには、その基となる情報(CSR)を作成する必要があります。

CSRを作成する方法はいくつかありますが、ネットで調べるとLinuxやApacheを使う手順が多いようです。
ただ、一般的にはWindowsユーザが多いので、WindowsのIISを使う方法を示します。

まずはWindowsPCでIISマネージャ(インターネットインフォメーションサービスマネージャ)を開きます。
IISマネージャがインストールされていない場合はコントロールパネルから「プログラムと機能」⇒「Windowsの機能の有効化または無効化」を選択し、「インターネットインフォメーションサービス」⇒「Web管理ツール」⇒「IIS管理コンソール」のチェックをONにしてインストールします。

「サーバー証明書」をダブルクリックします。

CSRの作成

画面右側の「証明書の要求の作成」をクリックします。

CSRの作成

一般名にドメイン名を入力し、その他は適当な値を入力します。

CSRの作成

ビット長がデフォルトで1024なので、2048に変更します。
※4096ビットの証明書を購入する場合は4096に変更

CSRの作成

適当な保存先を入力して「終了」ボタンを押します。
拡張子は用途がわかりやすいようにcsrにすると良いでしょう。

CSRの作成

CSRファイルが作成できたので、SSL証明書を購入してください。

SSL証明書(PFX)の作成

SSL証明書を購入したらすぐに使えると思うかもしれませんが、実はSSL証明書本体ではなく証明書の中身の文字列を送ってきます。
そこで、メール内の文字列からSSL証明書を作成します。

まずはCERファイルを作成します。
メールの中に「◆証明書+中間証明書(PKCS7形式)」のような場所があるので、拡張子が「cer」のファイルに以下の部分をコピーしてファイルを保存します。

-----BEGIN PKCS7-----
~
-----END PKCS7-----

次に、IISマネージャに戻り、画面右側の「証明書の要求の完了」をクリックします。

証明書の要求の完了

先ほど作成したcerファイルを選択し、フレンドり名に任意の名称を入力します。
フレンドリ名はローカルPCに残るので、何回(何年)も作成すると区別できなくなるので作成した年(複数年有効な証明書の場合は終了年も)を名称に含めておくと良いでしょう。
証明書ストアは「個人」のままにしておきます。

証明書の要求の完了

次に、Windowsのコマンド検索画面から「certlm.msc」と入力してMicrosoft管理コンソールを起動します。
「個人」⇒「証明書」⇒「先ほど作成した証明書」を選択し、右クリックから「すべてのタスク」⇒「エクスポート」を選択します。

pfxファイルの作成

「はい、秘密キーをエクスポートします」を選択します。

pfxファイルの作成

「Personal Information Exchange – PKCS #12」と「すべての拡張プロパティをクスポートする」にチェックを入れます(他はデフォルトのまま)。

pfxファイルの作成

パスワードを適当に入力します。
この値は後でAzureで使用するので控えておいてください。

pfxファイルの作成

適当な保存先を入力します(拡張子はpfx)。

pfxファイルの作成

「完了」ボタンを押してpfxファイルを生成します。

pfxファイルの作成

Azure App Serviceへの登録

作成した証明書(pfxファイル)をAzure App Serviceに登録します。

まずは証明書をAzureにアップロードします。
Azure Portalに戻り、App Serviceの画面から「SSL設定」⇒「プライベート証明書(.pfx)」タブを選択し、「証明書のアップロード」ボタンを押します。

Azure App ServiceへSSL証明書の登録

作成したpfxファイルを選択し、証明書作成時に使用したパスワードを入力して「アップロード」ボタンを押します。

Azure App ServiceへSSL証明書の登録

次に、アップロードした証明書をAzure App Serviceにバインドして有効化します。
「バインド」タブを選択し、「SSLバインディングの追加」ボタンを押します。

Azure App ServiceへSSL証明書の登録

以下を入力して「バインディングの追加」ボタンを押します。

  • ホスト名:Azure App Serviceのカスタムドメイン
  • プライベート証明書の拇印:アップロードした証明書
  • SSLの種類:SNI SSL
Azure App ServiceへSSL証明書の登録

カスタムドメインへのリダイレクト

先ほどまでの設定でカスタムドメイン化とSSL化は終わっています。
ただ、実は元々のApp Serviceのアドレスへもアクセスできるままとなっており、アクセスしてほしくない場合があります。
そこで、元々のアドレスにアクセスしたらカスタムドメインにリダイレクトするように設定してしまいます。

App Serviceの画面から「App Service Editor」を選択し「移動」ボタンを押します。

App Service Editorで「/wwwroot/web.config」を以下のように変更します。
「RedirectToCustomDomain」の部分のルールを前に配置します。
(最初から設定されているWordPress向けのルールよりも前に配置する)

<rewrite>
  <rules>
    <rule name="RedirectToCustomDomain" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^slowcat-wordpress-sample\.azurewebsites\.net$" />
      </conditions>
      <action type="Redirect" url="https://wordpress-sample.slowcat.net/{R:1}" redirectType="Permanent" />
    </rule>

動作確認

SSLを有効化したカスタムドメインにアクセスしてみましょう。
ブラウザのアドレス部に鍵マークが表示され、WordPressの画面が表示されれば成功です。

https://カスタムドメイン

Azure App Serviceでのカスタムドメインと常時SSL化の結果

同様に、元のドメインにアクセスしてもカスタムドメインにリダイレクトされることを確認します。
例:https://slowcat-wordpress-sample.azurewebsites.net/ ⇒ https://wordpress-sample.slowcat.net/

以上でAzure App Serviceはカスタムドメインを適用し、SSL化できました。
次回はAzure CDNのドメインを変更してSSL化します。