チュートリアル:Azure App Service への SSL 証明書のアップロードとバインドTutorial: Upload and bind SSL certificates to Azure App Service

Azure App Service では、高度にスケーラブルな自己適用型の Web ホスティング サービスを提供しています。Azure App Service provides a highly scalable, self-patching web hosting service. このチュートリアルでは、信頼できる証明機関から購入したカスタム証明書によって、App Service のカスタム ドメインをセキュリティで保護する方法について説明します。This tutorial shows you how to secure a custom domain in App Service with a certificate that you purchased from a trusted certificate authority. また、お使いのアプリに必要なプライベート証明書およびパブリック証明書をアップロードする方法についても説明します。It also shows you how to upload any private and public certificates your app needs. 完了したら、カスタムの DNS ドメインの HTTPS エンドポイントでアプリにアクセスできるようになります。When you're finished, you'll be able to access your app at the HTTPS endpoint of your custom DNS domain.

カスタム SSL 証明書付きの Web アプリ

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • アプリの価格レベルをアップグレードするUpgrade your app's pricing tier
  • 証明書を使用してカスタム ドメインをセキュリティで保護するSecure a custom domain with a certificate
  • プライベート証明書のアップロードUpload a private certificate
  • パブリック証明書のアップロードUpload a public certificate
  • 証明書の更新Renew certificates
  • HTTPS の適用Enforce HTTPS
  • TLS 1.1/1.2 の適用Enforce TLS 1.1/1.2
  • スクリプトを使って TLS 管理を自動化するAutomate TLS management with scripts

前提条件Prerequisites

このチュートリアルを完了するには、以下が必要です。To complete this tutorial:

プライベート証明書を準備するPrepare a private certificate

ドメインをセキュリティで保護するには、証明書は次のすべての要件を満たしている必要があります。To secure a domain, the certificate must meet all the following requirements:

  • サーバー認証用に構成されているConfigured for Server Authentication
  • 信頼された証明機関によって署名されているSigned by a trusted certificate authority
  • パスワードで保護された PFX ファイルとしてエクスポートされているExported as a password-protected PFX file
  • 少なくとも 2048 ビット長の秘密キーが含まれているContains private key at least 2048 bits long
  • 証明書チェーン内のすべての中間証明書が含まれているContains all intermediate certificates in the certificate chain

ヒント

カスタム SSL 証明書を取得する必要がある場合、Azure portal から直接取得し、お使いのアプリにインポートすることができます。If you need to get a custom SSL certificate, you can get one in the Azure portal directly and import it to your app. App Service 証明書のチュートリアルに従ってください。Follow the App Service Certificates tutorial.

注意

楕円曲線暗号 (ECC) 証明書 は、App Service で使用できますが、この記事では説明しません。Elliptic Curve Cryptography (ECC) certificates can work with App Service but are not covered by this article. ECC 証明書を作成する正確な手順については、証明機関にお問い合わせください。Work with your certificate authority on the exact steps to create ECC certificates.

証明書プロバイダーから証明書を取得した後は、このセクションの手順に従って App Service で使用できるように準備します。Once you obtain a certificate from your certificate provider, follow the steps in this section to make it ready for App Service.

中間証明書を結合するMerge intermediate certificates

証明機関から証明書チェーンの複数の証明書を提供された場合は、それらの証明書を順番に結合する必要があります。If your certificate authority gives you multiple certificates in the certificate chain, you need to merge the certificates in order.

これを行うには、受信した各証明書をテキスト エディターで開きます。To do this, open each certificate you received in a text editor.

結合した証明書用に mergedcertificate.crt という名前のファイルを作成します。Create a file for the merged certificate, called mergedcertificate.crt. テキスト エディターで、このファイルに各証明書の内容をコピーします。In a text editor, copy the content of each certificate into this file. 証明書の順序は、証明書チェーンの順番に従う必要があります。自分の証明書から始まり、ルート証明書で終わります。The order of your certificates should follow the order in the certificate chain, beginning with your certificate and ending with the root certificate. 次の例のようになります。It looks like the following example:

-----BEGIN CERTIFICATE-----
<your entire Base64 encoded SSL certificate>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 1>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 2>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded root certificate>
-----END CERTIFICATE-----

PFX への証明書のエクスポートExport certificate to PFX

