使用带有Terraform的自签名证书部署Application Gateway

时间:2019-01-20 20:47:56

标签: azure terraform-provider-azure

我有一个Terraform部署,该部署在Azure中部署应用程序网关,以控制到托管应用程序的应用程序服务环境的流量。当前,部署会创建一个使用端口80 / HTTP的侦听器,但是现在我可以按照需要进行所有操作,因此我想修改部署以在App Gateway上执行SSL终止。我已创建用于测试目的的自签名证书,并将该证书加载到Azure Key Vault中。我现在试图弄清楚如何修改我的部署以使用证书。我唯一能找到的就是需要将ssl_certificate_name属性添加到侦听器,但是我知道它还不止这些。如何告诉Terraform证书“在哪里”?

1 个答案:

答案 0 :(得分:1)

不幸的是,应用程序网关不支持直接从存储在密钥库中的证书获取引用,您可以升级到support SSL certificates stored in Key Vault secrets for listeners and backend HTTP settings on Application Gateway

在此document中,http_listener块仅支持通过ssl_certificate_name引用证书,因此您可以从namedata属性中引用证书在ssl_certificate块中。在此块中,data要求使用认证证书的内容。另外,您可以使用内置函数file来读取证书base64encode的内容。例如,要读取文件:${file("path.txt")}

ssl_certificate {
     name     = "default"
     data     = "${base64encode(file("mycert.pfx"))}"
     password = "XXXXXXX"
  }

  http_listener {
    name                           = "https"
    frontend_ip_configuration_name = "default"
    frontend_port_name             = "https"
    protocol                       = "Https"
    ssl_certificate_name           = "default"
  }

您可以获得有关attaching SSL certificate to Azure application gateway in TerraformAzure Application Gateway with end-to-end SSL的更多方案。