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

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

次の表は、App Service で証明書を追加するためのオプションの一覧です。

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

前提条件

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

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

  • Triple DES を使用して暗号化され、パスワードで保護された PFX ファイルとしてエクスポートされている
  • 少なくとも 2048 ビット長の秘密キーが含まれている
  • 証明書チェーン内のすべての中間証明書およびルート証明書が含まれている。

TLS バインドでカスタム ドメインをセキュリティ保護する場合、証明書にさらに次の要件があります。

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

Note

楕円曲線暗号 (ECC) 証明書 は、App Service で機能しますが、この記事では説明しません。 ECC 証明書を作成する正確な手順については、お使いの証明機関にお問い合わせください。

Note

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

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

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

無料 App Service マネージド証明書は、App Service でカスタム DNS 名をセキュリティで保護するためのターンキー ソリューションです。 この TLS/SSL サーバー証明書は、前提条件の設定が同じままである限り、App Service によって完全に管理され、継続的に有効期限の 45 日前に 6 か月単位で自動的に更新され、ユーザーは何も行う必要がありません。 関連付けられているすべてのバインドは、更新された証明書で更新されます。 証明書を作成してカスタム ドメインにバインドすると、残りは App Service によって実行されます。

重要

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

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

証明書は Azure がユーザーに代わって完全に管理するため、ルート発行者を含むマネージド証明書のあらゆる側面をいつでも変更できます。 これらの変更をユーザーは制御できません。 マネージド証明書または証明書階層の任意の部分に対するハードな依存関係または実務証明書の "ピン留め" を行わないようにしてください。 証明書のピン留め動作が必要な場合、この記事の他の使用可能な方法を使用し、カスタム ドメインに証明書を追加します。

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

  • ワイルドカード証明書はサポートされません。
  • 証明書のサムプリントを使用したクライアント証明書としての使用はサポートされません。これは、非推奨で削除される予定です。
  • プライベート DNS はサポートされません。
  • エクスポートできません。
  • App Service Environment (ASE) ではサポートされません。
  • 英数字、ダッシュ (-)、ピリオド (.) のみがサポートされます。
  • サポートされているのは、最大 64 文字のカスタム ドメインのみです。
  • Web アプリの IP アドレスを指す A レコードが必要です。
  • パブリックにアクセスできないアプリではサポートされません。
  • 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. アプリのナビゲーション メニューから、[証明書]>[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)>[証明書の追加] の順に選択します。

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

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

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

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

    [証明書]、[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)、[App Service 証明書のインポート] が選択されているアプリ管理ページのスクリーンショット。[秘密キー証明書の追加] ページに**検証**ボタンが表示されている。

    操作が完了すると、[Bring your own certificates] (独自の証明書を持ち込む) の一覧に証明書が表示されます。

    購入した証明書が一覧に表示されている [Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む) ペインのスクリーンショット。

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

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

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

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

既定では、App Service リソース プロバイダーはキー コンテナーにアクセスできません。 証明書のデプロイにキー コンテナーを使うには、キー コンテナーに対する読み取りアクセスをリソース プロバイダーに認可する必要があります。

注意

現在、Key Vault 証明書でサポートされているのは Key Vault アクセス ポリシーのみであり、RBAC モデルはサポートされていません。

リソース プロバイダー サービス プリンシパルの AppId Key Vault シークレットのアクセス許可 Key Vault 証明書のアクセス許可
Microsoft Azure App Service または Microsoft.Azure.WebSites - abfa0a7c-a6b6-4736-8310-5855508787cd (すべての Azure サブスクリプションで同じ)

- Azure Government クラウド環境では、6a02c803-dafd-4136-b4c3-5a6f318b4714 を使います。
取得 取得
Microsoft.Azure.CertificateRegistration 取得
List
オン
削除
取得
List

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

  1. Azure portal の左側のメニューから、[App Services]><app-name> を選択します。

  2. アプリのナビゲーション メニューから、[証明書]>[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)>[証明書の追加] の順に選択します。

  3. [ソース] で、[キー コンテナーからインポートする] を選択します。

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

    [証明書]、[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)、[キー コンテナーからインポートする] が選択されているアプリ管理ページのスクリーンショット

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

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

    操作が完了すると、[Bring your own certificates] (独自の証明書を持ち込む) の一覧に証明書が表示されます。 インポートがエラーで失敗する場合は、証明書が App Service の要件を満たしていません。

    インポートした証明書が一覧に表示されている [Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む) ペインのスクリーンショット。

    Note

    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 を使って証明書の要求を生成した場合、秘密キー ファイルが作成されています。

Note

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. アプリのナビゲーション メニューから、[証明書]>[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)>[証明書のアップロード] の順に選択します。

    [証明書]、[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)、[証明書のアップロード] が選択されているスクリーンショット。

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

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

    操作が完了すると、[Bring your own certificates] (独自の証明書を持ち込む) の一覧に証明書が表示されます。

    アップロードした証明書が一覧に表示されている [Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む) ペインのスクリーンショット。

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

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

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

Note

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

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

  1. Azure portal の左側のメニューから、[App Services]><app-name> を選択します。

  2. アプリのナビゲーション メニューから、[証明書]>[公開キー証明書 (.cer)]>[証明書の追加] の順に選択します。

  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 certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む) で、インポートしたキー コンテナー証明書の [...] 詳細ボタンを選択し、[同期] を選びます。

よく寄せられる質問

bring-your-owncertificate をアプリに追加する方法を教えてください。

アプリでプライベート CA 証明書を構成できますか?

App Service には、App Service のマルチテナントバリアント バージョンでは変更できない信頼されたルート証明書の一覧が含まれていますが、App Service 環境 (ASE) の信頼されたルート ストアに独自の CA 証明書を読み込むことができます。これは App Service の単一テナント環境です。 (Free、Basic、Standard、Premium App Service プランはすべてマルチテナントであり、Isolated プランは単一テナントです。)

その他のリソース