Azure App Service で TLS/SSL 証明書を追加および管理する
Azure App Service では、アプリケーションコードで使用するデジタルセキュリティ証明書や、カスタム DNS 名を保護するためのデジタルセキュリティ証明書を追加できます。 現在、トランスポート層セキュリティ (TLS) 証明書 (旧称 Secure Socket Layer (SSL) 証明書) とも呼ばれるプライベートまたはパブリック証明書は、ブラウザー、アクセスする Web サイト、および Web サイト サーバーの間で送信されるデータを暗号化することで、インターネット接続をセキュリティ保護するのに役立ちます。
次の表は、App Service で証明書を追加するためのオプションの一覧です。
オプション | 説明 |
---|---|
無料の App Service マネージド証明書を作成します。 | App Service のカスタムドメインを保護するだけなら、無料で簡単に使えるプライベート証明書です。 |
App Service 証明書をインポートする | Azure によって管理されるプライベート証明書。 自動証明書管理のシンプルさと、更新オプションとエクスポート オプションの柔軟性が組み合わされています。 |
Key Vault から証明書をインポートする | Azure Key Vault を使用して PKCS12 証明書を管理する場合に便利です。 「プライベート証明書の要件」を参照してください。 |
プライベート証明書のアップロード | 既にサードパーティ プロバイダーからのプライベート証明書がある場合は、それをアップロードすることができます。 「プライベート証明書の要件」を参照してください。 |
パブリック証明書のアップロード | パブリック証明書はカスタム ドメインのセキュリティ保護には使われませんが、リモート リソースにアクセスするために必要な場合は、コードに読み込むことができます。 |
注意
アプリにアップロードされた証明書は、App Service プランのリソース グループ、リージョン、オペレーティング システムの組み合わせ (内部的には "Web 空間" と呼ばれます) にバインドされたデプロイ ユニットに格納されます。 これにより、リソース グループとリージョンの組み合わせが同じである他のアプリが、証明書にアクセスできるようになります。 App Service にアップロードまたはインポートされた証明書は、同じデプロイ ユニット内の App Services と共有されます。
前提条件
App Service アプリを作成します。 アプリの App Service プランは、Basic、Standard、Premium、または Isolated レベルである必要があります。 レベルを更新するには、アプリのスケールアップに関する記事を参照してください。
プライベート証明書の場合、App Service のすべての要件を満たしていることを確認します。
無料の証明書のみ:
証明書が必要なドメインを App Service にマップします。 詳細については、「チュートリアル: 既存のカスタム DNS 名を Azure App Service にマップする」をご覧ください。
ルート・ドメイン (contoso.comなど) の場合、アプリにIP 制限が設定されていないことを確認する。 ルート・ドメインの証明書の作成とその定期的な更新の両方は、アプリがインターネットから到達可能であることに依存します。
プライベート証明書の要件
無料の 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 証明書を作成する正確な手順については、お使いの証明機関にお問い合わせください。
無料のマネージド証明書を作成する
無料 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) ではサポートされません。
- 英数字、ダッシュ (-)、ピリオド (.) のみがサポートされます。
- Web アプリの IP アドレスを指す A レコードが必要です。
- パブリックにアクセスできないアプリではサポートされません。
- Traffic Manager と統合されたルート ドメインではサポートされません。
- 証明書の発行と更新が正常に行われるには、上記のすべてが満たされている必要があります。
Azure portal の左側のメニューから、[App Services]><app-name> を選択します。
アプリのナビゲーション メニューで、[証明書] を選びます。 [マネージド証明書] ウィンドウで、[証明書の追加] を選択します。
無料の証明書のカスタム ドメインを選んで、[検証] を選択します。 検証が完了したら、[追加] を選択します。 サポートされているカスタム ドメインごとにマネージド証明書を 1 つだけ作成できます。
操作が完了すると、[マネージド証明書] の一覧に証明書が表示されます。
この証明書を使ってカスタム ドメインをセキュリティ保護するには、証明書バインドを作成する必要があります。 「Azure App Service で TLS/SSL バインドを使用してカスタム DNS 名をセキュリティで保護する」の手順に従います。
App Service 証明書をインポートする
App Service 証明書をインポートするには、まず App Service 証明書を購入して構成してから、こちらの手順に従います。
Azure portal の左側のメニューから、[App Services]><app-name> を選択します。
アプリのナビゲーション メニューから、[証明書]>[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)>[証明書の追加] の順に選択します。
[ソース] で、[App Service 証明書のインポート] を選択します。
[App Service 証明書] で、先ほど作成した証明書を選択します。
[証明書のフレンドリ名] で、アプリの証明書に名前を付けます。
[検証] を選択します。 検証が成功したら、[追加] を選択します。
操作が完了すると、[Bring your own certificates] (独自の証明書を持ち込む) の一覧に証明書が表示されます。
この証明書を使ってカスタム ドメインをセキュリティ保護するには、証明書バインドを作成する必要があります。 「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 からアプリに証明書をインポートする
Azure portal の左側のメニューから、[App Services]><app-name> を選択します。
アプリのナビゲーション メニューから、[証明書]>[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)>[証明書の追加] の順に選択します。
[ソース] で、[キー コンテナーからインポートする] を選択します。
[キー コンテナー証明書の選択] を選択します。
証明書を選ぶときは、次の表を参考にしてください。
設定 説明 サブスクリプション キー コンテナーに関連付けられているサブスクリプション。 Key vault インポートする証明書があるキー コンテナー。 [証明書] この一覧から、コンテナー内にある PKCS12 証明書を選びます。 コンテナー内のすべての PKCS12 証明書がその拇印と共に一覧表示されますが、App Service ですべてがサポートされているわけではありません。 選択が完了したら、[選択]、[検証]、[追加] の順に選択します。
操作が完了すると、[Bring your own certificates] (独自の証明書を持ち込む) の一覧に証明書が表示されます。 インポートがエラーで失敗する場合は、証明書が App Service の要件を満たしていません。
Note
Key Vault の証明書を新しい証明書で更新する場合、App Service によって証明書が 24 時間以内に自動的に同期されます。
この証明書を使ってカスタム ドメインをセキュリティ保護するには、証明書バインドを作成する必要があります。 「Azure App Service で TLS/SSL バインドを使用してカスタム DNS 名をセキュリティで保護する」の手順に従います。
プライベート証明書のアップロード
証明書プロバイダーから証明書を取得したら、このセクションの手順に従って、App Service 用に証明書を準備します。
中間証明書を結合する
証明機関から証明書チェーンで複数の証明書を提供されている場合は、それらの証明書を同じ順序でマージする必要があります。
テキスト エディターで、受け取った各証明書を開きます。
マージした証明書を格納するには、mergedcertificate.crt という名前のファイルを作成します。
各証明書の内容をこのファイルにコピーします。 証明書チェーンで指定されている証明書のシーケンス (自分の証明書で始まり、ルート証明書で終わるもの) に従ってください。次はその例です。
-----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 ファイルは特別な変更なしでサポートされます。
証明書を PFX ファイルにエクスポートするには、次のコマンドを実行します。ただし、プレースホルダー <private-key-file> と<merged-certificate-file> を、秘密キーへのパスと、マージした証明書ファイルに置き換えます。
openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>
求められたら、エクスポート操作のパスワードを指定します。 後で TLS/SSL 証明書を App Service にアップロードするとき、このパスワードを指定する必要があります。
IIS または Certreq.exe を使って証明書の要求を生成した場合は、ローカル コンピューターに証明書をインストールした後で、証明書を PFX ファイルにエクスポートします。
証明書を App Service にアップロードする
これで、証明書を App Service にアップロードする準備ができました。
Azure portal の左側のメニューから、[App Services]><app-name> を選択します。
アプリのナビゲーション メニューから、[証明書]>[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む)>[証明書のアップロード] の順に選択します。
.pfx 証明書をアップロードする際は、次の表を参考にしてください。
設定 [説明] PFX 証明書ファイル .pfx ファイルを選択します。 証明書のパスワード PFX ファイルをエクスポートする際に作成したパスワードを入力します。 証明書のフレンドリ名 Web アプリに表示される証明書名。 選択が完了したら、[選択]、[検証]、[追加] の順に選択します。
操作が完了すると、[Bring your own certificates] (独自の証明書を持ち込む) の一覧に証明書が表示されます。
この証明書を使ってカスタム ドメインをセキュリティ保護するには、証明書バインドを作成する必要があります。 「Azure App Service で TLS/SSL バインドを使用してカスタム DNS 名をセキュリティで保護する」の手順に従います。
パブリック証明書のアップロード
公開証明書は、 .cer 形式でサポートされています。
Azure portal の左側のメニューから、[App Services]><app-name> を選択します。
アプリのナビゲーション メニューから、[証明書]>[公開キー証明書 (.cer)]>[証明書の追加] の順に選択します。
.cer 証明書をアップロードする際は、次の表を参考にしてください。
設定 [説明] CER 証明書ファイル .cer ファイルを選択します。 証明書のフレンドリ名 Web アプリに表示される証明書名。 終了したら、 [追加] を選択します。
証明書がアップロードされたら、証明書のサムプリントをコピーし、「証明書をアクセス可能にする」を確認します。
有効期限が近づいている証明書を更新する
証明書の有効期限が切れる前に、更新された証明書を App Service に追加し、プロセスが証明書の種類に依存しているすべての証明書バインドを更新してください。 たとえば、Key Vault からインポートされた証明書 (App Service 証明書など) は、自動的に 24 時間ごとに App Service に同期され、証明書を更新すると TLS/SSL バインドが更新されます。 アップロードされた証明書の場合は、バインドは自動更新されません。 シナリオに基づいて、対応するセクションを確認します。
アップロードされた証明書を更新する
期限が切れる証明書を置き換えるとき、新しい証明書で証明書バインドを更新する方法によっては、ユーザー エクスペリエンスに悪影響を及ぼす可能性があります。 たとえば、バインドを削除すると、そのバインドが IP ベースであっても、インバウンド IP アドレスが変化することがあります。 IP ベースのバインドに既に存在する証明書を更新するときには、この結果による影響が特に大きくなります。 アプリの IP アドレスが変わらないようにし、HTTPS エラーによるアプリのダウンタイムを避けるには、次の手順で指定されている順序のとおりにしてください。
アプリの [カスタム ドメイン] ページに移動して、[...] アクション ボタンを選択し、[バインディングの更新] を選択します。
新しい証明書を選択して、[更新] を選択します。
既存の証明書を削除します。
Key Vault からインポートされた証明書を更新する
注意
App Service 証明書を更新するには、「App Service 証明書の更新」を参照してください。
Key Vault から App Service にインポートした証明書を更新するには、「Azure Key Vault の証明書の更新」をご覧ください。
キー コンテナー内で証明書が更新された後、App Service は新しい証明書を自動的に同期し、該当する証明書バインドを 24 時間以内に更新します。 手動で同期するには、次の手順のようにします。
アプリの [証明書] ページに移動します。
[Bring your own certificates (.pfx)] (独自の証明書 (.pfx) を持ち込む) で、インポートしたキー コンテナー証明書の [...] 詳細ボタンを選択し、[同期] を選びます。
よく寄せられる質問
bring-your-owncertificate をアプリに追加する方法を教えてください。
- Azure CLI: カスタム TLS/SSL 証明書を Web アプリにバインドする
- Azure PowerShell PowerShell を使ってカスタム TLS/SSL 証明書を Web アプリにバインドする