使用Terraform部署Azure Application Gateway时可信根证书数据无效如何解决
错误根因定位
你遇到的报错核心原因是Azure Application Gateway 对两种证书块的格式要求完全不同,你错误复用了同一份PFX格式证书:
ssl_certificate块:用于监听器绑定的证书,确实要求传入带私钥的PFX格式文件,你的现有配置是正确的trusted_root_certificate块:用于后端HTTPS服务的证书有效性校验,仅支持传入不带私钥的公钥证书(CER/PEM格式),你直接传入包含公钥+私钥的PFX打包文件,就会触发接口返回数据无效的错误。
解决步骤
- 从现有PFX证书中导出独立的根CA公钥文件,可直接使用openssl命令完成转换:
# 从PFX文件导出不含私钥的PEM/CER格式公钥 openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out trusted_root.cer
如果导出的是二进制DER格式的CER文件,需要额外转成Base64编码格式:
openssl x509 -inform der -in trusted_root_der.cer -out trusted_root_pem.cer
- 新增变量存储根证书路径:
variable "trusted_root_cert_path" { default = "./trusted_root.cer" type = string }
- 修改
trusted_root_certificate配置块,替换证书源:
trusted_root_certificate { data = filebase64(var.trusted_root_cert_path) name = "demo-trusted-root-ca-certificate" }
注意:不要给trusted_root_certificate块添加password参数,该参数仅适用于ssl_certificate的PFX证书场景。
- 重新执行
terraform apply即可完成部署。
内容的提问来源于stack exchange,提问作者Nayden Van
相关产品推荐
相关产品推荐

