在 Azure 应用程序网关中包含 Letsencrypt 根证书

Include Letsencrypt Root certificate in Azure Application Gateway

我正在尝试遵循 Azure Tutorial 如何在 vnet 下进行 Api 管理并可通过应用程序网关 (WAF) 进行访问。我一直在尝试将根证书上传到应用程序网关。它说“证书数据无效”,显然 Azure 应用程序网关不喜欢 Letsencrypt 证书。

我的证书是:

  1. mydomain.com.br
  2. api.mydomain.com.br
  3. 开发者。mydomain.com.br
  4. managemnet.mydomain.com.br

我已经使用 acmesh 生成了所有证书:

./acme.sh --issue  -d mydomain.com.br --dns dns_gd    --server  letsencrypt
./acme.sh --issue  -d api.mydomain.com.br  --dns dns_gd    --server  letsencrypt
./acme.sh --issue  -d developer.mydomain.com.br ---dns dns_gd    --server  letsencrypt
./acme.sh --issue  -d management.mydomain.com.br --dns dns_gd    --server  letsencrypt

Vnet、子网、安全组和 Api 管理都已成功创建,除了我需要创建应用程序网关的部分外,一切都很好:

$appgwName = "apim-app-gw"
$appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $resGroupName -Location $location `
-BackendAddressPools $apimGatewayBackendPool,$apimPortalBackendPool,$apimManagementBackendPool `
-BackendHttpSettingsCollection $apimPoolGatewaySetting, $apimPoolPortalSetting, $apimPoolManagementSetting `
-FrontendIpConfigurations $fipconfig01 -GatewayIpConfigurations $gipconfig -FrontendPorts $fp01 `
-HttpListeners $gatewayListener,$portalListener,$managementListener `
-RequestRoutingRules $gatewayRule,$portalRule,$managementRule `
-Sku $sku -WebApplicationFirewallConfig $config -SslCertificates $certGateway,$certPortal,$certManagement `
-TrustedRootCertificate $trustedRootCert -Probes $apimGatewayProbe,$apimPortalProbe,$apimManagementProbe

最后一行是我需要告知我的 .cer 文件路径的地方。我尝试添加 mydomain.com.br.cer 和 fullchain.cer,但没有成功。尝试使用 openssl 创建 Base64 文件,也没有成功:

sudo openssl x509 -inform PEM -in /etc/letsencrypt/live/mydomain.com/fullchain.pem -outform DER -out trustedrootDER.cer
openssl x509 -inform der -in trustedrootDER.cer -out trustedroot.cer

我什至创建了一个 VM 运行 Windows to try this approach,不高兴。

从Architecture的角度来看解决方案很简单,但是certs的问题却很麻烦:

非常感谢这里的任何方向! 谢谢

为什么要在您的应用程序网关上添加 Lets Encrypt Root CA 证书?

根据我的理解,Lets Encrypt 的根 CA 是 ISRG Root X1,客户端(浏览器)应该已经信任这个根 CA。如果您有自签名证书,您只想添加根 CA。

这是将证书存储在 Azure Key Vault 中的工作流程:https://techblog.buzyka.de/2021/02/make-lets-encrypt-certificates-love.html

此处的另一个工作流程描述了添加带有 ACME 挑战的证书:https://intelequia.com/blog/post/1012/automating-azure-application-gateway-ssl-certificate-renewals-with-let-s-encrypt-and-azure-automation