
AcmeAzure是一个Docker容器,用于从Let's Encrypt请求SSL证书并自动安装到Azure WebApp。通过在Azure Container Instance中运行,容器利用托管服务身份(Managed Service Identity)登录Azure CLI,使用DNS挑战方式向Let's Encrypt发起证书请求,自动在Azure DNS Zone中创建所需的TXT记录,并将生成的证书上传至Azure WebApp并配置SSL绑定。通过将/etc/letsencrypt目录挂载到Azure Files共享,容器具备幂等性,仅在证书即将过期时才请求新证书。
适用于需要为Azure WebApp配置SSL证书的场景,尤其适合需要自动化证书申请、更新和部署的用户。例如:
| 变量名 | 说明 | 是否必填 |
|---|---|---|
EMAIL | 用于Let's Encrypt的联系*** | 是 |
DOMAIN | 证书的域名(若为通配符证书,填写裸域,如example.com) | 是 |
RESOURCE_GROUP | 包含WebApp和DNS Zone的资源组名称 | 是 |
ZONE_NAME | Azure DNS Zone名称 | 是 |
APP_SERVICE | Azure App Service名称 | 是 |
WILDCARD | 可选,设为"true"时生成通配符证书(包含DOMAIN和*.DOMAIN) | 否 |
ACME_SERVER | 可选,ACME服务器URL(如测试环境:https://acme-staging-v02.api.letsencrypt.org/directory) | 否 |
bashaz container create \ --resource-group myResourceGroup \ --name acmeazure \ --image darranshepherd/acmeazure \ --assign-identity $resourceID \ --restart-policy Never \ --azure-file-volume-account-name storageaccountname \ --azure-file-volume-account-key storageaccountkey \ --azure-file-volume-share-name certbot \ --azure-file-volume-mount-path /etc/letsencrypt \ --environment-variables EMAIL="foo@bar.com" DOMAIN=bar.com RESOURCE_GROUP=myResourceGroup ZONE_NAME=bar.com APP_SERVICE=appservice
bashaz identity create --resource-group myResourceGroup --name letsencrypt
Create-Certificate.ps1脚本,传入必要参数:
powershell.\Create-Certificate.ps1 ` -Email "foo@bar.com" ` -ResourceGroup myResourceGroup ` -Location "North Europe" ` -IdentityName letsencrypt ` -StorageAccount storageaccountname ` -StorageKey aaaaaaaaaaaaaaaaaaaa== ` -StorageShare sharename ` -Domain bar.com ` -ZoneName bar.com ` -AppService appservice ` -Wildcard "true" ` -AcmeServer "https://acme-staging-v02.api.letsencrypt.org/directory"
目前,Logic Apps连接器和Azure Automation中的Azure RM PowerShell cmdlet尚不支持为容器组启用MSI。待支持后,本文档将更新自动化运行容器的详细步骤。
容器运行时执行acmeazure.sh脚本,流程如下:
azurednsauthenticator.sh在Azure DNS Zone中创建所需TXT记录;azurednscleanup.sh在验证完成后清理该记录azurewebappbind.sh,将证书链生成PKCS#12 (.pfx)文件,上传至WebApp并创建SSL绑定/etc/letsencrypt目录的文件存储在tar归档中,容器首次运行时提取以保留符号链接/etc/letsencrypt您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务