Azure App Service の SSL 証明書を購入して構成するBuy and configure an SSL certificate for Azure App Service

このチュートリアルでは、Azure Key Vault に App Service 証明書を作成 (購入) することによって Web アプリをセキュリティで保護し、それを App Service アプリにバインドする方法を示します。This tutorial shows you how to secure your web app by creating (purchasing) an App Service certificate in Azure Key Vault and then bind it to an App Service app.

ヒント

App Service 証明書はあらゆる Azure Service と Azure ではないサービスで利用できます。App Service に限定されません。App Service Certificates can be used for any Azure or non-Azure Services and is not limited to App Services. そのためには、任意の場所で利用できるように、App Service 証明書のローカル PFX コピーを作成する必要があります。To do so, you need to create a local PFX copy of an App Service certificate that you can use it anywhere you want. 詳しくは、App Service 証明書のローカル PFX コピーの作成に関する記事をご覧ください。For more information, see Creating a local PFX copy of an App Service Certificate.

前提条件Prerequisites

この攻略ガイドに従うには:To follow this how-to guide:

Web アプリの準備Prepare your web app

カスタム SSL 証明書 (サードパーティ証明書または App Service 証明書) を Web アプリにバインドするには、App Service プランBasicStandardPremiumIsolated のいずれかのレベルである必要があります。To bind a custom SSL certificate (a third-party certificate or App Service certificate) to your web app, your App Service plan must be in the Basic, Standard, Premium, or Isolated tier. この手順では、Web アプリが、サポートされている価格レベルであることを確認します。In this step, you make sure that your web app is in the supported pricing tier.

Azure にログインするLog in to Azure

Azure Portalを開きます。Open the Azure portal.

左側のメニューで [App Services] をクリックした後、Web アプリの名前をクリックします。From the left menu, click App Services, and then click the name of your web app.

Web アプリの選択

Web アプリの管理ページが表示されます。You have landed in the management page of your web app.

価格レベルの確認Check the pricing tier

Web アプリ ページの左側のナビゲーションで [設定] セクションまでスクロールし、[スケール アップ (App Service のプラン)] を選択します。In the left-hand navigation of your web app page, scroll to the Settings section and select Scale up (App Service plan).

スケール アップ メニュー

Web アプリが F1 レベルまたは D1 レベルに含まれていないことを確認します。Check to make sure that your web app is not in the F1 or D1 tier. Web アプリの現在のレベルは、ダーク ブルーのボックスで強調表示されます。Your web app's current tier is highlighted by a dark blue box.

価格レベルの確認

カスタム SSL は、F1 レベルまたは D1 レベルではサポートされていません。Custom SSL is not supported in the F1 or D1 tier. スケール アップする必要がある場合は、次のセクションの手順に従います。If you need to scale up, follow the steps in the next section. それ以外の場合は、[スケール アップ] ページを閉じて、「SSL 証明書のバインド」に進んでください。Otherwise, close the Scale up page and skip to Upload and bind your SSL certificate.

App Service プランのスケール アップScale up your App Service plan

非 Free レベルのいずれかを選びます (B1B2B3、または運用カテゴリのいずれかのレベル)。Select any of the non-free tiers (B1, B2, B3, or any tier in the Production category). その他のオプションについては、[See additional options](その他のオプションを参照する) をクリックします。For additional options, click See additional options.

[Apply] をクリックします。Click Apply.

価格レベルの選択

次の通知が表示されたら、スケール操作は完了です。When you see the following notification, the scale operation is complete.

スケール アップの通知

証明書の注文を開始するStart certificate order

App Service 証明書の作成ページで、App Service 証明書の注文を開始します。Start an App Service certificate order in the App Service Certificate create page.

証明書の作成

次の表を使用して、証明書を構成できます。Use the following table to help you configure the certificate. 完了したら、[作成] をクリックします。When finished, click Create.

SettingSetting 説明Description
NameName App Service 証明書のフレンドリ名。A friendly name for your App Service certificate.
ネイキッド ドメインのホスト名Naked Domain Host Name この手順は、購入プロセスの最も重要な部分の 1 つです。This step is one of the most critical parts of the purchase process. アプリにマップしたルート ドメイン名を使用します。Use the root domain name that you have mapped to your app. ドメイン名の先頭に www を "付けない" でください。Do not prepend the domain name with www.
サブスクリプションSubscription Web アプリがホストされているデータ センターです。The datacenter where the web app is hosted.
リソース グループResource group 証明書が含まれるリソース グループ。The resource group that contains the certificate. 新しいリソース グループを使用するか、App Service アプリと同じリソース グループなどを選択できます。You can use a new resource group or select the same resource group as your App Service app, for example.
証明書 SKUCertificate SKU 作成する証明書の種類 (標準の証明書またはワイルドカード証明書) を決定します。Determines the type of certificate to create, whether a standard certificate or a wildcard certificate.
法律条項Legal Terms クリックして法律条項に同意したことを確認します。Click to confirm that you agree with the legal terms.

