续期Let's Encrypt SSL证书报错及PowerShell部署问题咨询
看起来你遇到的这个ArgumentException核心问题是传入的authority参数不是合法的URI格式,结合你提到的用New-AzureRmADApplication部署的背景,大概率是AD应用配置里的URL参数格式不规范,导致后续续期逻辑调用时解析失败。下面是具体的排查和修复步骤:
1. 检查New-AzureRmADApplication命令中的$uri格式
你执行的命令里-HomePage $uri这个参数必须是完整的合法URI,比如要包含http://或https://前缀,不能只是一个域名或者相对路径。举个例子:
- 错误格式:
example.com、/home - 正确格式:
https://example.com、https://your-app-name.azurewebsites.net
你可以先验证当时设置的$uri是否合法,在PowerShell里执行:
[Uri]::IsWellFormedUriString($uri, [UriKind]::Absolute)
如果返回False,说明你的$uri格式有问题,这就是根源之一。
2. 检查已创建的AD应用的配置
即使你当时执行命令没报错,也可能因为参数格式不严谨导致AD应用的HomePage或IdentifierUris配置有问题。你可以用下面的PowerShell命令查看已创建的AD应用详情:
Get-AzureRmADApplication -DisplayName "{your display name}" | Select-Object HomePage, IdentifierUris
重点看这两个字段:
HomePage必须是绝对URI(带http/https前缀)IdentifierUris也需要是合法的URI格式(通常是https://{tenant-id}/{app-id}或者自定义的带前缀的URI)
如果其中任何一个字段格式不符合要求,就需要更新AD应用的配置,比如:
Set-AzureRmADApplication -ObjectId {your-app-object-id} -HomePage "https://your-valid-uri.com" -IdentifierUris @("https://your-valid-uri.com/api")
3. 验证续期逻辑中的authority参数来源
续期证书的函数(Functions.RenewCertificate)里用到的authority参数,通常是从AD应用的配置中获取的(比如HomePage或者租户的权威URI)。你可以检查函数的配置项,或者查看函数代码中构建authority的部分:
- 确保它拼接出来的是完整的URI,比如
https://login.microsoftonline.com/{your-tenant-id}这种格式 - 避免出现遗漏前缀、多了多余字符(比如空格、特殊符号)的情况
4. 重新触发续期测试
修复完AD应用的URI配置和函数中的参数后,手动触发一次证书续期操作,看看错误是否消失。如果还是有问题,可以查看函数的完整日志,找到authority参数的具体值,这样能更精准定位格式问题。
内容的提问来源于stack exchange,提问作者LIB
相关产品推荐
相关产品推荐

