删除Microsoft云 PKI 证书颁发机构
从 Microsoft Intune 中的 Microsoft Cloud PKI 服务中删除颁发者和根证书颁发机构 (CA) 。 可以在 Microsoft Intune 管理中心使用以下操作来管理租户中的证书颁发机构 (CA) :
- 暂停 CA - 暂停 CA 以停止使用它。
- 撤销 CA - 吊销所有活动叶证书,然后吊销 CA。
- 删除 CA - 从 Intune Microsoft中删除 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 的选项现在应可用。 选择“ 删除 ”,从 Intune Microsoft中删除 CA。
系统提示确认时,再次选择“ 删除 ”。
重要
此操作无法撤消。
返回到 CA 列表,然后选择 “刷新”。 确认颁发 CA 不再显示在列表中。
删除根 CA
从 Microsoft Intune 中永久删除根 CA。
提示
删除根 CA 之前,请删除所有定位的颁发 CA。
转到 租户管理>云 PKI。
从可用 CA 列表中选择根 CA。 选择 CA 会打开其可用操作。
选择“ 删除 ”,从 Intune Microsoft中删除 CA。
系统提示确认时,再次选择“ 删除 ”。
重要
此操作无法撤消。
返回到 CA 列表,然后选择 “刷新”。 确认根 CA 不再显示在列表中。
撤销活动叶证书
尝试撤销颁发 CA 时,请务必先撤销其所有活动叶证书。 可以从颁发 CA 一次吊销一个叶证书,也可以批量吊销叶证书。
吊销叶证书
- 在 Microsoft Intune 管理中心,转到 租户管理>云 PKI。
- 选择颁发 CA。
- 选择 “查看所有证书”。
- 选择活动叶证书,然后选择 “撤销”。 对每个剩余的叶证书重复此步骤。
撤销所有叶证书
可以使用本部分中的示例 PowerShell 脚本来撤销属于 CA 的所有叶证书。 该脚本从 Microsoft Intune 租户中检索有关 Microsoft Cloud 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"
}