結合した SSL 証明書を、証明書の要求と一緒に生成された秘密キーと共にエクスポートします。Export your merged SSL certificate with the private key that your certificate request was generated with.

証明書の要求の生成に OpenSSL を使用した場合、秘密キー ファイルは作成されています。If you generated your certificate request using OpenSSL, then you have created a private key file. 証明書を PFX にエクスポートするには、次のコマンドを実行します。To export your certificate to PFX, run the following command. プレースホルダーの <private-key-file><merged-certificate-file> をそれぞれ、秘密キーのパスとマージされた証明書ファイルに変更します。Replace the placeholders <private-key-file> and <merged-certificate-file> with the paths to your private key and your merged certificate file.

openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>  

メッセージが表示されたら、エクスポートのパスワードを定義します。When prompted, define an export password. このパスワードは、後で SSL 証明書を App Service にアップロードするときに使用します。You'll use this password when uploading your SSL certificate to App Service later.

IIS または Certreq.exe を使用して証明書の要求を生成した場合は、ローカル コンピューターに証明書をインストールした後で証明書を PFX にエクスポートします。If you used IIS or Certreq.exe to generate your certificate request, install the certificate to your local machine, and then export the certificate to PFX.

これで、証明書を App Service にアップロードする準備ができました。You're now ready upload the certificate to App Service.

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. それ以外の場合は、 [スケール アップ] ページを閉じて、「App Service プランのスケール アップ」セクションはスキップしてください。Otherwise, close the Scale up page and skip the Scale up your App Service plan section.

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.

スケール アップの通知

カスタム ドメインをセキュリティで保護するSecure a custom domain

ヒント

カスタム SSL 証明書を取得する必要がある場合、Azure portal から直接取得してアプリにバインドすることができます。If you need to get a custom SSL certificate, you can get one in the Azure portal directly and bind it to your app. App Service 証明書のチュートリアルに従ってください。Follow the App Service Certificates tutorial.

サード パーティ証明書を使用してカスタム ドメインをセキュリティで保護するには、準備されたプライベート証明書をアップロードしてからカスタム ドメインにバインドしますが、このプロセスは App Service によって簡略化されます。To secure a custom domain with a third-party certificate, you upload the prepared private certificate and then bind it to the custom domain, but App Service simplifies the process for you. 次の手順を実行します。Do the following steps:

アプリの左側のナビゲーションで [カスタム ドメイン] をクリックし、次に、セキュリティで保護するドメインに対して [バインディングの追加] をクリックします。Click Custom domains in the left navigation of your app, then click Add binding for the domain you want to secure. ドメインに対して [バインディングの追加] が表示されない場合、それは既にセキュリティで保護され、 [Secure](セキュリティ保護) SSL 状態のはずです。If you don't see Add binding for a domain, then it's already secure and should have a Secure SSL state.

ドメインにバインディングを追加する

[証明書のアップロード] をクリックします。Click Upload Certificate.

[PFX 証明書ファイル] で、PFX ファイルを選択します。In PFX Certificate File, select your PFX file. [証明書のパスワード] で、PFX ファイルのエクスポート時に作成したパスワードを入力します。In Certificate password, type the password that you created when you exported the PFX file.

[アップロード] をクリックします。Click Upload.

ドメインの証明書をアップロードする

Azure が証明書をアップロードして、SSL バインディング ダイアログを起動するのを待ちます。Wait for Azure to upload your certificate and launch the SSL bindings dialog.

SSL バインディング ダイアログで、アップロードした証明書と SSL の種類を選択して、 [バインディングの追加] をクリックします。In the SSL bindings dialog, select the certificate you uploaded and the SSL type, and then click Add Binding.

注意

次の SSL の種類がサポートされています。The following SSL types are supported:

  • SNI ベースの SSL - 複数の SNI ベースの SSL バインディングを追加できます。SNI-based 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. 複数のドメインを保護するには、同じ SSL 証明書を使用してすべてのドメインを保護する必要があります。To secure multiple domains, you must secure them all using the same SSL certificate. これは、SSL バインドの従来のオプションです。This is the traditional option for SSL binding.

ドメインに SSL をバインドする

ドメインの SSL 状態は、現在、 [Secure](セキュリティ保護) に変わっているはずです。The domain's SSL state should now be changed to Secure.

