次の方法で共有


Azure App Service で TLS/SSL 証明書を追加および管理する

デジタル セキュリティ証明書を追加して、アプリケーション コードで使用したり、Azure App Serviceカスタム ドメイン ネーム システム (DNS) 名をセキュリティで保護したりできます。 App Service は、高度にスケーラブルで自己修正型の Web ホスティング サービスを提供します。 証明書は現在、トランスポート層セキュリティ (TLS) 証明書と呼ばれています。 これらは、以前は Secure Sockets Layer (SSL) 証明書として知られていました。 これらのプライベート証明書またはパブリック証明書は、インターネット接続をセキュリティで保護するのに役立ちます。 証明書は、ブラウザー、アクセスした Web サイト、および Web サイト サーバーの間で送信されるデータを暗号化します。

次の表に、App Service で証明書を追加するためのオプションを示します。

オプション 説明
無料の App Service マネージド証明書を作成します。 App Service で カスタム ドメイン のセキュリティを強化する必要がある場合に、無料で使いやすいプライベート証明書。
App Service 証明書をインポートする プライベート証明書は Azure によって管理されます。 自動証明書管理のシンプルさと、更新オプションとエクスポート オプションの柔軟性が組み合わされています。
Azure Key Vault から証明書をインポートする Key Vault を使用して PKCS12 証明書を管理する場合に便利です。 「プライベート証明書の要件」を参照してください。
プライベート証明書のアップロード Microsoft 以外のプロバイダーのプライベート証明書が既にある場合は、アップロードできます。 「プライベート証明書の要件」を参照してください。
パブリック証明書のアップロード パブリック証明書はカスタム ドメインのセキュリティ保護には使われませんが、リモート リソースにアクセスするために必要な場合は、コードに読み込むことができます。

前提条件

プライベート証明書の要件

無料の App Service マネージド証明書App Service 証明書は、App Service の要件を既に満たしています。 App Service にプライベート証明書をアップロードまたはインポートする場合、証明書は次の要件を満たしている必要があります。

TLS バインドでカスタム ドメインをセキュリティで保護する場合は、証明書が次の追加要件を満たしている必要があります。

  • サーバー認証の 拡張キー使用法 が含まれています (OID = 1.3.6.1.5.5.7.3.1)。
  • 信頼された証明機関によって署名されます。

楕円曲線暗号化 (ECC) 証明書 は、PFX としてアップロードされるときに App Service で動作しますが、現在、Key Vault からインポートすることはできません。 この記事では取り上げません。 ECC 証明書を作成する正確な手順については、お使いの証明機関にお問い合わせください。

アプリにプライベート証明書を追加すると、その証明書は、App Service プランのリソース グループ、リージョン、オペレーティング システム (OS) の組み合わせにバインドされたデプロイ ユニットに格納されます。 内部的には、 Web スペースと呼ばれます。 これにより、リソース グループ、リージョン、OS の組み合わせが同じである他のアプリが、証明書にアクセスできるようになります。 App Service にアップロードまたはインポートされたプライベート証明書は、同じデプロイ ユニット内のアプリ サービスと共有されます。

Web スペースあたり最大 1,000 個のプライベート証明書を追加できます。

無料のマネージド証明書を作成する

無料の App Service マネージド証明書は、App Service でカスタム DNS 名をセキュリティで保護するのに役立つターンキー ソリューションです。 App Service では、この TLS/SSL サーバー証明書は、ユーザーの操作なしで管理されます。

無料のマネージド証明書を作成する前に、アプリ の前提条件を満たしていることを 確認してください。

DigiCert は無料の証明書を発行します。 一部のドメインでは、値が0 issue digicert.comを作成して、DigiCert を証明書発行者として明示的に許可する必要があります。

Azure では証明書が完全に管理されるため、ルート発行者を含め、マネージド証明書のあらゆる側面をいつでも変更できます。 証明書の更新により、公開キーと秘密キーの両方の部分が変更されます。 これらの証明書の変更はすべて、制御の範囲外です。 ハード依存関係を避け、マネージド証明書または証明書階層の任意の部分にプラクティス証明書を ピン留め してください。 証明書のピン留め動作が必要な場合は、この記事の他の使用可能な方法を使用して、カスタム ドメインに証明書を追加します。

