チュートリアル: 既存のカスタム SSL 証明書を Azure Web Apps にバインドするTutorial: Bind an existing custom SSL certificate to Azure Web Apps

Azure Web Apps では、高度にスケーラブルな自己適用型の Web ホスティング サービスを提供しています。Azure Web Apps provides a highly scalable, self-patching web hosting service. このチュートリアルでは、信頼された証明機関から購入したカスタム SSL 証明書を Azure Web Apps にバインドする方法について説明します。This tutorial shows you how to bind a custom SSL certificate that you purchased from a trusted certificate authority to Azure Web Apps. 完了したら、カスタムの DNS ドメインの HTTPS エンドポイントで、Web アプリにアクセスできるようになります。When you're finished, you'll be able to access your web 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
  • カスタム証明書を 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

注意

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

前提条件Prerequisites

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

SSL 証明書の必要条件Requirements for your SSL certificate

App Service で証明書を使用するには、証明書が次のすべての要件を満たしている必要があります。To use a certificate in App Service, the certificate must meet all the following requirements:

  • 信頼された証明機関によって署名されている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

注意

楕円曲線暗号 (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.

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.

スケール アップの通知

SSL 証明書のバインドBind your SSL certificate

Web アプリに、SSL 証明書をアップロードする準備ができました。You are ready to upload your SSL certificate to your web app.

中間証明書を結合する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.

SSL 証明書のアップロードUpload your SSL certificate

SSL 証明書をアップロードするには、Web アプリの左側のナビゲーションで [SSL 設定] をクリックします。To upload your SSL certificate, click SSL settings in the left navigation of your web app.

[証明書のアップロード] をクリックします。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.

証明書のアップロード

App Service による証明書のアップロードが完了すると、[SSL 設定] ページにアップロードした証明書が表示されます。When App Service finishes uploading your certificate, it appears in the SSL settings page.

アップロードされた証明書

SSL 証明書のバインドBind your SSL certificate

[SSL バインディング] セクションで、[Add bindings] (バインドの追加) をクリックします。In the SSL bindings section, click Add binding.

[SSL バインディングの追加] ページで、ドロップダウンから保護するドメインの名前と使用する証明書を選択します。In the Add SSL Binding page, use the dropdowns to select the domain name to secure, and the certificate to use.

注意

証明書をアップロードしたのに [ホスト名] ドロップダウンにドメイン名が表示されない場合は、ブラウザのページを最新の情報に更新してみてください。If you have uploaded your certificate but don't see the domain name(s) in the Hostname dropdown, try refreshing the browser page.

[SSL Type] (SSL の種類) で、Server Name Indication (SNI) ベースの SSL を使用するか IP ベースの SSL を使用するかを選択します。In SSL Type, select whether to use Server Name Indication (SNI) or IP-based SSL.

  • 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.

[Add Binding] (バインドの追加) をクリックします。Click Add Binding.

SSL 証明書のバインド

App Service による証明書のアップロードが完了すると、[SSL バインド] セクションにアップロードした証明書が表示されます。When App Service finishes uploading your certificate, it appears in the SSL bindings sections.

Web アプリにバインドされた証明書

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

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

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

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

Web アプリの [カスタム ドメイン] ページが、新規の専用 IP アドレスで更新されます。Your web 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> にアクセスし、Web アプリの要求を処理できることを確認します。In various browsers, browse to https://<your.custom.domain> to see that it serves up your web app.

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

注意

Web アプリで証明書検証エラーが返された場合は、自己署名証明書を使用している可能性があります。If your web 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 を使用して Web アプリにアクセスできます。By default, anyone can still access your web app using HTTP. すべての HTTP 要求を HTTPS ポートにリダイレクトできます。You can redirect all HTTP requests to the HTTPS port.

Web アプリ ページで、左側のナビゲーションにある [SSL 設定] を選択します。In your web 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:

Web アプリ ページで、左側のナビゲーションにある [SSL 設定] を選択します。In your web 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 を使用すると、Web アプリの SSL バインドをスクリプトで自動化することができます。You can automate SSL bindings for your web 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

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

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

パブリック証明書 (省略可能)Public certificates (optional)

証明書認証を必要とする外部のサービスにアクセスできるよう、Web アプリにはパブリック証明書をアップロードすることができます。You can upload public certificates to your web app so the app can access an external service that requires certificate authentication. アプリにパブリック証明書を読み込んで使用する方法の詳細については、「Azure App Service のアプリケーション コードに SSL 証明書を使用する」を参照してください。For more details on loading and using a public certificate in your app, see Use an SSL certificate in your application code in Azure App Service. App Service Environment でも、アプリのパブリック証明書をご利用いただけます。You can use public certificates with apps in App Service Environments also. LocalMachine の証明書ストアに証明書を格納する必要がある場合は、App Service Enviroment で Web アプリを使用する必要があります。If you need to store the certificate in the LocalMachine certificate store, you need to use a web app on App Service Environment. 詳細については、Web アプリに合わせてパブリック証明書を構成する方法に関するページをご覧ください。For more information, see How to configure public certificates to your Web App.

パブリック証明書のアップロード

次の手順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.