Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die Pläne "Basic", "Standard" und "Enterprise" sind am 17. März 2025 in einen Ruhestandszeitraum eingetreten. Weitere Informationen finden Sie in der Ankündigung zur Ausmusterung von Azure Spring Apps.
Dieser Artikel gilt für:✅ Basic/Standard ✅ Enterprise
Die Migration Ihrer benutzerdefinierten Domäne mit TLS/SSL von Azure Spring Apps zu Azure Container Apps umfasst mehrere Schritte, um einen reibungslosen Übergang sicherzustellen. Dieser Artikel führt Sie durch den Prozess, der den Clientdatenverkehr, den Datenverkehr zwischen Anwendungen und den Datenverkehr zu externen Diensten abdeckt.
Voraussetzungen
- Eine vorhandene Azure-Container-App. Weitere Informationen finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Container-App über das Azure-Portal.
- Azure-Befehlszeilenschnittstelle.
- Ein vorhandenes TLS/SSL-Zertifikat, z. B. ein Zertifikat, das in Azure KeyVault gespeichert ist.
- (Optional) Ein vorhandenes Azure Storage-Konto, wenn Sie das Zertifikat aus der Azure-Speicherdateifreigabe in den Vertrauensspeicher laden möchten. Weitere Informationen finden Sie unter Erstellen eines Azure Storage-Kontos.
Clientdatenverkehr zur Anwendung
Standardmäßig verwendet der gesamte eingehende Datenverkehr in der Container-App HTTPS, es sei denn, Sie aktivieren den HTTP-Datenverkehr manuell, den Sie mit dem folgenden Befehl ausführen können:
az containerapp ingress update \
--resource-group "my-resource-group" \
--name "my-app" \
--allow-insecure
Weitere Informationen zum Konfigurieren des Eingangs für Ihre App finden Sie unter Konfigurieren des Eingangs für Ihre App in Azure Container Apps.
Benutzerdefinierte Domäne
Um benutzerdefinierte DNS-Namen (Domain Name System) in Azure Container Apps zu sichern, können Sie digitale Sicherheitszertifikate hinzufügen. Dies unterstützt die sichere Kommunikation zwischen Ihren Apps.
Wenn Sie Ihre benutzerdefinierte Domäne in Azure Container Apps sichern müssen, können Sie ein privates Zertifikat verwenden, das kostenlos und einfach zu verwenden ist. Weitere Informationen finden Sie unter Benutzerdefinierte Domänennamen und kostenlose verwaltete Zertifikate in Azure Container Apps.
Wenn Sie ein privates Zertifikat lokal gespeichert haben, können Sie es hochladen. Weitere Informationen finden Sie unter Benutzerdefinierte Domänennamen und Verwenden eigener Zertifikate in Azure Container Apps.
Wenn Ihr Zertifikat aus Azure Key Vault stammt, können Sie Zertifikate direkt in Azure-Container-Apps importieren. Weitere Informationen finden Sie unter Importieren von Zertifikaten aus Azure Key Vault in Azure-Container-Apps.
Wenn Sie weiterhin das ursprüngliche Zertifikat und den Domänennamen von Azure Spring Apps verwenden möchten, können Sie das Zertifikat in Container-Apps oder Azure Key Vault hochladen. Außerdem können Sie den A-Eintrag oder CNAME in Ihrem DNS-Anbieter aktualisieren, um den ursprünglichen Domänennamen an die IP- oder URL der Container-App umzuleiten.
Aktivieren von mTLS zwischen Client- und Container-Apps
Führen Sie die folgenden Schritte aus, um gegenseitiges TLS (mTLS) zwischen Client- und Container-Apps zu aktivieren:
Verwenden Sie den folgenden Befehl, um die Container-App-Konfiguration im YAML-Format zu exportieren:
az containerapp show \ --resource-group "my-resource-group" \ --name "my-app" \ --output yaml > app.yamlAktualisieren Sie den
clientCertificateMode-Wert in app.yaml, wie im folgenden Beispiel gezeigt:properties: configuration: ingress: clientCertificateMode: requireSie können diese Eigenschaft auf einen der folgenden Werte festlegen:
-
require: Das Clientzertifikat ist für alle Anforderungen an die Container-App erforderlich. -
accept: Das Clientzertifikat ist optional. Wenn das Clientzertifikat nicht angegeben wird, wird die Anforderung trotzdem akzeptiert. -
ignore: Das Clientzertifikat wird ignoriert.
-
Verwenden Sie den folgenden Befehl, um die
clientCertificateModeÄnderung auf die Container-App anzuwenden:az containerapp update \ --resource-group "my-resource-group" \ --name "my-app" \ --yaml app.yaml
Weitere Informationen finden Sie unter Konfigurieren der Clientzertifikatauthentifizierung in Azure Container Apps.
Sie müssen die Clientzertifikatüberprüfung in Ihrem Code behandeln.
Datenverkehr zwischen Anwendungen
Standardmäßig verwendet datenverkehr zwischen Container-Apps in derselben Umgebung HTTP. Um diesen Datenverkehr zu schützen, aktivieren Sie die Peer-to-Peer-Verschlüsselung mit den folgenden Befehlen:
# enable when creating the container app
az containerapp env create \
--resource-group "my-resource-group" \
--name "my-app" \
--location "location" \
--enable-peer-to-peer-encryption
# enable for the existing container app
az containerapp env update \
--resource-group "my-resource-group" \
--name "my-app" \
--enable-peer-to-peer-encryption
Nach der Aktivierung sichert Azure Container Apps automatisch den HTTP-Datenverkehr über die integrierte transparente Proxying-Funktion. Ihre Anwendung muss in der Regel nicht darauf achten, ob der Datenverkehr verschlüsselt ist oder nicht.
Wenn Sie HTTPS für die interne Kommunikation zwischen Apps verwenden möchten, müssen Sie die Zertifikatüberprüfung übernehmen. Dies liegt daran, dass der Domänenname möglicherweise nicht mit dem Common Name (CN) oder dem Subject Alternative Name (SAN) des Zertifikats übereinstimmt.
Weitere Informationen finden Sie im Abschnitt zur Peer-to-Peer-Verschlüsselung im Dokument Ingress in einer Azure Container Apps Umgebung konfigurieren.
Datenverkehr zu externen Diensten
In diesem Beispiel wird gezeigt, wie TLS und mTLS für den Datenverkehr zu externen Diensten durch Laden des Zertifikats aus Azure Key Vault mithilfe der spring-cloud-azure-starter-keyvault-jca Bibliothek aktiviert werden. Ihr Java-Projekt muss Spring Boot 3.1+ verwenden und die folgende Abhängigkeit in ihre pom.xml Datei einschließen:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-jca</artifactId>
<version>5.23.0</version>
</dependency>
Ein Zertifikat aus dem Key Vault mit SSL-Bundle in den Truststore laden
Führen Sie die folgenden Schritte aus, um ein Zertifikat mithilfe der spring-cloud-azure-starter-keyvault-jca Bibliothek in den Truststore aus Azure Key Vault zu laden:
Generieren oder Importieren von Zertifikaten in Azure Key Vault. Weitere Informationen finden Sie unter Erstellen und Importieren von Zertifikaten in Azure Key Vault.
Aktivieren Sie die verwaltete Identität in Ihrer Container-App. Informationen zum Aktivieren der verwalteten Identität in Ihrer Container-App finden Sie unter Verwaltete Identitäten in Azure Container Apps.
Gewähren Sie der verwalteten Identität die
Key Vault Certificate UserRolle in Ihrem Key Vault. Weitere Informationen finden Sie unter Bewährte Methoden für einzelne Schlüssel, geheime Schlüssel und Zertifikatrollenzuweisungen.Fügen Sie ihrer application.yml Datei die folgende Konfiguration hinzu:
spring: ssl: bundle: keyvault: tlsClientBundle: truststore: keyvault-ref: keyvault1 cloud: azure: keyvault: jca: vaults: keyvault1: endpoint: ${KEY_VAULT_SSL_BUNDLES_KEYVAULT_URI_01} credential: client-id: ${KEY_VAULT_SSL_BUNDLES_CLIENT_ID} # Required for user-assigned managed identity managed-identity-enabled: trueUm das Schlüsseltresor-SSL-Bundle anzuwenden, aktualisieren Sie Ihre
RestTemplate- oderWebClient-Bean-Konfiguration, wie im folgenden Beispiel gezeigt.// For RestTemplate @Bean RestTemplate restTemplateWithTLS(RestTemplateBuilder restTemplateBuilder, SslBundles sslBundles) { return restTemplateBuilder.sslBundle(sslBundles.getBundle("tlsClientBundle")).build(); } // For WebClient @Bean WebClient webClientWithTLS(WebClientSsl ssl) { return WebClient.builder().apply(ssl.fromBundle("tlsClientBundle")).build(); }
Aktivieren der mTLS-Kommunikation
Führen Sie die folgenden Schritte aus, um mTLS für die bidirektionale Authentifizierung zwischen Client und Server einzurichten:
Generieren oder Importieren von Client- und Serverzertifikaten in Azure Key Vault. Weitere Informationen finden Sie unter Erstellen und Importieren von Zertifikaten in Azure Key Vault.
Aktivieren Sie die verwaltete Identität für Ihre Container-App. Informationen zum Aktivieren der verwalteten Identität in Ihrer Container-App finden Sie unter Verwaltete Identitäten in Azure Container Apps.
Gewähren Sie der verwalteten Identität die Rolle
Key Vault Certificate Userfür beide Schlüssel-Tresore. Weitere Informationen finden Sie unter Bewährte Methoden für einzelne Schlüssel, geheime Schlüssel und Zertifikatrollenzuweisungen.Fügen Sie der application.yml-Datei für mTLS die folgende Konfiguration hinzu:
spring: ssl: bundle: keyvault: mtlsClientBundle: key: alias: client for-client-auth: true keystore: keyvault-ref: keyvault2 truststore: keyvault-ref: keyvault1 cloud: azure: keyvault: jca: vaults: keyvault1: endpoint: ${KEY_VAULT_SSL_BUNDLES_KEYVAULT_URI_01} credential: client-id: ${KEY_VAULT_SSL_BUNDLES_CLIENT_ID} # Required for user-assigned managed identity managed-identity-enabled: true keyvault2: endpoint: ${KEY_VAULT_SSL_BUNDLES_KEYVAULT_URI_02} credential: client-id: ${KEY_VAULT_SSL_BUNDLES_CLIENT_ID} # Required for user-assigned managed identity managed-identity-enabled: trueUm das Schlüsseltresor-SSL-Bundle anzuwenden, aktualisieren Sie Ihre
RestTemplate- oderWebClient-Bean-Konfiguration, wie im folgenden Beispiel gezeigt.// For RestTemplate @Bean RestTemplate restTemplateWithMTLS(RestTemplateBuilder restTemplateBuilder, SslBundles sslBundles) { return restTemplateBuilder.sslBundle(sslBundles.getBundle("mtlsClientBundle")).build(); } // For WebClient @Bean WebClient webClientWithMTLS(WebClientSsl ssl) { return WebClient.builder().apply(ssl.fromBundle("mtlsClientBundle")).build(); }
Weitere Informationen zur Verwendung der Bibliothek in Ihrer Spring Boot-Anwendung finden Sie in spring-cloud-azure-starter-keyvault-jca.
Indem Sie diese Schritte ausführen, können Sie Ihre benutzerdefinierte Domäne erfolgreich mit TLS/SSL von Azure Spring Apps zu Azure Container Apps migrieren, um eine sichere und effiziente Kommunikation über alle Datenverkehrstypen hinweg aufrechtzuerhalten.