Microsoft Entra Connect 使用 Microsoft Entra Connector 帐户 对 Active Directory 中的标识进行身份验证并同步到 Microsoft Entra Connect。 此帐户使用用户名和密码对请求进行身份验证。
为了增强服务的安全性,我们将推出一个应用程序标识,该标识使用带有证书凭据的 Oauth 2.0 客户端凭据流。 在此新方法中,Microsoft Entra 或管理员在 Microsoft Entra ID 中创建单个租户非Microsoft应用程序,并为凭据使用以下相关证书管理选项之一。
Microsoft Entra Connect 提供三个选项用于应用程序和证书管理:
注释
应用程序管理员角色授予同意应用程序权限的功能,但 Azure AD Graph 和 Microsoft Graph 的应用程序权限除外。 这意味着应用程序管理员仍可以同意其他应用的应用程序权限,尤其是 AWS 第一方应用和 SSPR 第一方应用。
此角色还授予管理应用程序凭据的能力。 分配给此角色的用户可将凭据添加到应用程序(尤其是 Connect Sync),并使用这些凭据模拟应用程序的标识。 这可能是用户通过角色分配可以执行的作的特权提升。
由 Microsoft Entra Connect 管理(默认值)
Microsoft Entra Connect 管理应用程序和证书,其中包括证书的创建、轮换和删除。 证书存储在存储区中 CURRENT_USER 。 为了最佳保护证书的私钥,我们建议计算机应使用受信任的平台模块(TPM)解决方案来建立基于硬件的安全边界。
当 TPM 可用时,密钥服务作会在专用硬件环境中执行。 与此相反,如果无法使用 TPM,Microsoft Entra Connect 默认将证书存储在默认Microsoft软件密钥存储提供程序中,并将私钥标记为不可导出以用于额外保护。 如果没有 TPM 提供的硬件隔离,则只有软件可以保护私钥,这无法实现相同的保护级别。
有关 TPM 技术的详细信息,请参阅 受信任的平台模块技术概述。
建议使用 Microsoft Entra Connect 证书管理(默认)选项,因为我们管理密钥并在到期时自动轮换证书。
Microsoft Entra Connect Sync 使用计划程序检查证书是否应轮换,然后自动轮换证书。 如果计划程序已挂起,即使Microsoft Entra Connect Sync 管理证书,自动证书轮换也不会发生。
自带证书
在“自带证书”设置中,管理员管理应用程序使用的证书凭据。 管理员负责创建证书、轮换和删除未使用的或过期的证书。 证书必须存储在存储区中 LOCAL_MACHINE 。
管理员负责保护证书的私钥,并确保只有Microsoft Entra Connect Sync 才能访问私钥进行签名。
建议使用 TPM 或硬件安全模块(HSM)提供基于硬件的安全边界,而不是默认安全边界。 若要检查 TPM 的状态,请使用 Get-TPM PowerShell cmdlet。
如果使用 Hyper-V 虚拟机(VM),可以通过选择“ 安全>启用受信任的平台模块”来启用 TPM。 只能在第 2 代 VM 上执行此步骤。 第 1 代 VM 无法转换为第 2 代 VM。 有关详细信息,请参阅 Hyper-V 的第 2 代 VM 安全设置 ,并在 现有 Azure Gen2 VM 上启用受信任的启动。
自带应用程序
在“自带应用程序”(BYOA)设置中,管理员管理Microsoft Entra Connect Sync 用来对Microsoft Entra ID、应用程序权限和应用程序使用的证书凭据进行身份验证的应用程序。
管理员 注册Microsoft Entra 应用并创建服务主体。 应用程序需要所需的权限才能配置 Microsoft Graph PowerShell 命令。
注释
Microsoft Entra Connect Sync 版本 2.5.76.0 或更高版本需要执行以下步骤,以便使用应用程序标识对 Microsoft Entra ID 进行身份验证。
先决条件
使用应用程序标识实现身份验证需要满足以下先决条件。
BYOA 和 BYOC 证书管理选项需要以下额外要求:
- 在 HSM 或 TPM 中,使用下一代加密 API 提供程序创建证书。 私钥标记为不可导出。 如果未使用 TPM,则会发出警告事件 1014。 支持以下证书配置:
-
KeyUsage:DigitalSignature
-
KeyLength: 2048
-
KeyAlgorithm:RSA
-
KeyHashAlgorithm:SHA256
- 创建的证书存储在存储区中
LOCAL_MACHINE 。
- 授予 Microsoft Entra Connect Sync 帐户权限,以使用私钥执行签名。
BYOA 应用程序管理选项需要以下额外要求:
- 客户根据上述 BYOC 先决条件中的指示创建证书。
- 客户在 Microsoft Entra ID 中注册应用程序,并创建服务主体。 向应用程序授予必要的权限。
- 客户向应用程序注册证书。
查看当前身份验证配置
若要查看当前身份验证配置,请运行向导并转到 “任务”,然后选择“ 查看或导出当前配置”。
如果服务器配置为使用基于应用程序的身份验证,则应能够看到应用程序(客户端)ID,如以下屏幕截图所示。
向下滚动到证书详细信息。 下表提供有关证书的信息。
| 资产 |
DESCRIPTION |
|
证书管理者 |
Microsoft Entra Connect Sync 还是 BYOC 管理证书 |
|
启用自动旋转 |
是启用自动旋转还是手动旋转 |
|
证书指纹 |
证书的唯一标识符 |
|
证书 SHA256 哈希 |
使用 SHA-256 哈希算法生成的证书的指纹 |
|
使用者名称 |
标识与证书关联的实体 |
|
颁发者 |
谁是证书的颁发者 |
|
序列号 |
唯一标识同一颁发者的证书之间的证书 |
|
在此之前无效 |
证书有效的第一个日期 |
|
有效期截至 |
证书有效的最后一个日期 |
如果服务器使用的是用户名和密码,则应能够看到帐户名称,如以下屏幕截图所示。
安装和升级(由 Microsoft Entra Connect 管理)
初始安装或手动交互式升级期间,会自动设置 Microsoft Entra Connect Sync 托管应用程序和凭据。 若要确认 Microsoft Entra Connect 正在使用应用程序标识,可以查看 当前的身份验证配置。
载入到基于应用程序的身份验证
自动
从版本 2.5.76.0 或更高版本开始,如果服务使用用户名和密码进行身份验证以Microsoft Entra ID,服务将在 6 小时内自动配置应用程序身份验证。
Manual
如果未自动配置应用程序身份验证,可以手动切换到基于应用程序的身份验证。
如果要使用默认选项(由 Microsoft Entra Connect 管理)配置基于应用程序的身份验证,可以使用向导。 但是,如果要使用 BYOC 或 BYOA 配置基于应用程序的身份验证,则必须使用 PowerShell。
启动Microsoft Entra Connect 向导
转到 “其他任务>”配置基于应用程序的身份验证以Microsoft Entra ID ,然后按照提示进行作。
注释
确保位于 Microsoft Entra Connect 服务器上,并且已安装 Microsoft Entra Connect Sync (ADSync) PowerShell 模块。
使用 当前身份验证配置向导视图 确认 Microsoft Entra Connect 正在使用应用程序标识,或使用 PowerShell 命令验证当前身份验证方法。
Get-ADSyncEntraConnectorCredential
此命令返回 ConnectorIdentityType 当前正在使用的值。 该值可以是 ServiceAccount 或 Application。 如果身份验证正在使用ServiceAccount,请执行以下步骤将ServiceAccount切换为Application。 如果身份验证正在使用 Application,请跳到 将应用程序证书更改为自己的证书 步骤。
从 ServiceAccount 切换到应用程序
启动Microsoft Entra Connect 向导。
转到 “其他任务>”配置基于应用程序的身份验证以Microsoft Entra ID ,然后按照提示进行作。
将应用程序证书更改为自己的证书
导出证书(.cer)文件,以使用下列选项之一将其上传到 Microsoft Entra 应用注册:
选项 1:使用 mmc 控制台从 Windows 证书存储导出证书:
运行以下命令,打开本地计算机的证书管理控制台。 运行此命令的某些方法来自“开始”菜单、Windows 运行提示符、PowerShell 提示符或命令提示符。
certlm.msc
在控制台树中,导航到要导出的证书。
右键单击证书,选择“ 所有任务”,然后选择“ 导出”。
在屏幕上,选择“ 欢迎使用证书导出向导”,然后选择“ 下一步”。
如果系统提示导出私钥,请选择 “否”,不导出私钥,然后选择“ 下一步”。
对于文件格式,请选择 DER 编码的二进制 X.509(。CER),然后选择“ 下一步”。
输入或浏览到文件路径,然后选择“ 下一步”。
查看摘要,然后选择“ 完成”。
选项 2:使用 PowerShell 导出证书:
$cerFile = "C:\Temp\MyBYOC.cer"
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'CN=YOUR_CERTIFICATE_SUBJECT'}
Export-Certificate -Cert $cert -FilePath $cerFile
在 Microsoft Entra Admin Center 中,导航到 Entra ID应用注册,并选择在安装、配置或升级 Connect Sync 期间创建的应用程序。若要确认 Connect Sync 使用哪个应用程序,可以运行 Get-ADSyncEntraConnectorCredential 命令来检索应用程序(客户端)ID。 用户名格式为 {AppID}@tenantName.partner.onmschina.cn. 在 “证书和机密 ”下,选择 “上传证书 ”并上传导出的.cer文件,然后选择“ 添加:
使用以下 PowerShell 命令获取证书哈希
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'CN=YOUR_CERTIFICATE_SUBJECT'}
# Get raw data from X509Certificate cert
$certRawDataString = $cert.GetRawCertData()
# Compute SHA256Hash of certificate
$sha256 = [System.Security.Cryptography.SHA256]::Create()
$hashBytes = $sha256.ComputeHash($certRawDataString)
如果使用 PowerShell 版本 7,请使用以下命令:
$certHash = [System.Convert]::ToHexString($hashBytes)
如果使用的是 较旧的 PowerShell 版本 或 PowerShell ISE,请使用以下命令:
$certHash = ($hashBytes|ForEach-Object ToString X2) -join ''
授予 Connect Sync (ADSync) 服务帐户检索证书私钥的权限:
$rsaCert = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
如果证书 是由证书颁发机构(CA)颁发的,请使用以下 $path 变量:
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\RSA\MachineKeys\$($rsaCert.key.UniqueName)"
如果使用 自签名 证书,请使用以下 $path 变量:
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\Keys\$($rsaCert.key.UniqueName)"
运行以下命令以授予权限:
$permissions = Get-Acl -Path $path
$serviceAccount = (Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\ADSync -Name ObjectName).ObjectName
$rule = New-Object Security.Accesscontrol.FileSystemAccessRule "$serviceAccount", "read", allow
$permissions.AddAccessRule($rule)
Set-Acl -Path $path -AclObject $permissions
# Verify permissions
$permissions = Get-Acl -Path $path
$permissions.Access
禁用同步计划程序
Set-ADSyncScheduler -SyncCycleEnabled $false
导入 ADSync 模块
如果使用 PowerShell 版本 7,请使用以下命令导入 ADSync 模块:
Import-Module -Name "C:\Program Files\Azure AD Sync\Bin\ADSync" -UseWindowsPowerShell
如果使用的是 较旧的 PowerShell 版本 或 PowerShell ISE,请使用以下命令导入 ADSync 模块:
Import-Module -Name "C:\Program Files\Azure AD Sync\Bin\ADSync"
使用证书轮换命令更新应用程序证书
Invoke-ADSyncApplicationCredentialRotation -CertificateSHA256Hash $certHash
使用 当前身份验证配置 向导视图确认 Microsoft Entra Connect 正在使用新证书。
启用同步计划程序
Set-ADSyncScheduler -SyncCycleEnabled $true
从Microsoft Entra ID(建议)中删除目录同步帐户(DSA)。
使用 PowerShell 创建应用程序
连接到租户
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
创建和初始化 BYOA 应用程序
$BYOApp = New-MgApplication -DisplayName "My BYOA For Connect Sync serverName"
创建和初始化 BYOA 服务主体名称
$BYOA_ServicePrincipal = New-MgServicePrincipal -AppId $BYOApp.AppId
初始化 ConnectSyncAppId 和 ConnectSyncSPId 变量:
$ConnectSyncAppId = $BYOApp.AppId
$ConnectSyncSPId = $BYOA_ServicePrincipal.Id
初始化 SynchronizationServiceAppId 代表 Microsoft Entra AD Synchronization Service 的应用程序(客户端)ID 的变量。 该值为6bf85cfa-ac8a-4be5-b5de-425a0d0dc016,适用于所有云:
$SynchronizationServiceAppId = "6bf85cfa-ac8a-4be5-b5de-425a0d0dc016"
初始化 SynchronizationServiceSPId 变量:
$SynchronizationServiceSPId = (Get-MgServicePrincipal -Filter "appId eq '$SynchronizationServiceAppId'").Id
初始化 SynchronizationServiceAppRoleId 变量:
$SynchronizationServiceAppRoleId = (Get-MgServicePrincipal -Filter "appId eq '$SynchronizationServiceAppId'").AppRoles | Where-Object {$_.Value -eq "ADSynchronization.ReadWrite.All"} | Select-Object -ExpandProperty Id
注释
如果使用 密码写回 功能,请继续执行以下步骤,否则可以跳到步骤 11。
初始化 PasswordResetServiceAppId 变量:
对于除 Arlington 以外的 所有云 ,请使用:
$PasswordResetServiceAppId = "93625bc8-bfe2-437a-97e0-3d0060024faa"
对于 Arlington 云,请使用:
$PasswordResetServiceAppId = "2e5ecfc8-ea79-48bd-8140-c19324acb278"
初始化 PasswordResetServiceSPId 变量:
$PasswordResetServiceSPId = (Get-MgServicePrincipal -Filter "appId eq '$PasswordResetServiceAppId'").Id
初始化密码重置 AppRoles 变量:
$PasswordResetServiceServiceOffboardClientAppRoleId = (Get-MgServicePrincipal -Filter "appId eq '$PasswordResetServiceAppId'").AppRoles | Where-Object {$_.Value -eq "PasswordWriteback.OffboardClient.All"} | Select-Object -ExpandProperty Id
$PasswordResetServiceServiceRegisterClientAppRoleId = (Get-MgServicePrincipal -Filter "appId eq '$PasswordResetServiceAppId'").AppRoles | Where-Object {$_.Value -eq "PasswordWriteback.RegisterClientVersion.All"} | Select-Object -ExpandProperty Id
$PasswordResetServiceServiceRefreshClientAppRoleId = (Get-MgServicePrincipal -Filter "appId eq '$PasswordResetServiceAppId'").AppRoles | Where-Object {$_.Value -eq "PasswordWriteback.RefreshClient.All"} | Select-Object -ExpandProperty Id
初始化 RequiredResourceAccess 变量以配置Microsoft Entra AD Synchronization Service 和Microsoft密码重置服务所需的权限:
如果不使用密码写回,那么请使用:
$RequiredResourceAccess = @(
@{
ResourceAppId = $SynchronizationServiceAppId
ResourceAccess = @(
@{
Id = $SynchronizationServiceAppRoleId
Type = "Role"
}
)
}
)
如果您使用 密码写回,请执行下列操作:
$RequiredResourceAccess = @(
@{
ResourceAppId = $SynchronizationServiceAppId
ResourceAccess = @(
@{
Id = $SynchronizationServiceAppRoleId
Type = "Role"
}
)
},
@{
ResourceAppId = $PasswordResetServiceAppId
ResourceAccess = @(
@{
Id = $PasswordResetServiceServiceOffboardClientAppRoleId
Type = "Role"
},
@{
Id = $PasswordResetServiceServiceRegisterClientAppRoleId
Type = "Role"
},
@{
Id = $PasswordResetServiceServiceRefreshClientAppRoleId
Type = "Role"
}
)
}
)
使用所需的权限更新应用程序:
Update-MgApplication -ApplicationId $BYOApp.Id -RequiredResourceAccess $RequiredResourceAccess
为同步服务创建应用角色分配:
$SyncAppRoleAssignment = New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $BYOA_ServicePrincipal.Id -PrincipalId $BYOA_ServicePrincipal.Id -ResourceId $SynchronizationServiceSPId -AppRoleId $SynchronizationServiceAppRoleId
注释
如果使用 密码写回 功能,请继续执行以下步骤,否则可以跳到步骤 #15。
为密码写回功能创建应用角色分配:
$OffboardAppRoleAssignment = New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $BYOA_ServicePrincipal.Id -PrincipalId $BYOA_ServicePrincipal.Id -ResourceId $PasswordResetServiceSPId -AppRoleId $PasswordResetServiceServiceOffboardClientAppRoleId
$RegisterAppRoleAssignment = New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $BYOA_ServicePrincipal.Id -PrincipalId $BYOA_ServicePrincipal.Id -ResourceId $PasswordResetServiceSPId -AppRoleId $PasswordResetServiceServiceRegisterClientAppRoleId
$RefreshAppRoleAssignment = New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $BYOA_ServicePrincipal.Id -PrincipalId $BYOA_ServicePrincipal.Id -ResourceId $PasswordResetServiceSPId -AppRoleId $PasswordResetServiceServiceRefreshClientAppRoleId
导出证书(.cer)文件,以使用下列选项之一将其上传到 Microsoft Entra 应用注册:
选项 1:使用 mmc 控制台从 Windows 证书存储导出证书:
运行以下命令,打开本地计算机的证书管理控制台。 运行此命令的某些方法来自“开始”菜单、Windows 运行提示符、PowerShell 提示符或命令提示符。
certlm.msc
在控制台树中,导航到要导出的证书。
右键单击证书,选择“ 所有任务”,然后选择“ 导出”。
在 “欢迎使用证书导出向导” 屏幕上,选择“ 下一步”。
如果系统提示导出私钥,请选择 “否”,不导出私钥,然后选择“ 下一步”。
对于文件格式,请选择 DER 编码的二进制 X.509(。CER),然后选择“ 下一步”。
输入或浏览到文件路径,然后选择“ 下一步”。
查看摘要,然后选择“ 完成”。
选项 2:使用 PowerShell 导出证书:
$cerFile = "C:\Temp\MyBYOC.cer"
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'CN=YOUR_CERTIFICATE_SUBJECT'}
Export-Certificate -Cert $cert -FilePath $cerFile
在 Microsoft Entra 管理中心,导航到 Entra ID>应用注册,然后选择在步骤 2 中创建的应用程序。 在 “证书和机密”下,选择“ 上传证书 ”并上传导出的.cer文件,然后选择“ 添加:
使用以下 PowerShell 命令获取证书哈希:
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'CN=YOUR_CERTIFICATE_SUBJECT'}
# Get raw data from X509Certificate cert
$certRawDataString = $cert.GetRawCertData()
# Compute SHA256Hash of certificate
$sha256 = [System.Security.Cryptography.SHA256]::Create()
$hashBytes = $sha256.ComputeHash($certRawDataString)
如果使用 PowerShell 版本 7,请使用以下命令:
$certHash = [System.Convert]::ToHexString($hashBytes)
如果使用的是 较旧的 PowerShell 版本 或 PowerShell ISE,请使用以下命令:
$certHash = ($hashBytes|ForEach-Object ToString X2) -join ''
授予 Connect Sync (ADSync) 服务帐户检索证书私钥的权限:
$rsaCert = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
如果证书 是由证书颁发机构(CA)颁发的,请使用以下 $path 变量:
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\RSA\MachineKeys\$($rsaCert.key.UniqueName)"
如果使用 自签名 证书,请使用以下 $path 变量:
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\Keys\$($rsaCert.key.UniqueName)"
运行以下命令以授予权限:
$permissions = Get-Acl -Path $path
$serviceAccount = (Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\ADSync -Name ObjectName).ObjectName
$rule = New-Object Security.Accesscontrol.FileSystemAccessRule "$serviceAccount", "read", allow
$permissions.AddAccessRule($rule)
Set-Acl -Path $path -AclObject $permissions
# Verify permissions
$permissions = Get-Acl -Path $path
$permissions.Access
禁用同步计划程序
Set-ADSyncScheduler -SyncCycleEnabled $false
导入 ADSync 模块:
如果使用 PowerShell 版本 7,请使用以下命令导入 ADSync 模块:
Import-Module -Name "C:\Program Files\Azure AD Sync\Bin\ADSync" -UseWindowsPowerShell
切换到使用新应用程序进行身份验证
Add-ADSyncApplicationRegistration -CertificateSHA256Hash $certHash -ApplicationAppId $ConnectSyncAppId
使用 当前身份验证配置 向导视图确认 Microsoft Entra Connect 正在使用应用程序标识,或使用 PowerShell 命令验证当前身份验证方法。
Get-ADSyncEntraConnectorCredential
启用同步计划程序
Set-ADSyncScheduler -SyncCycleEnabled $true
从Microsoft Entra ID(建议)中删除目录同步帐户(DSA)。
删除旧服务帐户
转换到基于应用程序的身份验证并Microsoft Entra Connect Sync 按预期工作后,强烈建议使用 PowerShell 删除旧的 DSA 用户名和密码服务帐户。 如果使用无法删除的自定义帐户,请降低其权限,并从中删除 DSA 角色。
按照以下步骤删除旧服务帐户。
添加服务帐户用户名和密码。
$HACredential = Get-Credential
系统会提示输入 Microsoft Entra 管理员 UserPrincipalName 值和密码。 输入用户名和密码。
接下来,删除服务帐户。
Remove-ADSyncAADServiceAccount -AADCredential $HACredential -Name <$serviceAccountName>
ServiceAccountName 值是 Microsoft Entra ID 中所用服务帐户的 UserPrincipalName 值的第一部分。 可以在 Microsoft Entra 管理中心的用户列表中找到此用户。 如果 UPN 为 Sync_Server_id@tenant.partner.onmschina.cn,则 Sync_Server_id 用作 ServiceAccountName 值。
使用 PowerShell 回滚到旧服务帐户
如果想要返回到旧服务帐户,可以使用 PowerShell 还原为使用服务帐户来及时缓解该问题。 使用以下步骤回滚到服务帐户。
作为回滚的一部分,我们将重新创建 DSA 帐户。 此新帐户可能需要长达 15 分钟才能生效,因此在重新启用同步周期时可能会收到“拒绝访问”错误。
禁用计划程序以确保在完成此更改之前不会运行任何同步周期。
Set-ADSyncScheduler -SyncCycleEnabled $false
添加服务帐户。 系统会提示输入 Microsoft Entra 管理员 UserPrincipalName 值和密码。 输入凭据。
Add-ADSyncAADServiceAccount
获取当前的身份验证机制,并确认 ConnectorIdentityType 该值已返回 ServiceAccount。
Get-ADSyncEntraConnectorCredential
重新允许计划程序开始同步服务。
Set-ADSyncScheduler -SyncCycleEnabled $true
证书轮换
如果证书轮换到期,Microsoft Entra Connect 将发出警告。 也就是说,如果过期时间小于或等于 150 天。 如果证书已过期,则会发出错误。 可以在应用程序事件日志中找到这些警告(事件 ID 1011)和错误(事件 ID 1012)。
如果未暂停计划程序,则以计划程序频率发出此消息。 运行 Get-ADSyncScheduler 以查看计划程序是否已挂起。
自动
如果Microsoft Entra Connect 管理证书,除非计划程序已暂停,否则不需要你执行 任何作 ,Microsoft Entra Connect Sync 会将新证书凭据添加到应用程序,并尝试删除旧的证书凭据。
如果无法删除旧证书凭据,则 事件查看器中的应用程序日志中会显示错误事件。
如果看到此错误,请在 PowerShell 中运行以下 cmdlet,从 Microsoft Entra ID 中清理旧证书凭据。 该 cmdlet 需要使用必须删除的证书的 CertificateId 值,该值可以从日志或 Microsoft Entra 管理中心获取。
Remove-EntraApplicationKey -CertificateId <certificateId>
Manual
如果配置不符合自动证书轮换的条件,则可以在任何时间点轮换证书,即使当前证书仍未轮换或当前证书过期。
- 启动 Microsoft Entra Connect 向导
- 转到 “其他任务>轮换应用程序证书 ”,然后按照提示进行作。
从 Microsoft Entra Connect Sync 收到警告时,强烈建议 生成新的密钥和证书,并轮换 Microsoft Entra Connect Sync 使用的证书。
导出证书(.cer)文件,以使用下列选项之一将其上传到 Microsoft Entra 应用注册:
选项 1:使用 mmc 控制台从 Windows 证书存储导出证书:
运行以下命令,打开本地计算机的证书管理控制台。 运行此命令的某些方法来自“开始”菜单、Windows 运行提示符、PowerShell 提示符或命令提示符。
certlm.msc
在控制台树中,导航到要导出的证书。
右键单击证书,选择“ 所有任务”,然后选择“ 导出”。
在“ 欢迎使用证书导出向导”的屏幕上,选择“ 下一步”。
如果系统提示导出私钥,请选择 “否”,不导出私钥,然后选择“ 下一步”。
对于文件格式,请选择 DER 编码的二进制 X.509(。CER),然后选择“ 下一步”。
输入或浏览到文件路径,然后选择“ 下一步”。
查看摘要,然后选择“ 完成”。
选项 2:使用 PowerShell 导出证书:
$cerFile = "C:\Temp\MyBYOC.cer"
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'CN=YOUR_CERTIFICATE_SUBJECT'}
Export-Certificate -Cert $cert -FilePath $cerFile
在 Microsoft Entra 管理中心 导航到 “应用注册”,并选择在安装、配置或升级 Connect Sync 期间创建的应用程序。若要确认 Connect Sync 使用的应用程序,可以运行 Get-ADSyncEntraConnectorCredential 命令来检索应用程序(客户端)ID。 用户名格式为 {AppID}@tenantName.partner.onmschina.cn. 在 “证书和机密”下,选择“ 上传证书 ”并上传导出的.cer文件,然后选择“ 添加:
使用以下 PowerShell 命令获取证书哈希
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'CN=YOUR_CERTIFICATE_SUBJECT'}
# Get raw data from X509Certificate cert
$certRawDataString = $cert.GetRawCertData()
# Compute SHA256Hash of certificate
$sha256 = [System.Security.Cryptography.SHA256]::Create()
$hashBytes = $sha256.ComputeHash($certRawDataString)
如果使用 PowerShell 版本 7,请使用以下命令:
$certHash = [System.Convert]::ToHexString($hashBytes)
如果使用的是 较旧的 PowerShell 版本 或 PowerShell ISE,请使用以下命令:
$certHash = ($hashBytes|ForEach-Object ToString X2) -join ''
授予 Connect Sync (ADSync) 服务帐户检索证书私钥的权限:
$rsaCert = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
如果证书 是由证书颁发机构(CA)颁发的,请使用以下 $path 变量:
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\RSA\MachineKeys\$($rsaCert.key.UniqueName)"
如果使用 自签名 证书,请使用以下 $path 变量:
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\Keys\$($rsaCert.key.UniqueName)"
运行以下命令以授予权限:
$permissions = Get-Acl -Path $path
$serviceAccount = (Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\ADSync -Name ObjectName).ObjectName
$rule = New-Object Security.Accesscontrol.FileSystemAccessRule "$serviceAccount", "read", allow
$permissions.AddAccessRule($rule)
Set-Acl -Path $path -AclObject $permissions
# Verify permissions
$permissions = Get-Acl -Path $path
$permissions.Access
禁用同步计划程序
Set-ADSyncScheduler -SyncCycleEnabled $false
导入 ADSync 模块:
如果使用 PowerShell 版本 7,请使用以下命令导入 ADSync 模块:
Import-Module -Name "C:\Program Files\Azure AD Sync\Bin\ADSync" -UseWindowsPowerShell
如果使用的是 较旧的 PowerShell 版本 或 PowerShell ISE,请使用以下命令导入 ADSync 模块:
Import-Module -Name "C:\Program Files\Azure AD Sync\Bin\ADSync"
使用证书轮换命令更新应用程序证书
Invoke-ADSyncApplicationCredentialRotation -CertificateSHA256Hash $certHash
使用 当前身份验证配置 向导视图确认 Microsoft Entra Connect 正在使用新证书。
启用同步计划程序
Set-ADSyncScheduler -SyncCycleEnabled $true
从LOCAL_MACHINE存储中删除旧证书。
从 Microsoft Entra Connect Sync 收到警告时,强烈建议 生成新的密钥和证书,并轮换 Microsoft Entra Connect Sync 使用的证书。
导出证书(.cer)文件,以使用以下选项之一将其上传到 Microsoft Entra 应用注册:
选项 1:使用 mmc 控制台从 Windows 证书存储导出证书:
运行以下命令,打开本地计算机的证书管理控制台。 运行此命令的某些方法来自“开始”菜单、Windows 运行提示符、PowerShell 提示符或命令提示符。
certlm.msc
在控制台树中,导航到要导出的证书。
右键单击证书,选择“ 所有任务”,然后选择“ 导出”。
在“ 欢迎使用证书导出向导”的屏幕上,选择“ 下一步”。
如果系统提示导出私钥,请选择 “否”,不导出私钥,然后选择“ 下一步”。
对于文件格式,请选择 DER 编码的二进制 X.509(。CER),然后选择“ 下一步”。
输入或浏览到文件路径,然后选择“ 下一步”。
查看摘要,然后选择“ 完成”。
选项 2:使用 PowerShell 导出证书:
$cerFile = "C:\Temp\MyBYOC.cer"
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'CN=YOUR_CERTIFICATE_SUBJECT'}
Export-Certificate -Cert $cert -FilePath $cerFile
在 Microsoft Entra 管理中心,导航到 “应用注册”,然后选择在安装、配置或升级 Connect Sync 期间创建的应用程序。若要确认 Connect Sync 使用哪个应用程序,可以运行 Get-ADSyncEntraConnectorCredential 命令来检索应用程序(客户端)ID。 用户名格式为 {AppID}@tenantName.partner.onmschina.cn. 在 “证书和机密”下,选择“ 上传证书 ”并上传导出的.cer文件,然后选择“ 添加:
使用以下 PowerShell 命令获取证书哈希
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -eq 'CN=YOUR_CERTIFICATE_SUBJECT'}
# Get raw data from X509Certificate cert
$certRawDataString = $cert.GetRawCertData()
# Compute SHA256Hash of certificate
$sha256 = [System.Security.Cryptography.SHA256]::Create()
$hashBytes = $sha256.ComputeHash($certRawDataString)
如果使用 PowerShell 版本 7,请使用以下命令:
$certHash = [System.Convert]::ToHexString($hashBytes)
如果使用的是 较旧的 PowerShell 版本 或 PowerShell ISE,请使用以下命令:
$certHash = ($hashBytes|ForEach-Object ToString X2) -join ''
授予 Connect Sync (ADSync) 服务帐户检索证书私钥的权限:
$rsaCert = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($cert)
如果证书 是由证书颁发机构(CA)颁发的,请使用以下 $path 变量:
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\RSA\MachineKeys\$($rsaCert.key.UniqueName)"
如果使用 自签名 证书,请使用以下 $path 变量:
$path = "$env:ALLUSERSPROFILE\Microsoft\Crypto\Keys\$($rsaCert.key.UniqueName)"
运行以下命令以授予权限:
$permissions = Get-Acl -Path $path
$serviceAccount = (Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\ADSync -Name ObjectName).ObjectName
$rule = New-Object Security.Accesscontrol.FileSystemAccessRule "$serviceAccount", "read", allow
$permissions.AddAccessRule($rule)
Set-Acl -Path $path -AclObject $permissions
# Verify permissions
$permissions = Get-Acl -Path $path
$permissions.Access
禁用同步计划程序
Set-ADSyncScheduler -SyncCycleEnabled $false
导入 ADSync 模块:
如果使用 PowerShell 版本 7,请使用以下命令导入 ADSync 模块:
Import-Module -Name "C:\Program Files\Azure AD Sync\Bin\ADSync" -UseWindowsPowerShell
如果使用的是 较旧的 PowerShell 版本 或 PowerShell ISE,请使用以下命令导入 ADSync 模块:
Import-Module -Name "C:\Program Files\Azure AD Sync\Bin\ADSync"
使用证书轮换命令更新应用程序证书
Invoke-ADSyncApplicationCredentialRotation -CertificateSHA256Hash $certHash
使用 当前身份验证配置 向导视图确认 Microsoft Entra Connect 正在使用新证书。
启用同步计划程序
Set-ADSyncScheduler -SyncCycleEnabled $true
从LOCAL_MACHINE存储中删除旧证书。
证书吊销过程
对于自签名证书(Microsoft Entra Managed 或 BYOC),管理员必须通过从 Microsoft Entra ID 中删除 keyCredential 值来执行手动吊销。 证书的按需轮换也是一个选项。
相关内容