無料の証明書には以下の制限が伴います。

  • ワイルドカード証明書はサポートされません。
  • 証明書の拇印を使用したクライアント証明書としての使用はサポートされていません。この方法は今後廃止され、削除される予定です。
  • プライベート DNS はサポートされません。
  • エクスポートできません。
  • App Service Environment ではサポートされていません。
  • 英数字、ダッシュ (-)、ピリオド (.) のみをサポートします。
  • 最大 64 文字のカスタム ドメインをサポートします。
  • Web アプリの IP アドレスを指す A レコードが必要です。
  • パブリックにアクセスできるアプリ上にある必要があります。
  • Azure Traffic Manager と統合されているルート ドメインではサポートされていません。
  • 証明書の発行と更新を成功させるには、上記のすべての条件を満たす必要があります。
  1. Azure portal の左側のウィンドウで、App Services><app-name> を選択します。

  2. アプリの左側のウィンドウで、[証明書] を選択 します。 [ マネージド証明書 ] ウィンドウで、[ 証明書の追加] を選択します。

    [証明書]、[マネージド証明書]、[証明書の追加] が選択されているアプリ ウィンドウを示すスクリーンショット。

  3. 無料の証明書のカスタム ドメインを選んで、[検証] を選択します。 検証が完了したら、[ 追加] を選択します。 サポートされているカスタム ドメインごとにマネージド証明書を 1 つだけ作成できます。

    操作が完了すると、証明書が [マネージド証明書 ] の一覧に表示されます。

    新しい証明書が一覧表示された [マネージド証明書] ペインを示すスクリーンショット。

  4. この証明書を使用してカスタム ドメインのセキュリティを提供するには、証明書バインディングを作成する必要があります。 「Azure App Service で TLS/SSL バインドを使用してカスタム DNS 名をセキュリティで保護する」の手順に従います。

App Service 証明書をインポートする

App Service 証明書をインポートするには、先に App Service 証明書を購入して構成してから、以下の手順に従って行います。

  1. Azure portal の左側のウィンドウで、App Services><app-name> を選択します。

  2. アプリの左側のウィンドウで、 証明書>独自の証明書の作成 (.pfx)>証明書の追加を選択します。

  3. [ ソース] で、[ App Service 証明書のインポート] を選択します。

  4. [App Service 証明書] で、作成した証明書を選択します。

  5. [ 証明書のフレンドリ名] で、証明書にアプリの名前を付けます。

  6. [検証] を選択します。 検証が成功したら、[追加] を選択します。

    [証明書]、[独自の証明書の持ち込み (.pfx)]、[App Service 証明書のインポート] が選択されているアプリ管理ページを示すスクリーンショット。[秘密キー証明書の追加] ウィンドウに [検証] が表示されます。

    操作が完了すると、証明書が Bring Your Own Certificates (.pfx) の一覧に表示されます。

    購入した証明書が一覧表示された [Bring Your Own Certificates (.pfx)] ペインを示すスクリーンショット。

  7. この証明書を使用してカスタム ドメインをセキュリティで保護するには、証明書バインドを作成する必要があります。 「Azure App Service で TLS/SSL バインドを使用してカスタム DNS 名をセキュリティで保護する」の手順に従います。

Key Vault から証明書をインポートする

Key Vault を使用して証明書を管理する場合は、 要件を満たしている場合は、Key Vault から App Service に PKCS12 証明書をインポートできます。

Key Vault から読み取る権限を App Service に与える

既定では、App Service リソース プロバイダーはキー コンテナーにアクセスできません。 証明書のデプロイにキー コンテナーを使うには、キー コンテナーに対する読み取りアクセスをリソース プロバイダー (App Service) に認可する必要があります。 アクセス ポリシーまたはロールベースのアクセス制御 (RBAC) を使用してアクセス権を付与できます。

リソース プロバイダー サービス プリンシパル アプリ ID/割り当て先 Key Vault の RBAC ロール
Azure App Service または Microsoft.Azure.WebSites - Azure Cloud Services の abfa0a7c-a6b6-4736-8310-5855508787cd

- 6a02c803-dafd-4136-b4c3-5a6f318b4714 政府向けのAzureクラウドサービス
証明書ユーザー

サービス プリンシパル アプリ ID または割り当て先の値は、App Service リソース プロバイダーの ID です。 RBAC を使用してアクセスが許可される場合、サービス プリンシパル アプリ ID の対応するオブジェクト ID はテナントに固有です。 アクセス ポリシーを使用して App Service リソース プロバイダーの Key Vault アクセス許可を承認する方法については、「 Azure ロールベースのアクセス制御を使用して Key Vault のキー、証明書、シークレットへのアクセスを提供する」を参照してください。

az role assignment create --role "Key Vault Certificate User" --assignee "abfa0a7c-a6b6-4736-8310-5855508787cd" --scope "/subscriptions/{subscriptionid}/resourcegroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{key-vault-name}"

