Estoy tratando de crear un servicio para la redirección web a través de la puerta de enlace de aplicaciones usando terraform.
Me gustaria autenticar el application gateway sl con el certificado gratuito (azurm_app_service_managed_certified) del azure app service plan, hay algun ejemplo?
Actualmente, pensando en la composición de la siguiente manera. Sin embargo, azurem_application_gateway exige la certificación SSL, por lo que no sé cómo funciona.
Por favor, hágamelo saber si hay una manera de resolver el problema de esa manera o de otra manera.
El problema con el siguiente script es que si desea usar https en la puerta de enlace de la aplicación, debe usar un certificado, y quiero crear y usar un certificado gratuito en el plan de servicio.
resource "azurerm_application_gateway" "app_gateway" {
provider = azurerm.generic
name = "${local.service_name}-app-gateway"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
enable_http2 = true
sku {
name = "Standard_Small"
tier = "Standard" # v1
capacity = 2
}
gateway_ip_configuration {
name = "${local.service_name}-ip-config"
subnet_id = azurerm_subnet.front_subnet.id
}
frontend_port {
name = local.frontend_port_name
port = 80
}
frontend_port {
name = local.backend_port_name
port = 443
}
frontend_ip_configuration {
name = local.frontend_ip_configuration_name
public_ip_address_id = azurerm_public_ip.pub_ip.id
}
backend_address_pool {
name = "${azurerm_virtual_network.vn.name}-beap"
fqdns = [local.host_name]
}
backend_http_settings {
name = local.http_setting_name
cookie_based_affinity = "Disabled"
port = 443
protocol = "Https"
request_timeout = 60
host_name = local.host_name
}
http_listener {
name = "${local.listener_name}-http"
frontend_ip_configuration_name = local.frontend_ip_configuration_name
frontend_port_name = local.frontend_port_name
protocol = "Http"
}
http_listener {
name = "${local.listener_name}-https"
frontend_ip_configuration_name = local.frontend_ip_configuration_name
frontend_port_name = local.backend_port_name
protocol = "Https"
}
request_routing_rule {
name = "${local.request_routing_rule_name}-http"
rule_type = "Basic"
http_listener_name = "${local.listener_name}-http"
backend_address_pool_name = local.backend_address_pool_name
backend_http_settings_name = local.http_setting_name
}
redirect_configuration {
name = local.redirect_configuration_name
redirect_type = "Permanent"
include_path = false
include_query_string = false
target_listener_name = "${local.listener_name}-https"
}
request_routing_rule {
name = "${local.request_routing_rule_name}-https"
rule_type = "Basic"
http_listener_name = "${local.listener_name}-https"
redirect_configuration_name = local.redirect_configuration_name
}
lifecycle {
ignore_changes = [
backend_address_pool,
backend_http_settings,
frontend_port,
http_listener,
request_routing_rule,
ssl_certificate,
redirect_configuration
]
}
}
resource "azurerm_dns_zone" "zone" {
provider = azurerm.generic
for_each = toset(local.dns_zone_names)
name = each.key
resource_group_name = azurerm_resource_group.rg.name
}
resource "azurerm_app_service_plan" "service_plan" {
provider = azurerm.generic
name = "${local.service_name}-service-plan"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
sku {
tier = "Basic"
size = "B1"
}
}
resource "azurerm_app_service" "service" {
provider = azurerm.generic
name = "${local.service_name}-service"
app_service_plan_id = azurerm_app_service_plan.service_plan.id
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
}
resource "azurerm_app_service_custom_hostname_binding" "service_host_bind" {
provider = azurerm.generic
count = length(local.dns_zone_names)
hostname = "${local.dns_zone_names[count.index]}"
app_service_name = azurerm_app_service.service.name
resource_group_name = azurerm_resource_group.rg.name
lifecycle {
ignore_changes = [ssl_state, thumbprint]
}
depends_on = [
azurerm_app_service.service,
azurerm_resource_group.rg
]
}
resource "azurerm_app_service_managed_certificate" "service_manage_cert" {
provider = azurerm.generic
count = length(local.dns_zone_names)
custom_hostname_binding_id = azurerm_app_service_custom_hostname_binding.service_host_bind[count.index].id
}
resource "azurerm_app_service_certificate_binding" "service_certi_bind" {
provider = azurerm.generic
count = length(local.dns_zone_names)
hostname_binding_id = azurerm_app_service_custom_hostname_binding.service_host_bind[count.index].id
certificate_id = azurerm_app_service_managed_certificate.service_manage_cert[count.index].id
ssl_state = "SniEnabled"
}
quiero un servicio que simplemente dirija a otro sitio web a través de dns usando terraform, y si hay alguna otra forma, háganoslo saber. (incluye http a https)
Para proteger y prevenir el abuso del sitio web, nos gustaría redirigir varios dominios a un sitio web. ej: (dominio.net -> www.objetivo.comdominio.tv -> www.objetivo.combdominio.net -> www.objetivo.com)
-
Hola, gracias por reproducir XD Lo que estoy pensando ahora es obtener la certificación gratuita del plan de servicio y usarlo. ¿Es posible con un certificado de aplicación gratuita? Hasta donde yo sé, reescribo los soportes de v2, pero uso v1. Además, ¿no está bien no usar reescribir para redirigir?
– dpa456
30 de noviembre de 2021 a las 13:47
-
Ahora que lo pienso, no necesito un certificado SSL http, ¿verdad? Dado que no se requiere el redireccionamiento de http a https, ¿qué opina sobre el plan de servicio que solo autentica y redirecciona http al exterior?
– dpa456
30 de noviembre de 2021 a las 14:42
-
Los certificados están destinados a la aplicación y no al ASP (VM). La redirección es parte de System.WebServer y funciona en la aplicación después de que la negociación SSL se realice con éxito a través del protocolo HTTPS. El plan de servicio es solo un hardware y una aplicación segura con un certificado implementado en ese plan.
– Rohit Tatiya
30 de noviembre de 2021 a las 15:35
-
Ah… Sí, tienes razón. ¿La puerta de enlace de aplicaciones actualmente no admite la redirección http 301 (a una URL externa)?
– dpa456
30 de noviembre de 2021 a las 16:20
-
si, es compatible. debe utilizar la regla de reescritura en la puerta de enlace de la aplicación.learn.microsoft.com/en-us/azure/application-gateway/…
– Rohit Tatiya
1 de diciembre de 2021 a las 7:47