セキュリティで保護されたドメイン

注意

[カスタム ドメイン] での [Secure](セキュリティ保護) 状態とは、それが証明書を使用してセキュリティで保護されているが、App Service はその証明書が自己署名されたものか有効期限が切れているかをチェックしないことを意味します。たとえば、それによって、ブラウザーにエラーや警告が表示されることもあります。A Secure state in the Custom domains means that it is secured with a certificate, but App Service doesn't check if the certificate is self-signed or expired, for example, which can also cause browsers to show an error or warning.

IP SSL の A レコードの再マップRemap A record for IP SSL

アプリで IP ベースの SSL を使用していない場合、カスタム ドメインの HTTPS のテストに関するセクションにスキップしてください。If you don't use IP-based SSL in your app, skip to Test HTTPS for your custom domain.

既定では、アプリは、共有のパブリック IP アドレスを使用します。By default, your app uses a shared public IP address. IP ベースの SSL で証明書をバインドすると、アプリ用の新規の専用 IP アドレスが App Service によって作成されます。When you bind a certificate with IP-based SSL, App Service creates a new, dedicated IP address for your app.

アプリに A レコードをマップした場合は、この新規の専用 IP アドレスでドメイン レジストリを更新します。If you have mapped an A record to your app, update your domain registry with this new, dedicated IP address.

アプリの [カスタム ドメイン] ページが、新規の専用 IP アドレスで更新されます。Your app's Custom domain page is updated with the new, dedicated IP address. この IP アドレスをコピーして、この新しい IP アドレスに A レコードを再マップします。Copy this IP address, then remap the A record to this new IP address.

HTTPS のテストTest HTTPS

この時点で残っている作業は、HTTPS がカスタム ドメインで機能するかどうかを確認することだけです。All that's left to do now is to make sure that HTTPS works for your custom domain. さまざまなブラウザーで https://<your.custom.domain> にアクセスし、アプリの要求を処理できることを確認します。In various browsers, browse to https://<your.custom.domain> to see that it serves up your app.

Azure アプリへのポータル ナビゲーション

注意

アプリで証明書検証エラーが返された場合は、自己署名証明書を使用している可能性があります。If your app gives you certificate validation errors, you're probably using a self-signed certificate.

そうでない場合は、証明書を PFX ファイルにエクスポートするときに中間証明書を含めなかった可能性があります。If that's not the case, you may have left out intermediate certificates when you export your certificate to the PFX file.

証明書の更新Renew certificates

バインディングを削除すると、着信 IP アドレスが変化する場合があります。そのバインディングが IP ベースであっても同様です。Your inbound IP address can change when you delete a binding, even if that binding is IP-based. IP ベースのバインディングに既に存在する証明書を更新するときには、このことが特に重要となります。This is especially important when you renew a certificate that's already in an IP-based binding. アプリの IP アドレスに変更が生じないようにするには、次の手順に従います。To avoid a change in your app's IP address, follow these steps in order:

  1. 新しい証明書をアップロードします。Upload the new certificate.
  2. 古い証明書を削除せずに、新しい証明書を目的のカスタム ドメインにバインドします。Bind the new certificate to the custom domain you want without deleting the old one. これは、古い証明書を削除する代わりに、バインディングを置き換える操作となります。This action replaces the binding instead of removing the old one.
  3. 古い証明書を削除します。Delete the old certificate.

HTTPS の適用Enforce HTTPS

既定では、どなたでも引き続き HTTP を使用してアプリにアクセスできます。By default, anyone can still access your app using HTTP. すべての HTTP 要求を HTTPS ポートにリダイレクトできます。You can redirect all HTTP requests to the HTTPS port.

アプリ ページで、左側のナビゲーションにある [SSL 設定] を選択します。In your app page, in the left navigation, select SSL settings. その後、 [HTTPS のみ] で、 [On] を選択します。Then, in HTTPS Only, select On.

HTTPS の適用

操作が完了すると、アプリを指定する HTTP URL のいずれかに移動します。When the operation is complete, navigate to any of the HTTP URLs that point to your app. 例:For example:

  • http://<app_name>.azurewebsites.net
  • http://contoso.com
  • http://www.contoso.com

TLS バージョンを適用するEnforce TLS versions