Key Vault からアプリに証明書をインポートする

  1. Azure portal の左側のウィンドウで、App Services><app-name> を選択します。

  2. アプリの左側のウィンドウで、 証明書>独自の証明書の作成 (.pfx)>証明書の追加を選択します。

  3. [ ソース] で、[ Key Vault からインポート] を選択します。

  4. [キー コンテナー証明書の選択] を選択します。

    [証明書]、[Bring your own certificates (.pfx)]、[Import from Key Vault]\(Key Vault からインポート\) が選択されているアプリ管理ページを示すスクリーンショット。

  5. 証明書を選ぶときは、次の表を参考にしてください。

    設定 説明
    サブスクリプション キー コンテナーに関連付けられているサブスクリプション。
    Key Vault(キーボールト) インポートする証明書があるキー コンテナー。
    [証明書] この一覧から、コンテナー内にある PKCS12 証明書を選びます。 コンテナー内のすべての PKCS12 証明書がその拇印と共に一覧表示されますが、App Service ですべてがサポートされているわけではありません。
  6. 選択が完了したら、 選択>Validate を選択し、[ 追加] を選択します。

    操作が完了すると、証明書が Bring Your Own Certificates (.pfx) の一覧に表示されます。 インポートがエラーで失敗する場合は、証明書が App Service の要件を満たしていません。

    インポートされた証明書が一覧表示された [Bring Your Own Certificates (.pfx)] ペインを示すスクリーンショット。

    Key Vault の証明書を新しい証明書で更新する場合、App Service によって証明書が 24 時間以内に自動的に同期されます。

  7. この証明書を使用してカスタム ドメインをセキュリティで保護するには、証明書バインドを作成する必要があります。 「Azure App Service で TLS/SSL バインドを使用してカスタム DNS 名をセキュリティで保護する」の手順に従います。

プライベート証明書のアップロード

証明書プロバイダーから証明書を取得したら、このセクションの手順に従って、App Service 用に証明書を準備します。

中間証明書を結合する

証明機関が証明書チェーン内の複数の証明書を提供する場合は、同じ順序に従って証明書をマージする必要があります。

  1. テキスト エディターで、受け取った各証明書を開きます。

  2. マージした証明書を格納するには、mergedcertificate.crt という名前のファイルを作成します。

  3. 各証明書の内容をこのファイルにコピーします。 必ず、証明書チェーンで指定された証明書シーケンスに従ってください。 証明書から始めて、ルート証明書で終了します。次に例を示します。

    -----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 にエクスポートする

次に、マージされた TLS/SSL 証明書を、証明書要求の生成に使われた秘密キーと共にエクスポートします。 OpenSSL を使用して証明書要求を生成した場合は、秘密キー ファイルを作成しました。

OpenSSL v3 は、既定の暗号を 3DES から AES256 に変更しました。 変更をオーバーライドするには、コマンド ライン -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg SHA1 を使用します。

OpenSSL v1 では既定として 3DES が使用されるため、生成される .pfx ファイルは特別な変更なしでサポートされます。

  1. 証明書を .pfx ファイルにエクスポートするには、次のコマンドを実行します。 プレースホルダーの <private-key-file><merged-certificate-file> をそれぞれ、秘密キーのパスとマージされた証明書ファイルに変更します。

    openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>  
    
  2. 求められたら、エクスポート操作のパスワードを指定します。 後で TLS/SSL 証明書を App Service にアップロードするとき、このパスワードを指定する必要があります。

  3. IIS または Certreq.exe を使用して証明書要求を生成した場合は、証明書をローカル コンピューターにインストールし、 証明書を .pfx ファイルにエクスポートします。

証明書を App Service にアップロードする

これで、証明書を App Service にアップロードする準備ができました。

  1. Azure portal の左側のウィンドウで、App Services><app-name> を選択します。

  2. アプリの左側のウィンドウで、 証明書>独自の証明書の作成 (.pfx)>証明書のアップロード (.pfx)を選択します。

    [証明書]、[Bring your own certificates (.pfx)]、[Upload certificate .pfx]\(証明書のアップロード\) が選択されているアプリ管理ページを示すスクリーンショット。

  3. .pfx 証明書をアップロードする際は、次の表を参考にしてください。

    設定 説明
    PFX 証明書ファイル .pfx ファイルを選択します。
    証明書のパスワード .pfx ファイルをエクスポートしたときに作成したパスワードを入力します。
    証明書のフレンドリ名 Web アプリに表示される証明書名。
  4. 選択が完了したら、 選択>Validate を選択し、[ 追加] を選択します。

    操作が完了すると、証明書が Bring Your Own Certificates (.pfx) の一覧に表示されます。

    アップロードされた証明書が一覧表示された [Bring your own certificates]\(証明書の持ち込み\) ペインを示すスクリーンショット。

  5. この証明書を使用してカスタム ドメインのセキュリティを提供するには、証明書バインディングを作成する必要があります。 「Azure App Service で TLS/SSL バインドを使用してカスタム DNS 名をセキュリティで保護する」の手順に従います。

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

公開証明書は、 .cer 形式でサポートされています。

