Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Plány Basic, Standarda Enterprise vstoupily do důchodového období 17. března 2025. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Tento článek se vztahuje na:✅ Basic/Standard ✅ Enterprise
Migrace vlastní domény pomocí protokolu TLS/SSL z Azure Spring Apps do Azure Container Apps zahrnuje několik kroků, které zajistí hladký přechod. Tento článek vás provede procesem zahrnujícím klientský provoz, provoz mezi aplikacemi a provoz do externích služeb.
Požadavky
- Existující aplikace kontejneru Azure. Další informace najdete v článku Rychlý start: Nasazení první aplikace kontejneru s využitím webu Azure Portal.
- Rozhraní příkazového řádku Azure (CLI).
- Existující certifikát TLS/SSL – například certifikát uložený ve službě Azure KeyVault.
- (Volitelné) Existující účet úložiště Azure, pokud chcete načíst certifikát do úložiště důvěryhodnosti ze sdílené složky úložiště Azure. Další informace najdete v tématu Vytvoření účtu úložiště Azure.
Klientský provoz do aplikace
Ve výchozím nastavení veškerý příchozí provoz v aplikaci kontejneru používá protokol HTTPS, pokud ručně nepovolíte provoz HTTP, který můžete provést pomocí následujícího příkazu:
az containerapp ingress update \
--resource-group "my-resource-group" \
--name "my-app" \
--allow-insecure
Další informace o konfiguraci příchozího přenosu dat pro vaši aplikaci najdete v tématu Konfigurace příchozího přenosu dat pro vaši aplikaci v Azure Container Apps.
Vlastní doména
Pokud chcete zabezpečit vlastní názvy DNS (Domain Name System) v Azure Container Apps, můžete přidat digitální certifikáty zabezpečení. To podporuje zabezpečenou komunikaci mezi vašimi aplikacemi.
Pokud potřebujete zabezpečit vlastní doménu ve službě Azure Container Apps, můžete použít privátní certifikát, který je bezplatný a snadno použitelný. Další informace najdete v tématu Vlastní názvy domén a bezplatné spravované certifikáty v Azure Container Apps.
Pokud máte uložený privátní certifikát místně, můžete ho nahrát. Další informace najdete v tématu Vlastní názvy domén a používání vlastních certifikátů v Azure Container Apps.
Pokud je váš certifikát ze služby Azure Key Vault, můžete certifikáty importovat přímo do Azure Container Apps. Další informace najdete v tématu Import certifikátů ze služby Azure Key Vault do azure Container Apps.
Pokud chcete dál používat původní certifikát a název domény z Azure Spring Apps, můžete certifikát nahrát do kontejnerových aplikací nebo do služby Azure Key Vault. Můžete také aktualizovat záznam A nebo CNAME ve vašem poskytovateli DNS a přesměrovat původní název domény na IP adresu nebo adresu URL aplikace kontejneru.
Povolení mTLS mezi klientskými a kontejnerovými aplikacemi
Pokud chcete povolit vzájemné tls (mTLS) mezi klientem a kontejnerovými aplikacemi, postupujte následovně:
Pomocí následujícího příkazu exportujte konfiguraci aplikace kontejneru ve formátu YAML:
az containerapp show \ --resource-group "my-resource-group" \ --name "my-app" \ --output yaml > app.yamlclientCertificateModeAktualizujte hodnotu v souboru app.yaml, jak je znázorněno v následujícím příkladu:properties: configuration: ingress: clientCertificateMode: requireTuto vlastnost můžete nastavit na jednu z následujících hodnot:
-
require: Klientský certifikát se vyžaduje pro všechny požadavky na aplikaci kontejneru. -
accept: Klientský certifikát je volitelný. Pokud není zadaný klientský certifikát, žádost se stále přijme. -
ignore: Klientský certifikát se ignoruje.
-
Pomocí následujícího příkazu aplikujte
clientCertificateModezměnu na kontejnerovou aplikaci:az containerapp update \ --resource-group "my-resource-group" \ --name "my-app" \ --yaml app.yaml
Další informace najdete v tématu Konfigurace ověřování klientských certifikátů v Azure Container Apps.
V kódu musíte zpracovat ověření klientského certifikátu.
Provoz mezi aplikacemi
Ve výchozím nastavení používá provoz mezi aplikacemi kontejnerů ve stejném prostředí protokol HTTP. Pokud chcete tento provoz zabezpečit, povolte šifrování peer-to-peer pomocí následujících příkazů:
# 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
Jakmile je služba Azure Container Apps povolená, automaticky zabezpečuje provoz HTTP prostřednictvím integrované funkce transparentního proxy serveru. Vaše aplikace obvykle nemusí zajímat, jestli je provoz zašifrovaný nebo ne.
Pokud chcete pro interní komunikaci mezi aplikacemi používat protokol HTTPS, musíte zpracovat ověření certifikátu. Důvodem je to, že název domény nemusí odpovídat běžnému názvu certifikátu (CN) nebo alternativnímu názvu subjektu (SAN).
Další informace najdete v části Šifrování peer-to-peer v sekci Konfigurace ingressu v prostředí Azure Container Apps.
Přenos dat směrem k externím službám
Tato ukázka ukazuje, jak povolit tls a mTLS pro provoz do externích služeb načtením certifikátu ze služby Azure Key Vault pomocí spring-cloud-azure-starter-keyvault-jca knihovny. Projekt Java musí používat Spring Boot 3.1 nebo novější a zahrnout do souboru pom.xml následující závislost:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-jca</artifactId>
<version>5.23.0</version>
</dependency>
Načtení certifikátu do úložiště důvěryhodnosti ze služby Key Vault s využitím sady SSL
Pomocí následujících kroků načtěte certifikát do úložiště důvěryhodnosti ze služby Azure Key Vault pomocí spring-cloud-azure-starter-keyvault-jca knihovny:
Generování nebo import certifikátů ve službě Azure Key Vault Další informace najdete v tématu Vytváření a import certifikátů ve službě Azure Key Vault.
Povolte spravovanou identitu v aplikaci kontejneru. Pokud chcete ve své aplikaci kontejneru povolit spravovanou identitu, přečtěte si téma Spravované identity v Azure Container Apps.
Udělte roli
Key Vault Certificate Userspravované identitě ve službě Key Vault. Další informace najdete v tématu Osvědčené postupy pro jednotlivá přiřazení rolí klíčů, tajných klíčů a certifikátů.Do souboru application.yml přidejte následující konfiguraci:
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: truePokud chcete použít sadu SSL služby Key Vault, aktualizujte
RestTemplateneboWebClientkonfiguraci beanu, jak je znázorněno v následujícím příkladu:// 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(); }
Povolení komunikace mTLS
Pomocí následujících kroků nastavte MTLS pro obousměrné ověřování mezi klientem a serverem:
Vygenerujte nebo importujte certifikáty klienta i serveru do služby Azure Key Vault. Další informace najdete v tématu Vytváření a import certifikátů ve službě Azure Key Vault.
Povolte spravovanou identitu pro vaši aplikaci kontejneru. Pokud chcete ve své aplikaci kontejneru povolit spravovanou identitu, přečtěte si téma Spravované identity v Azure Container Apps.
Udělte roli
Key Vault Certificate Userspravované identitě pro oba trezory klíčů. Další informace najdete v tématu Osvědčené postupy pro jednotlivá přiřazení rolí klíčů, tajných klíčů a certifikátů.Do souboru application.yml pro mTLS přidejte následující konfiguraci:
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: truePokud chcete použít sadu SSL služby Key Vault, aktualizujte
RestTemplateneboWebClientkonfiguraci beanu, jak je znázorněno v následujícím příkladu:// 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(); }
Další informace o používání spring-cloud-azure-starter-keyvault-jca knihovny v aplikaci Spring Boot najdete v tématu Představení Spring Cloudu Azure Starter Key Vault JCA: Zjednodušené tls a mTLS pro Spring Boot.
Pomocí těchto kroků můžete úspěšně migrovat vlastní doménu pomocí protokolu TLS/SSL z Azure Spring Apps do Azure Container Apps a zajistit tak zabezpečenou a efektivní komunikaci napříč všemi typy přenosů.