Azure Key Vault に格納するStore in Azure Key Vault

証明書の購入プロセスの完了後、この証明書の使用を開始する前に完了する必要のある手順がまだいくつかあります。Once the certificate purchase process is complete, there are few more steps you need to complete before you can start using this certificate.

[App Service 証明書] ページで証明書を選択し、[証明書の構成] > [手順 1: 格納] をクリックします。Select the certificate in the App Service Certificates page, then click Certificate Configuration > Step 1: Store.

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

Key Vault は、クラウド アプリケーションやサービスで使用される暗号化キーとシークレットを保護するための Azure サービスです。Key Vault is an Azure service that helps safeguard cryptographic keys and secrets used by cloud applications and services. これは App Service 証明書に対して選択するストレージです。It's the storage of choice for App Service certificates.

[Key Vault の状態] ページで [Key Vault リポジトリ] をクリックして、新しいコンテナーを作成するか、既存のコンテナーを選択します。In the Key Vault Status page, click Key Vault Repository to create a new vault or choose an existing vault. 新しいコンテナーの作成を選択する場合は、次の表を使用してコンテナーを構成し、[作成] をクリックします。If you choose to create a new vault, use the following table to help you configure the vault and click Create. 同じサブスクリプションおよびリソース グループ内に新しい Key Vault を作成します。see to create new Key Vault inside same subscription and resource group.

SettingSetting 説明Description
NameName 英数字とダッシュで構成される一意の名前。A unique name that consists for alphanumeric characters and dashes.
リソース グループResource group 推奨事項として、App Service 証明書と同じリソース グループを選択します。As a recommendation, select the same resource group as your App Service certificate.
LocationLocation App Service アプリと同じ場所を選択します。Select the same location as your App Service app.
[価格レベル] Pricing tier 詳しくは、Azure Key Vault の価格の詳細に関するページをご覧ください。For information, see Azure Key Vault pricing details.
アクセス ポリシーAccess policies コンテナー リソースに対するアプリケーションと許可されるアクセス権を定義します。Defines the applications and the allowed access to the vault resources. 後で「さまざまなアプリケーションにキー コンテナーへのアクセス許可を付与する」の手順に従って構成できます。You can configure it later, following the steps at Grant several applications access to a key vault.
仮想ネットワーク アクセスVirtual Network Access 特定の Azure 仮想ネットワークへのコンテナー アクセスを制限します。Restrict vault access to certain Azure virtual networks. 後で「Azure Key Vault のファイアウォールと仮想ネットワークを構成する」の手順に従って構成できますYou can configure it later, following the steps at Configure Azure Key Vault Firewalls and Virtual Networks

コンテナーを選択したら、[Key Vault リポジトリ] ページを閉じます。Once you have selected the vault, close the Key Vault Repository page. [ストア] オプションに、成功を示す緑色のチェック マークが表示されます。The Store option should show a green check mark for success. 次の手順のためにページは開いたままにしておきます。Keep the page open for the next step.

ドメインの所有権を検証するVerify domain ownership

最後の手順で使用した [証明書の構成] ページで、[手順 2: 確認] をクリックします。From the same Certificate Configuration page you used in the last step, click Step 2: Verify.

[App Service の確認] を選択します。Select App Service Verification. Web アプリに既にドメインをマップしたので (「前提条件」を参照)、既に確認されています。Since you already mapped the domain to your web app (see Prerequisites), it's already verified. [確認] をクリックして、この手順を完了します。Just click Verify to finish this step. "証明書はドメイン確認済みです" というメッセージが表示されるまで、[最新の情報に更新] をクリックします。Click the Refresh button until the message Certificate is Domain Verified appears.

注意

4 種類のドメイン検証方法がサポートされています。Four types of domain verification methods are supported:

  • App Service - ドメインが同一のサブスクリプション内で既に App Service アプリにマップされている場合に最も便利なオプションです。App Service - The most convenient option when the domain is already mapped to an App Service app in the same subscription. この方法は、App Service アプリがドメインの所有権を既に確認済みである事実を利用しています。It takes advantage of the fact that the App Service app has already verified the domain ownership.
  • ドメイン - Azure から購入した App Service ドメインを確認します。Domain - Verify an App Service domain that you purchased from Azure. Azure は確認 TXT レコードを自動的に追加し、プロセスを完了します。Azure automatically adds the verification TXT record for you and completes the process.
  • メール - ドメイン管理者に電子メールを送信することによってドメインを確認します。Mail - Verify the domain by sending an email to the domain administrator. 手順は、オプションを選択したときに提供されます。Instructions are provided when you select the option.
  • 手動 - HTML ページ (標準証明書のみ) または DNS TXT レコードを使用してドメインを確認します。Manual - Verify the domain using either an HTML page (Standard certificate only) or a DNS TXT record. 手順は、オプションを選択したときに提供されます。Instructions are provided when you select the option.

アプリに証明書をバインドするBind certificate to app