パブリック証明書をアプリにアップロードした後は、アップロード先のアプリのみがアクセスできます。 パブリック証明書は、アクセスが必要な個々の Web アプリにアップロードする必要があります。 App Service Environment に固有のシナリオについては、 証明書と App Service Environment のドキュメントを参照してください。

App Service プランごとに最大 1,000 個のパブリック証明書をアップロードできます。

  1. Azure portal の左側のウィンドウで、App Services><app-name> を選択します。

  2. アプリの左側のウィンドウで、[証明書> [>] を選択します。

  3. .cer 証明書をアップロードする際は、次の表を参考にしてください。

    設定 説明
    .cer 証明書ファイル .cer ファイルを選択します。
    証明書のフレンドリ名 Web アプリに表示される証明書名。
  4. 完了したら、[追加] を選択 します

    アプリ管理ページを示すスクリーンショット。アップロードする公開キー証明書とその名前が表示されます。

  5. 証明書がアップロードされたら、証明書のサムプリントをコピーし、「証明書をアクセス可能にする」を確認します。

有効期限が近づいている証明書を更新する

証明書の有効期限が切れる前に、更新された証明書を必ず App Service に追加してください。 プロセスが証明書の種類に依存する証明書バインドを更新します。 たとえば、Key Vault からインポートされた証明書 (App Service 証明書など) は、自動的に 24 時間ごとに App Service に同期され、証明書を更新すると TLS/SSL バインドが更新されます。

アップロードされた証明書の場合は、バインドは自動更新されません。 シナリオに基づいて、対応するセクションを確認します。

アップロードされた証明書を更新する

期限切れの証明書を置き換えるとき、証明書バインドを新しい証明書で更新する方法によっては、ユーザー エクスペリエンスに悪影響を及ぼす可能性があります。 たとえば、バインディングを削除すると、そのバインディングが IP ベースであっても、受信 IP アドレスが変更される可能性があります。 この結果は、IP ベースのバインディングに既に存在する証明書を更新する場合に特に効果的です。

アプリの IP アドレスの変更を回避し、HTTPS エラーが原因でアプリのダウンタイムを回避するには、次の手順に従います。

  1. 新しい証明書をアップロードします

  2. アプリの [カスタム ドメイン] ページに移動し、[...] ボタンを選んでから、[バインディングの更新] を選びます。

  3. 新しい証明書を選択し、[ 更新] を選択します。

  4. 既存の証明書を削除します。

Key Vault からインポートされた証明書を更新する

App Service 証明書を更新するには、「App Service 証明書の更新」を参照してください。

Key Vault から App Service にインポートした証明書を更新するには、「 Azure Key Vault 証明書を更新する」を参照してください。

キー コンテナー内の証明書が更新された後、App Service は 24 時間以内に新しい証明書を自動的に同期して該当する証明書バインドを更新します。 手動で同期するには、次の手順のようにします。

  1. アプリの [証明書] ページに移動します。

  2. [Bring Your Own Certificate (.pfx)] で、インポートしたキー コンテナー証明書の [...] ボタンを選んでから、[同期] を選びます。

よく寄せられる質問

Bring Your Own 証明書をアプリに追加するプロセスを自動化するにはどうすればよいですか?

アプリで受信 TLS にプライベート CA 証明書を使用できますか?

App Service Environment バージョン 3 では、受信 TLS にプライベート証明機関 (CA) 証明書を使用できます。 このアクションは、App Service (マルチテナント) では実行できません。 App Service マルチテナントとシングル テナントの詳細については、 App Service Environment v3 と App Service のパブリック マルチテナント比較に関するページを参照してください。

アプリからプライベート CA クライアント証明書を使用して発信呼び出しを行うことができますか?

この機能は、マルチテナント App Service の Windows コンテナー アプリでのみサポートされます。 App Service Environment バージョン 3 のコード ベースのアプリとコンテナー ベースのアプリの両方でプライベート CA クライアント証明書を使用して、発信呼び出しを行うことができます。 App Service マルチテナントとシングル テナントの詳細については、 App Service Environment v3 と App Service のパブリック マルチテナント比較に関するページを参照してください。

App Service の信頼されたルート ストアにプライベート CA 証明書を読み込むことができますか?

App Service Environment バージョン 3 の信頼されたルート ストアに独自の CA 証明書を読み込むことができます。 App Service (マルチテナント) で信頼されたルート証明書の一覧を変更することはできません。 App Service マルチテナントとシングル テナントの詳細については、 App Service Environment v3 と App Service のパブリック マルチテナント比較に関するページを参照してください。

App Service 証明書を他のサービスに使用できますか?

はい。 App Service 証明書は、Azure Application Gateway またはその他のサービスと共にエクスポートして使用できます。 詳細については、 App Service 証明書のローカル PFX コピーの作成に関するブログ記事を参照してください。