Microsoft Entra Connect 使用 Microsoft Entra 连接器帐户对标识从 Active Directory 进行身份验证和同步到 Microsoft Entra Connect。 此帐户使用用户名和密码对请求进行身份验证。
为了增强服务的安全性,我们将推出一个应用程序标识,该标识使用带有证书凭据的 Oauth 2.0 客户端凭据流。 在此新方法中,Microsoft Entra或管理员在Microsoft Entra ID中创建单个租户的非微软应用程序,并为凭据使用以下相关证书管理选项之一。
Microsoft Entra Connect 提供三个选项用于应用程序和证书管理:
注释
Application Administrator 角色授予同意应用程序权限的能力,但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 会生成具有 90 天生存期的证书。
Microsoft Entra Connect Sync 使用计划程序来检查证书是否应轮换,然后自动轮换证书。 如果计划程序被挂起,即使证书由 Microsoft Entra Connect Sync 管理,自动证书轮换也无法进行。
自带证书
在“自带证书”设置中,管理员管理应用程序使用的证书凭据。 管理员负责创建证书、轮换和删除未使用的或过期的证书。 证书必须存储在存储区中 LOCAL_MACHINE 。
管理员负责保护证书的私钥,并确保只有 Microsoft Entra Connect Sync 才能访问私钥进行签名。
建议使用 TPM 或硬件安全模块(HSM)提供基于硬件的安全边界,而不是默认安全边界。 若要检查 TPM 的状态,请使用 Get-TPM PowerShell cmdlet。
如果使用Hyper-V虚拟机(VM),可以通过选择 Security>启用 TPM。 只能在第 2 代 VM 上执行此步骤。 第 1 代 VM 无法转换为第 2 代 VM。 有关详细信息,请参阅 Hyper-V 的第二代虚拟机安全设置 和 在现有 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进行身份验证。
先决条件
使用应用程序标识实现身份验证需要满足以下先决条件。
重要
新的Microsoft Entra Connect Sync 版本只能通过Microsoft Entra管理中心使用。
在新增功能通信之后,Microsoft Entra Connect Sync 的新版本仅在Entra Connect 窗格的 Microsoft Entra 管理中心中可用,并且将不再发布到Microsoft 下载中心。
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 使用的是应用程序标识,可以查看 current 身份验证配置。
导入应用程序基础的身份验证
自动
从版本 2.5.76.0 或更高版本开始,如果服务使用用户名和密码进行身份验证以Microsoft Entra ID,服务将在 6 小时内自动配置应用程序身份验证。
Manual
如果未自动配置应用程序身份验证,可以手动切换到基于应用程序的身份验证。
如果要使用默认选项(由 Microsoft Entra Connect 管理)配置基于应用程序的身份验证,可以使用向导。 但是,如果要使用 BYOC 或 BYOA 配置基于应用程序的身份验证,则必须使用 PowerShell。
启动 Microsoft Entra 连接向导
转到 Additional tasks>配置基于应用程序的身份验证到Microsoft Entra ID 然后按照提示进行操作。
注释
确保位于 Microsoft Entra Connect 服务器上,并安装了 Microsoft Entra Connect Sync (ADSync) PowerShell 模块。
使用 current 身份验证配置向导视图确认 Microsoft Entra Connect 正在使用应用程序标识,或使用 PowerShell 命令验证当前身份验证方法。
Get-ADSyncEntraConnectorCredential
此命令返回 ConnectorIdentityType 当前正在使用的值。 该值可以是 ServiceAccount 或 Application。 如果身份验证正在使用ServiceAccount,请执行以下步骤将ServiceAccount切换为Application。 如果身份验证正在使用 Application,请跳到 将应用程序证书更改为自己的证书 步骤。
从 ServiceAccount 切换到应用程序
启动Microsoft Entra连接向导。
转到 Additional tasks>配置基于应用程序的身份验证到 Microsoft Entra ID,然后根据提示执行操作。
将应用程序证书更改为自己的证书
导出证书(.cer)文件,以使用以下选项之一将其上传到Microsoft Entra应用注册:
Option 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 IDApp Registrations,然后选择在安装、配置或升级 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 同步服务的应用程序(客户端)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 同步服务和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应用注册:
Option 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>App Registration,然后选择在步骤 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
使用 current 身份验证配置向导视图确认 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
证书轮换
如果证书的生存期已消耗 70% 或更多,Microsoft Entra Connect 将发出警告。 对于 90 天证书,这意味着警告从第 63 天左右开始。 如果证书已过期,则会发出错误。 可以在应用程序事件日志中找到这些警告(事件 ID 1011)和错误(事件 ID 1012)。
如果计划程序未暂停,则此消息将以调度程序频率发出。 运行 Get-ADSyncScheduler 以查看计划程序是否已挂起。
自动
如果 Microsoft Entra Connect 管理证书,不需要任何操作,除非计划程序已暂停。Microsoft Entra Connect Sync 会将新证书凭据添加到应用程序,并尝试删除旧证书凭据。
如果无法删除旧证书凭据,Event Viewer 的应用程序日志中会显示错误事件。
如果看到此错误,请在 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应用注册:
Option 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 管理中心导航到 App Registration,然后选择在安装、配置或升级 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应用注册:
Option 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 管理中心中,导航到 App Registration,然后选择在安装、配置或升级 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托管证书或 BYOC),管理员必须通过从 Microsoft Entra ID 中删除 keyCredential 值来执行手动吊销。 证书的按需轮换也是一个选项。
相关内容