删除Microsoft 云 PKI证书颁发机构
从 Microsoft Intune Microsoft 云 PKI 服务中删除颁发者和根证书颁发机构 (CA) 。 可以在 Microsoft Intune 管理中心使用以下作来管理租户中的证书颁发机构 (CA) :
- 暂停 CA - 暂停 CA 以停止使用它。
- 撤销 CA - 吊销所有活动叶证书,然后吊销 CA。
- 删除 CA - 从Microsoft Intune中删除 CA。
在删除所有定位颁发 CA 之前,无法删除根 CA。 如果在暂停某个 CA 后改变了主意,可以取消暂停以恢复使用。 但是,撤销和删除 CA 是永久性作,无法撤消。
本文介绍如何使用管理中心中的可用作从Microsoft Intune中删除颁发 CA 和根 CA。
基于角色的访问要求
这些管理员角色可以在Microsoft Intune管理中心中删除 CA:
- Intune管理员,内置Microsoft Entra角色
- 自定义Intune角色,分配了以下Intune权限:
- 读取 CA
- 禁用和重新启用 CA
- 撤销颁发的叶证书
删除颁发 CA
从Microsoft Intune永久删除颁发 CA。 如果尝试删除根 CA,请先完成这些步骤以删除定位到该根 CA 的颁发 CA。
转到租户管理>云 PKI。
从可用 CA 列表中选择活动颁发 CA。 选择 CA 会打开其可用作。
选择“ 暂停”。
出现确认提示时,再次选择“ 暂停 ”。
注意
暂停发出 CA 后:
- 它无法颁发叶证书。
- 它继续响应证书吊销列表 (CRL) 请求和 AIA 请求。
返回 CA 列表,然后选择“刷新”。 然后,在 “状态” 列下查看,确认颁发 CA 已暂停。
选择暂停的 CA 以再次打开所有可用选项。 将显示两个新选项:
- 恢复:此选项取消暂停 CA 并使其再次处于活动状态。
- 撤销:此选项撤销颁发 CA。
选择“ 撤销”。
提示
若要使此作有效,必须已吊销属于 CA 的所有活动叶证书。 有关详细信息和步骤,请参阅本文中的 撤销活动叶证书 。
出现确认提示时,再次选择“ 撤销 ”。
重要
此作无法撤消。
注意
撤销颁发 CA 后:
- 它继续响应 CRL 和 AIA 请求。
- 执行信任链作的信赖方不再信任它。
- 根 CA 的 CRL 显示已撤销颁发 CA 证书。
- CA 颁发的所有现有叶证书停止进行身份验证。
返回 CA 列表,然后选择“刷新”。 然后,在 “状态” 列下查看,确认颁发 CA 是否已撤销。
选择吊销的 CA 以再次打开所有可用选项。
删除 CA 的选项现在应可用。 选择“删除”,从Microsoft Intune中删除 CA。
系统提示确认时,再次选择“ 删除 ”。
重要
此作无法撤消。
返回 CA 列表,然后选择“刷新”。 确认颁发 CA 不再显示在列表中。
删除根 CA
从Microsoft Intune永久删除根 CA。
提示
删除根 CA 之前,请删除所有定位的颁发 CA。
转到租户管理>云 PKI。
从可用 CA 列表中选择根 CA。 选择 CA 会打开其可用作。
选择“删除”,从Microsoft Intune中删除 CA。
系统提示确认时,再次选择“ 删除 ”。
重要
此作无法撤消。
返回 CA 列表,然后选择“刷新”。 确认根 CA 不再显示在列表中。
撤销活动叶证书
尝试撤销颁发 CA 时,请务必先撤销其所有活动叶证书。 可以从颁发 CA 一次吊销一个叶证书,也可以批量吊销叶证书。
吊销叶证书
- 在Microsoft Intune管理中心,转到租户管理>云 PKI。
- 选择颁发 CA。
- 选择 “查看所有证书”。
- 选择活动叶证书,然后选择 “撤销”。 对每个剩余的叶证书重复此步骤。
撤销所有叶证书
可以使用本部分中的示例 PowerShell 脚本来撤销属于 CA 的所有叶证书。 该脚本从Microsoft Intune租户中检索有关Microsoft 云 PKI的信息,并吊销租户中颁发 CA 的叶证书。
- 该脚本检索所有叶证书,并为每个证书执行吊销作。
- 该脚本提示管理员确认要吊销所有叶证书。
- 该脚本有一个可选配置,可以包含该配置,该配置会为每个证书发送确认提示。 脚本中的 部分在示例中已注释掉,因此如果要运行该部分,请将其重新添加。
重要
请谨慎使用此脚本。 无法撤消任何叶证书的撤销作。
- 运行示例脚本之前,请先查看该脚本,以便更好地了解其工作原理,并考虑它如何影响租户。
- 首先在非生产或测试租户帐户中运行示例脚本。
该脚本安装 Microsoft Graph PowerShell 模块 ,Microsoft.Graph。 运行脚本的设备必须具有管理权限才能成功安装模块。
命令 Connect-MgGraph
必须由有权在颁发 CA 上吊销叶证书的管理员颁发。
运行脚本需要 CA ID。 若要在管理中心查找此信息,请执行以下作:
转到租户管理>云 PKI。
选择颁发 CA。
查看浏览器 URL 以查找 CA ID。 URL 末尾的连字符字母数字字符串是 CA ID。 例如,在以下 URL 中,CA ID 为 f12345-acf1-12ab-1b2a-1a1234567a89:
https://intune.microsoft.com/#view/Microsoft_Intune_DeviceSettings/CaDetails.ReactView/id/f12345-acf1-12ab-1b2a-1a1234567a89
示例脚本
从管理工作站运行示例 PowerShell 脚本。 若要运行它,必须具有以下Intune权限:
- 读取 CA
- 撤销颁发的叶证书
param (
[string]$caId = $(Read-Host "Input CaId")
)
Install-Module Microsoft.Graph
Connect-MgGraph -Scopes "DeviceManagementConfiguration.ReadWrite.All"
Start-Transcript -Path ".\RevokeAllLeafCerts_$($caId)_$(Get-Date -f 'yyyyMMdd-HHmmss').txt"
### Get all leaf certs
$leafCerts = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/beta/devicemanagement/cloudCertificationAuthority/$caId/cloudCertificationAuthorityLeafCertificate"
# Prompt user to confirm data cleanup
$confirmAllDelete = $(Write-Host "Are you 100% sure you want to revoke all $($leafCerts.value.count) certificates for CA $($caId)?" -ForegroundColor Yellow; Write-Host '[Y] Yes' -NoNewline; Write-Host ' [N] No' -ForegroundColor Yellow -NoNewline;
Read-Host " ")
if ($confirmAllDelete.ToLower() -ne "y" -and $confirmAllDelete.ToLower() -ne "yes") {
Write-Host "Aborted"
Stop-Transcript
exit
}
# Iterate on retrieved leaf certs and revoke
foreach ($leafCert in $leafCerts.value)
{
Write-Host ""
if ($leafCert.certificateStatus.ToLower() -eq "revoked") {
Write-Host "LeafCert id: $($leafCert.id), thumbprint: $($leafCert.thumbprint) is already revoked. Skipping"
continue
}
Write-Host "Revoking leafCert id: $($leafCert.id), thumbprint: $($leafCert.thumbprint)"
# Uncomment next five lines to prompt for each cert
# $confirmCertDelete = $(Write-Host "Are you sure you want to revoke leafCert id: $($leafCert.id), thumbprint: $($leafCert.thumbprint), $($leafCert.certificateStatus)?" -ForegroundColor Yellow; Write-Host '[Y] Yes' -NoNewline; Write-Host ' [N] No' -ForegroundColor Yellow -NoNewline; Read-Host " ")
# if ($confirmCertDelete.ToLower() -ne "y" -and $confirmCertDelete.ToLower() -ne "yes") {
# Write-Host "Skipping"
# continue
# }
$currentCertId = $($leafCert.id)
$revokeParams = @{ "leafCertificateId" = $($leafCert.id) }
Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/beta/devicemanagement/cloudCertificationAuthority/$caId/revokeLeafCertificate" -Body ($revokeParams|ConvertTo-Json) -ContentType "application/json"
}