アプリでは既定で TLS 1.2 が有効です。これは、PCI DSS などの業界標準で推奨されている TLS レベルです。Your app allows TLS 1.2 by default, which is the recommended TLS level by industry standards, such as PCI DSS. 異なる TLS バージョンを適用するには、次の手順を実行します。To enforce different TLS versions, follow these steps:

アプリ ページで、左側のナビゲーションにある [SSL 設定] を選択します。In your app page, in the left navigation, select SSL settings. 次に、 [TLS version](TLS バージョン) で、必要な最低限の TLS バージョンを選択します。Then, in TLS version, select the minimum TLS version you want. この設定により、受信呼び出しのみが制御されます。This setting controls the inbound calls only.

TLS 1.1/1.2 の適用

操作が完了すると、アプリは下位の TLS バージョンでの接続をすべて拒否します。When the operation is complete, your app rejects all connections with lower TLS versions.

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

Azure CLI または Azure PowerShell を使用すると、アプリの SSL バインドをスクリプトで自動化することができます。You can automate SSL bindings for your app with scripts, using the Azure CLI or Azure PowerShell.

Azure CLIAzure CLI

次のコマンドは、エクスポートした PFX ファイルをアップロードし、拇印を取得します。The following command uploads an exported PFX file and gets the thumbprint.

thumbprint=$(az webapp config ssl upload \
    --name <app-name> \
    --resource-group <resource-group-name> \
    --certificate-file <path-to-PFX-file> \
    --certificate-password <PFX-password> \
    --query thumbprint \
    --output tsv)

次のコマンドは、直前のコマンドで取得した拇印を使用して、SNI ベースの SSL バインドを追加します。The following command adds an SNI-based SSL binding, using the thumbprint from the previous command.

az webapp config ssl bind \
    --name <app-name> \
    --resource-group <resource-group-name>
    --certificate-thumbprint $thumbprint \
    --ssl-type SNI \

次のコマンドを実行すると、TLS の最低バージョンが強制的に 1.2 になります。The following command enforces minimum TLS version of 1.2.

az webapp config set \
    --name <app-name> \
    --resource-group <resource-group-name>
    --min-tls-version 1.2

Azure PowerShellAzure PowerShell

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

次のコマンドは、エクスポートした PFX ファイルをアップロードし、SNI ベースの SSL バインドを追加します。The following command uploads an exported PFX file and adds an SNI-based SSL binding.

New-AzWebAppSSLBinding `
    -WebAppName <app_name> `
    -ResourceGroupName <resource_group_name> `
    -Name <dns_name> `
    -CertificateFilePath <path_to_PFX_file> `
    -CertificatePassword <PFX_password> `
    -SslState SniEnabled

コードで証明書を使用するUse certificates in your code

お使いのアプリがリモート リソースに接続する必要があり、リモート リソースが証明書認証を必要とする場合は、パブリック証明書またはプライベート証明書をそのアプリにアップロードできます。If your app needs to connect to remote resources, and the remote resource requires certificate authentication, you can upload public or private certificates to your app. それらの証明書をお使いのアプリで任意のカスタム ドメインにバインドする必要はありません。You don't need to bind these certificates to any custom domain in your app. 詳細については、「Use an SSL certificate in your application code in Azure App Service (Azure App Service の SSL 証明書を購入して構成する)」をご覧ください。For more information, see Use an SSL certificate in your application code in Azure App Service.

次の手順Next steps

このチュートリアルでは、以下の内容を学習しました。In this tutorial, you learned how to:

  • アプリの価格レベルをアップグレードするUpgrade your app's pricing tier
  • カスタム証明書を App Service にバインドするBind your custom certificate to App Service
  • 証明書の更新Renew certificates
  • HTTPS の適用Enforce HTTPS
  • TLS 1.1/1.2 の適用Enforce TLS 1.1/1.2
  • スクリプトを使って TLS 管理を自動化するAutomate TLS management with scripts

次のチュートリアルに進み、Azure Content Delivery Network の使用方法を学習してください。Advance to the next tutorial to learn how to use Azure Content Delivery Network.

詳細については、「Use an SSL certificate in your application code in Azure App Service (Azure App Service の SSL 証明書を購入して構成する)」をご覧ください。For more information, see Use an SSL certificate in your application code in Azure App Service.