在 Azure 应用程序网关中包含 Letsencrypt 根证书
Include Letsencrypt Root certificate in Azure Application Gateway
我正在尝试遵循 Azure Tutorial 如何在 vnet 下进行 Api 管理并可通过应用程序网关 (WAF) 进行访问。我一直在尝试将根证书上传到应用程序网关。它说“证书数据无效”,显然 Azure 应用程序网关不喜欢 Letsencrypt 证书。
我的证书是:
- mydomain.com.br
- api.mydomain.com.br
- 开发者。mydomain.com.br
- 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
我正在尝试遵循 Azure Tutorial 如何在 vnet 下进行 Api 管理并可通过应用程序网关 (WAF) 进行访问。我一直在尝试将根证书上传到应用程序网关。它说“证书数据无效”,显然 Azure 应用程序网关不喜欢 Letsencrypt 证书。
我的证书是:
- mydomain.com.br
- api.mydomain.com.br
- 开发者。mydomain.com.br
- 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