Azure App Service の SSL 証明書を購入して構成する

このチュートリアルでは、Azure App Service の SSL 証明書を購入し、Azure Key Vault に安全に格納して、カスタム ドメインに関連付けることで、Web アプリをセキュリティで保護します。

手順 1 - Azure にログインする

Azure Portal (http://portal.azure.com) にログインします

手順 2 - SSL 証明書を注文する

SSL 証明書を注文するには、Azure Portal で新しい App Service 証明書を作成します。

証明書の作成

SSL 証明書のフレンドリドメイン名を入力します

注意

これは、購入プロセスの最も重要な部分の 1 つです。 この証明書で保護する正しいホスト名 (カスタム ドメイン) を入力してください。 ホスト名には WWW を付けないでください

サブスクリプションリソース グループ、および証明書の SKU を選択します

警告

App Service 証明書は、同じサブスクリプション内の他の App Services でのみ使用できます。

手順 3 - 証明書を Azure Key Vault に保存する

注意

Key Vault は、クラウド アプリケーションやサービスで使用される暗号化キーとシークレットを保護するための Azure サービスです。

SSL 証明書の購入が完了した後は、[App Service 証明書] リソース ブレードを開く必要があります。

KV に格納する準備完了のイメージを挿入

この証明書の使用を開始する前に完了する必要のある手順がまだいくつかあるため、証明書の状態は [発行保留中] になっています。

[証明書のプロパティ] ブレードの [証明書の構成] をクリックし、[手順 1: 格納] をクリックして Azure Key Vault にこの証明書を格納します。

[Key Vault の状態] ブレードの [Key Vault リポジトリ] をクリックして、この証明書を格納する Key Vault を選択するか、[Key Vault の新規作成] をクリックして同じサブスクリプションとリソース グループに新しい Key Vault を作成します。

注意

最小限の料金でこの証明書を Azure Key Vault に格納できます。 詳細については、Azure Key Vault の価格の詳細に関するページをご覧ください。

この証明書を格納する Key Vault リポジトリを選択すると、[格納] オプションに、成功したことが示されます。

KV の格納成功のイメージを挿入

手順 4 - ドメインの所有権を確認する

注意

App Service 証明書では、ドメイン、メール、手動の 3 種類のドメイン確認がサポートされています。 詳細については、「詳細」セクションを参照してください。

手順 3 で使用したものと同じ [証明書の構成] ブレードで [手順 2: 確認] をクリックします。

ドメイン確認: Azure App Service からカスタム ドメインを購入した場合にのみ、最も便利な方法です。 [確認] ボタンをクリックして、この手順を実行します。

ドメイン確認のイメージを挿入

[確認] をクリックしたら、[確認] オプションに成功したことが示されるまで、[更新] ボタンを使用します。

KV の確認成功のイメージを挿入

手順 5 - App Service アプリに証明書を割り当てる

注意

このセクションの手順を実行する前に、アプリにカスタム ドメイン名が関連付けられている必要があります。 詳細については、「Azure App Service のカスタム ドメイン名の構成」を参照してください。

Azure Portal で、ページの左側にある [App Service] オプションをクリックします。

この証明書を割り当てるアプリの名前をクリックします。

[設定]で、[SSL 証明書] をクリックします。

[App Service 証明書のインポート] をクリックして、購入した証明書を選択します。

証明書インポートのイメージを挿入

[SSL のバインディング] セクションで [バインディングの追加] をクリックし、ドロップダウン リストから、SSL でセキュリティ保護するドメイン名、および使用する証明書を選択します。 また、Server Name Indication (SNI)または IP ベースの SSL のどちらを使用するかを選択できます。

SSL バインドのイメージを挿入

変更を保存して SSL を有効にするには、 [Add Binding (バインドの追加)] をクリックします。

注意

IP ベースの SSL を選択し、カスタム ドメインが A レコードを使用して構成されている場合、次の追加の手順を実行する必要があります。 詳細については、「詳細」セクションを参照してください。

ここで、証明書が正しく構成されていることを確認するために、HTTP:// ではなく、HTTPS:// を使用してアプリを参照できる必要があります。

手順 6 - 管理タスク

Azure CLI

#!/bin/bash

fqdn=<replace-with-www.{yourdomain}>
pfxPath=<replace-with-path-to-your-.PFX-file>
pfxPassword=<replace-with-your=.PFX-password>
webappname=mywebapp$RANDOM

# Create a resource group.
az group create --location westeurope --name myResourceGroup

# Create an App Service plan in Basic tier (minimum required by custom domains).
az appservice plan create --name $webappname --resource-group myResourceGroup --sku B1

# Create a web app.
az webapp create --name $webappname --resource-group myResourceGroup \
--plan $webappname

echo "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
read -p "Press [Enter] key when ready ..."

# Before continuing, go to your DNS configuration UI for your custom domain and follow the 
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the 
# hostname "www" and point it your web app's default domain name.

# Map your prepared custom domain name to the web app.
az webapp config hostname add --webapp-name $webappname --resource-group myResourceGroup \
--hostname $fqdn

# Upload the SSL certificate and get the thumbprint.
thumprint=$(az webapp config ssl upload --certificate-file $pfxPath \
--certificate-password $pfxPassword --name $webappname --resource-group myResourceGroup \
--query thumbprint --output tsv)

# Binds the uploaded SSL certificate to the web app.
az webapp config ssl bind --certificate-thumbprint $thumbprint --ssl-type SNI \
--name $webappname --resource-group myResourceGroup

echo "You can now browse to https://$fqdn"

PowerShell

$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# Create a resource group.
New-AzureRmResourceGroup -Name $webappname -Location $location

# Create an App Service plan in Free tier.
New-AzureRmAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName $webappname -Tier Free

# Create a web app.
New-AzureRmWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname

Write-Host "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Read-Host "Press [Enter] key when ready ..."

# Before continuing, go to your DNS configuration UI for your custom domain and follow the 
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the 
# hostname "www" and point it your web app's default domain name.

# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzureRmAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic

# Add a custom domain name to the web app. 
Set-AzureRmWebApp -Name $webappname -ResourceGroupName $webappname `
-HostNames @($fqdn,"$webappname.azurewebsites.net")

# Upload and bind the SSL certificate to the web app.
New-AzureRmWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn `
-CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled

詳細

ドメインの所有権の確認

App Service 証明書では、メールと手動のさらに 2 種類のドメイン確認がサポートされています。

メールによる確認

検証の電子メールは、このカスタム ドメインに関連付けられているメール アドレスに既に送信されています。 メール確認の手順を実行する場合は、この確認メールを開き、確認リンクをクリックします。

メール確認のイメージを挿入

確認メールを再送信する必要がある場合は、[メールの再送信] ボタンをクリックします。

手動による確認

重要

HTML Web ページの確認 (標準の証明書の SKU でのみ動作)

  1. "starfield.html" という名前の HTML ファイルを作成します。

  2. このファイルの内容は、ドメイン確認トークンの名前と正確に同じにする必要があります (ドメインの確認の状態のブレードからトークンをコピーできます)。

  3. ドメイン /.well-known/pki-validation/starfield.html をホストする Web サーバーのルートに、このファイルをアップロードします

  4. 確認が完了したら、[更新] をクリックして証明書の状態を更新します。 検証が完了するまで数分かかる場合があります。

ヒント

curl -G http://<domain>/.well-known/pki-validation/starfield.html を使用してターミナルで確認すると、応答には <verification-token> が含まれます。

DNS TXT レコード検証

  1. DNS マネージャーを使用して、@ サブドメインに、ドメイン確認トークンと同じ値の TXT レコードを作成します。
  2. 確認が完了したら、[更新] をクリックして証明書の状態を更新します。
ヒント

<verification-token>@.<domain> に TXT レコードを作成する必要があります。

App Service アプリに証明書を割り当てる

[IP ベースの SSL] を選択し、カスタム ドメインが A レコードを使用して構成されている場合は、次の追加手順を実行する必要があります。

IP ベースの SSL バインドを構成すると、専用の IP アドレスがアプリに割り当てられます。 この IP アドレスは、アプリの設定の [カスタム ドメイン] ページで確認できます。これは、[ホスト名] セクションの上にあります。 このアドレスは、[外部 IP アドレス] として示されます

IP SSL のイメージを挿入

この IP アドレスは、ドメイン用の A レコードを構成するために以前使用した仮想 IP アドレスとは異なります。 SNI ベースの SSL を使用するように構成する場合、または SSL を使用するように構成しない場合は、このエントリに対してアドレスは表示されません。

ドメイン名レジストラーから提供されるツールを使用して、前の手順の IP アドレスを指定するようにカスタム ドメイン名用の A レコードを変更します。

キーを更新して証明書を同期する

証明書のキーを更新する必要がある場合は、[証明書のプロパティ] ブレードの [キーの更新と同期] オプションを選択します。

[キー更新] ボタンをクリックして処理を開始します。 処理が完了するまでに 1 ~ 10 分かかることがあります。

SSL キー更新のイメージを挿入

証明書のキーを更新すると、証明機関から発行された新しい証明書が展開されます。

次のステップ