You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Graph API与PowerShell的Invoke-RestMethod获取应用代理SSL证书信息

获取企业应用Application Proxy SSL证书信息(仅Graph API + PowerShell Invoke-RestMethod)

核心思路

直接调用Microsoft Graph API查询企业应用(servicePrincipal)的applicationProxy属性,其中customDomainSslCertificates数组包含了Application Proxy自定义域名的SSL证书详情,从中提取Subject、证书指纹(Thumbprint)和过期时间。

所需权限

需要以下任一应用权限或委派权限:

  • Application.Read.All
  • Directory.Read.All

PowerShell实现步骤与脚本

1. 获取Graph API访问令牌

以客户端凭据流为例(适合自动化脚本):

# 配置参数
$tenantId = "你的租户ID"
$clientId = "你的应用注册客户端ID"
$clientSecret = "你的应用注册客户端密钥"
$tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"

# 请求令牌
$tokenParams = @{
    grant_type    = "client_credentials"
    client_id     = $clientId
    client_secret = $clientSecret
    scope         = "https://graph.microsoft.com/.default"
}
$tokenResponse = Invoke-RestMethod -Uri $tokenEndpoint -Method Post -Body $tokenParams
$accessToken = $tokenResponse.access_token

2. 调用Graph API查询证书信息

筛选启用Application Proxy的企业应用,并展开证书相关属性:

$graphApiEndpoint = "https://graph.microsoft.com/v1.0/servicePrincipals`?`$filter=appId ne null and applicationProxy/isEnabled eq true&`$expand=applicationProxy(`$expand=customDomainSslCertificates)"

$headers = @{
    Authorization = "Bearer $accessToken"
    ContentType   = "application/json"
}

$appProxyApps = Invoke-RestMethod -Uri $graphApiEndpoint -Method Get -Headers $headers

3. 解析提取目标字段

遍历返回结果,提取每个应用的证书详情:

foreach ($app in $appProxyApps.value) {
    Write-Host "企业应用名称: $($app.displayName)" -ForegroundColor Cyan
    if ($app.applicationProxy.customDomainSslCertificates) {
        foreach ($cert in $app.applicationProxy.customDomainSslCertificates) {
            Write-Host "--- 证书信息 ---"
            Write-Host "Subject: $($cert.subjectName)"
            Write-Host "证书指纹: $($cert.thumbprint)"
            Write-Host "过期时间: $([datetime]$cert.expirationDate)"
        }
    } else {
        Write-Host "该应用未配置自定义域名SSL证书" -ForegroundColor Yellow
    }
    Write-Host "`n"
}

补充说明

  • 若查询单个企业应用,可将端点改为GET /servicePrincipals/{servicePrincipalId}?$expand=applicationProxy($expand=customDomainSslCertificates),替换{servicePrincipalId}为目标应用的服务主体ID。
  • 返回的expirationDate为ISO 8601格式字符串,可通过[datetime]转换为PowerShell日期对象。

内容的提问来源于stack exchange,提问作者kila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:55:14