Azure portal の左側のメニューから、[App Services] > [<your_ app>] を選択します。In the Azure portal, from the left menu, select App Services > <your_ app>.

アプリの左側のナビゲーションから、[SSL 設定] > [プライベート証明書 (.pfx)] > [App Service 証明書のインポート] を選択します。From the left navigation of your app, select SSL settings > Private Certificates (.pfx) > Import App Service Certificate.

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

購入した証明書を選択します。Select the certificate that you just purchased.

証明書がインポートされたら、それをアプリ上のマップされたドメイン名にバインドする必要があります。Now that the certificate is imported, you need to bind it to a mapped domain name in your app. [バインド] > [SSL バインディングの追加] を選択します。Select Bindings > Add SSL Binding.

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

次の表を使用して、[SSL バインディング] ダイアログでバインディングを構成してから、[バインディングの追加] をクリックします。Use the following table to help you configure the binding in the SSL Bindings dialog, then click Add Binding.

SettingSetting 説明Description
ホスト名Hostname SSL バインディングを追加するドメイン名。The domain name to add SSL binding for.
プライベート証明書のサムプリントPrivate Certificate Thumbprint バインドする証明書。The certificate to bind.
SSL の種類SSL Type
  • SNI SSL - 複数の SNI ベースの SSL バインディングを追加できます。SNI SSL - Multiple SNI-based SSL bindings may be added. このオプションでは、複数の SSL 証明書を使用して、同一の IP アドレス上の複数のドメインを保護できます。This option allows multiple SSL certificates to secure multiple domains on the same IP address. 最新のブラウザーのほとんど (Inernet Explorer、Chrome、Firefox、Opera など) が SNI をサポートしています (ブラウザーのサポートに関するより包括的な情報については、「Server Name Indication」を参照してください)。Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (find more comprehensive browser support information at Server Name Indication).
  • IP ベースの SSL - IP ベースの SSL バインドを 1 つだけ追加することができます。IP-based SSL - Only one IP-based SSL binding may be added. このオプションでは、SSL 証明書を 1 つだけ使用して、専用のパブリック IP アドレスを保護します。This option allows only one SSL certificate to secure a dedicated public IP address. バインディングを構成した後、「IP SSL の A レコードの再マップ」の手順に従います。After configure the binding, follow the steps in Remap A record for IP SSL.

HTTPS アクセスを確認するVerify HTTPS access

HTTP://<domain_name> ではなく HTTPS://<domain_name> を使用してアプリにアクセスし、証明書が正しく構成されていることを確認します。Visit your app using HTTPS://<domain_name> instead of HTTP://<domain_name> to verify that the certificate has been configured correctly.

キーを更新して証明書を同期するRekey and sync certificate

証明書のキーを更新する必要が生じた場合は、[App Service 証明書] ページで証明書を選択し、左側のナビゲーションから [キー更新と同期] を選択します。If you ever need to rekey your certificate, select the certificate in the App Service Certificates page, then select Rekey and Sync from the left navigation.

[キー更新] ボタンをクリックして処理を開始します。Click Rekey Button to initiate the process. 処理が完了するまでに 1 ~ 10 分かかることがあります。This process can take 1-10 minutes to complete.

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

証明書のキーを更新すると、証明機関から発行された新しい証明書が展開されます。Rekeying your certificate rolls the certificate with a new certificate issued from the certificate authority.

証明書の更新Renew certificate

任意の時点で証明書の自動更新をオンにするには、[App Service 証明書] ページで証明書を選択し、左側のナビゲーションで [自動更新の設定] をクリックします。To turn on automatic renewal of your certificate at anytime, select the certificate in the App Service Certificates page, then click Auto Renew Settings in the left navigation.

[オン] を選択して、[保存] をクリックします。Select On and click Save. 自動更新をオンにすると、証明書は有効期限の 60 日前に自動更新を開始できます。Certificates can start automatically renewing 60 days before expiration if you have automatic renewal turned on.

証明書を手動で更新するには、[手動更新] をクリックします。To manually renew the certificate instead, click Manual Renew. 有効期限の 60 日前に、証明書の手動更新を要求できます。You can request to manually renew your certificate 60 days before expiration.

注意

手動更新か自動更新かに関係なく、更新された証明書は自動的にはアプリにバインドされません。The renewed certificate is not automatically bound to your app, whether you renewed it manually or it renewed automatically. アプリにバインドする方法については、「証明書の更新」をご覧ください。To bind it to your app, see Renew certificates.

スクリプトで自動化するAutomate with scripts

Azure CLIAzure CLI

#!/bin/bash

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

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

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

# Create a web app.
az webapp create --name $webappname --resource-group $resourceGroup \
--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 $resourceGroup \
--hostname $fqdn

# Upload the SSL certificate and get the thumbprint.
thumbprint=$(az webapp config ssl upload --certificate-file $pfxPath \
--certificate-password $pfxPassword --name $webappname --resource-group $resourceGroup \
--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 $resourceGroup

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

PowerShellPowerShell

$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

その他のリソースMore resources