既存のカスタム ドメインを Azure Spring Apps にマップする
Note
Basic、Standard、Enterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象:✅ Java ✅ C#
この記事の適用対象:✅ Standard ✅ Enterprise
ドメイン ネーム サービス (DNS) は、ネットワーク全体のネットワーク ノード名を格納するための手法です。 この記事では、CNAME レコードを使用して、www.contoso.com
などのドメインをマップします。 証明書を使用してカスタム ドメインをセキュリティで保護し、トランスポート層セキュリティ (TLS。Secure Sockets Layer (SSL) とも呼ばれます) を強制する方法を示します。
証明書は、Web トラフィックを暗号化します。 これらの TLS/SSL 証明書は、Azure Key Vault に格納できます。
前提条件
- Azure サブスクリプション。 サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- (オプション) Azure CLI バージョン 2.45.0 以降。 コマンド
az extension add --name spring
を使用して、Azure Spring Apps をインストールします。 - Azure Spring Apps にデプロイされたアプリケーション (「クイックスタート: Azure portal を使用して Azure Spring Apps で既存のアプリケーションを起動する」を参照するか、既存のアプリを使用してください)。 Basic プランを使用してアプリケーションをデプロイしている場合、必ず Standard プランにアップグレードしてください。
- GoDaddy などのドメイン プロバイダーの DNS レジストリへのアクセス権を持つドメイン名。
- サードパーティ プロバイダーからのプライベート証明書 (つまり自己署名証明書)。 証明書はドメインと一致している必要があります。
- Azure Key Vault のデプロイ済みインスタンス。 詳細については、Azure Key Vault の概要に関する記事を参照してください。
Key Vault のプライベート リンクに関する考慮事項
Azure Spring Apps の管理の IP アドレスは、まだ Azure Trusted Microsoft サービスには含まれていません。 そのため、プライベート エンドポイント接続によって保護されたキー コンテナーから Azure Spring Apps が証明書を読み込めるようにするには、Azure Key Vault のファイアウォールに以下の IP アドレスを追加する必要があります。
20.99.204.111
20.201.9.97
20.74.97.5
52.235.25.35
20.194.10.0
20.59.204.46
104.214.186.86
52.153.221.222
52.160.137.39
20.39.142.56
20.199.190.222
20.79.64.6
20.211.128.96
52.149.104.144
20.197.121.209
40.119.175.77
20.108.108.22
102.133.143.38
52.226.244.150
20.84.171.169
20.93.48.108
20.75.4.46
20.78.29.213
20.106.86.34
20.193.151.132
証明書のインポート
PFX で証明書ファイルを準備する (省略可能)
Azure Key Vault は、PEM および PFX 形式のプライベート証明書のインポートをサポートしています。 証明書プロバイダーから取得した PEM ファイルが「Key Vault に証明書を保存する」セクションで動作しない場合、ここの手順に従って Azure Key Vault 用の PFX を生成します。
中間証明書を結合する
証明機関から証明書チェーンの複数の証明書を提供された場合は、それらの証明書を順番に結合する必要があります。
このタスクを行うには、受信した各証明書をテキスト エディターで開きます。
結合した証明書用に 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 を使用した場合、秘密キー ファイルは作成されています。 証明書を PFX にエクスポートするには、次のコマンドを実行します。 プレースホルダーの <private-key-file> と <merged-certificate-file> をそれぞれ、秘密キーのパスとマージされた証明書ファイルに変更します。
openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>
メッセージが表示されたら、エクスポートのパスワードを定義します。 このパスワードは、後で TLS/SSL 証明書を Azure Key Vault にアップロードするときに使用します。
IIS または Certreq.exe を使用して証明書の要求を生成した場合は、ローカル コンピューターに証明書をインストールした後で証明書を PFX にエクスポートします。
Key Vault に証明書を保存する
証明書をインポートする手順では、PEM または PFX でエンコードされたファイルがディスク上にあり、秘密キーを持っている必要があります。
次の手順を使用して、証明書をキー コンテナーにアップロードします。
キー コンテナー インスタンスに移動します。
ナビゲーション ペインで、[証明書] を選択します。
上部のメニューで、 [生成/インポート] を選択します。
[証明書の作成] ページで、[証明書の作成方法] として [インポート] を選択し、[証明書名] の値を指定します。
[証明書ファイルのアップロード] で、証明書の場所に移動し、選択します。
[パスワード] では、パスワードで保護された証明書ファイルをアップロードする場合、ここにパスワードを指定します。 それ以外の場合は空白のまま残します。 証明書ファイルが正常にインポートされると、このパスワードはキー コンテナーによって削除されます。
[作成] を選択します
キー コンテナーへの Azure Spring Apps のアクセス権を付与する
証明書をインポートする前に、次のようにして Azure Spring Apps にキー コンテナーへのアクセス権を付与する必要があります。
Azure portal を使用してアクセス権を付与するには、次の手順に従います。
キー コンテナー インスタンスに移動します。
ナビゲーション ペインで、[アクセス ポリシー] を選択します。
上部のメニューで、[作成] を選択します。
情報を入力し、[追加] ボタン、アクセス ポリシーの [作成] の順に選択します。
Secret permission (シークレットのアクセス許可) 証明書の権限 プリンシパルの選択 Get、List Get、List Azure Spring Apps Domain-Management (Azure Spring Apps ドメイン - 管理) 注意
"Azure Spring Apps Domain-Management" が見つからない場合は、"Azure Spring Cloud Domain-Management" を検索します。
Azure Spring Apps に証明書をインポートする
証明書をインポートするには、次の手順に従います。
Azure Spring Apps インスタンスに移動します。
ナビゲーション ウィンドウで、[TLS/SSL の設定] を選択します。
[キー コンテナー証明書のインポート] を選択します。
[Azure から証明書を選択] ページで、ドロップダウン オプションから [サブスクリプション]、[Key Vault]、[証明書] を選択し、[選択] を選択します。
開いた [証明書名の設定] ページで証明書名を入力し、必要に応じて [自動同期を有効にする] を選択し、[適用] を選択します。 詳細については、「証明書の自動同期」セクションを参照してください。
証明書が正常にインポートされると、[秘密キー証明書] の一覧に表示されます。
重要
この証明書を使用してカスタム ドメインをセキュリティで保護するには、必ず証明書を特定のドメインにバインドしてください。 詳細については、「SSL バインドを追加する」セクションを参照してください。
証明書を自動同期する
Azure Key Vault に格納されている証明書は、有効期限が切れる前に更新される場合があります。 同様に、証明書の管理に関する組織のセキュリティ ポリシーでは、DevOps チームが証明書を新しい証明書に定期的に置き換えることを要求する場合があります。 証明書の自動同期を有効にすると、Azure Spring Apps は新しいバージョンのキー コンテナーの同期を定期的 (通常は 24 時間ごと) に開始します。 新しいバージョンが使用可能な場合、Azure Spring Apps によってインポートされ、ダウンタイムを発生させることなく、証明書を使用してさまざまなコンポーネント用に再読み込みされます。 次の一覧は、影響を受けるコンポーネントと関連するシナリオを示しています。
- アプリ
- カスタム ドメイン
- VMware Spring Cloud Gateway
- カスタム ドメイン
- API portal for VMware Tanzu
- カスタム ドメイン
- VMware Tanzu アプリケーション アクセラレータ
- 自己署名証明書を使用した Git リポジトリへの接続。
- Application Configuration Service for Tanzu
- 自己署名証明書を使用した Git リポジトリへの接続。
Azure Spring Apps で証明書をインポートまたは再読み込みすると、アクティビティ ログが生成されます。 アクティビティ ログを表示するには、Azure portal で Azure Spring Apps インスタンスに移動し、ナビゲーション ウィンドウで [アクティビティ ログ] を選択します。
Note
証明書の自動同期機能は、Azure Key Vault からインポートされたプライベート証明書とパブリック証明書で動作します。 この機能は、顧客がアップロードするコンテンツ証明書では使用できません。
キー コンテナーから Azure Spring Apps に証明書をインポートするときに、証明書の自動同期機能を有効または無効にすることができます。 詳細については、「Azure Spring Apps に証明書をインポートする」セクションを参照してください。
Azure Spring Apps に既にインポートされている証明書に対して、この機能を有効または無効にすることもできます。
インポートされた証明書に対して自動同期を有効または無効にするには、次の手順を使用します。
カスタム ドメインの追加
カスタム DNS 名を Azure Spring Apps にマップするには、CNAME レコードを使用できます。
注意
A レコードはサポートされていません。
CNAME レコードを作成する
DNS プロバイダーに移動し、CNAME レコードを追加して、ドメインを <service-name>.azuremicroservices.io
にマップします。 ここで、<service-name>
は Azure Spring Apps インスタンスの名前です。 ワイルドカード ドメインとサブ ドメインがサポートされています。
CNAME を追加した後の DNS レコード ページは、次の例のようになります。
Azure Spring Apps アプリへのカスタム ドメインのマップ
Azure Spring Apps にアプリケーションがない場合は、「クイックスタート: 初めてのアプリケーションを Azure Spring Apps にデプロイする」の手順に従います。
次の手順を使用して、カスタム ドメインをアプリにバインドします。
アプリケーション ページに移動します。
[カスタム ドメイン] を選択します。
[カスタム ドメインの追加] を選択します。
CNAME レコードを追加した完全修飾ドメイン名 (
www.contoso.com
など) を入力します。 [ホスト名レコード タイプ] が [CNAME -<service-name>.azuremicroservices.io
] に設定されていることを確認します。[検証] を選択すると、 [追加] ボタンが有効になります。
[追加] を選択します。
1 つのアプリは複数のドメインを持つことができますが、1 つのドメインは 1 つのアプリにのみマップできます。 カスタム ドメインがアプリに正常にマップされると、カスタム ドメイン テーブルにそのドメインが表示されます。
注意
カスタム ドメインの [セキュリティ保護なし] というラベルは、まだ SSL 証明書にバインドされていないことを意味します。 ブラウザーからカスタム ドメインへの HTTPS 要求を実行すると、エラーまたは警告が表示されます。
SSL バインドの追加
次の手順を使用して、アプリのカスタム ドメインを更新します。
前の図に示されているように、カスタム ドメイン テーブルで [SSL バインディングの追加] を選択します。
[証明書] で選択するか、証明書をインポートします。
[保存] を選択します。
SSL バインディングが正常に追加されると、ドメインの状態は安全になり、[正常] と表示されます。
HTTPS の適用
既定では、ユーザーは引き続き HTTP を使用してアプリにアクセスできますが、管理者はすべての HTTP 要求を HTTPS ポートにリダイレクトすることができます。
アプリ ページで、ナビゲーションにある [カスタム ドメイン] を選択します。 次に、[HTTPS のみ] を Yes
に設定します。
操作が完了したら、アプリを指す HTTPS URL のいずれかに移動します。 HTTP URL では機能しないことに注意してください。