Habilite la criptografía de clave pública para la autenticación inicial (PKINIT) para sus usuarios gestionados de AWS Microsoft AD - AWS Directory Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Habilite la criptografía de clave pública para la autenticación inicial (PKINIT) para sus usuarios gestionados de AWS Microsoft AD

AWS Los directorios administrados de Microsoft AD utilizan un enlace de certificado seguro de forma predeterminada, que requiere una asignación explícita entre los certificados y los objetos de AD. Las siguientes asignaciones se consideran sólidas para Managed AWS Microsoft AD:

  • Emisor y número de serie de altSecurityIdentities

  • Identificador de clave de asunto de altSecurityIdentities

  • altSecurityIdentities SHA1 Hash de la clave pública

Estos atributos permiten una asignación sólida de certificados, lo que proporciona una mayor seguridad para la autenticación basada en certificados al requerir certificate-to-user relaciones explícitas definidas en Active Directory. Esto ayuda a prevenir los ataques de escalada de privilegios basados en certificados

Se puede usar este procedimiento para configurar enlaces de certificados seguros que le ayuden a prevenir los ataques de escalada de privilegios y, al mismo tiempo, mantener la funcionalidad de autenticación de certificados.

Para obtener más información, consulte Microsoft KB5014754: cambios en la autenticación basada en certificados en controladores de dominio de Windows

Requisitos previos

  • Un directorio AWS administrado de Microsoft AD con una autoridad de certificación configurada

  • Acceso administrativo a su entorno de Active Directory

  • PowerShell con el módulo Active Directory instalado

  • El certificado que desea asignar al objeto de AD

AltSecurityIdentity Atributo de mapa

  1. Elija uno de los siguientes métodos de asignación AltSecurityIdentity según la información de su certificado:

    • SHA1 hash: utiliza el SHA1 hash de la clave pública del certificado

      Para el mapeo de SHA1 hash, extraiga el hash del certificado y aplíquelo al objeto de usuario:

      $Username = 'YourUsername' $cert = certutil -dump "YourCertificate.cer" $certHash = ($cert | Select-String -Pattern "(sha1):*" | Select-String -Pattern "Cert").ToString().TrimStart('Cert Hash(sha1): ').Replace(' ','') Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<SHA1-PUKEY>$CertHash"}
    • Emisor y número de serie: utiliza el nombre y el número de serie del emisor del certificado

      En el caso de asignación de emisor y número de serie, se utiliza el nombre y el número de serie del emisor del certificado:

      $Username = 'YourUsername' $IssuerName = 'YourCertificateIssuer' $SerialNumber = 'YourCertificateSerialNumber' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<I>$IssuerName<SR>$SerialNumber"}
    • Identificador de clave de asunto: utiliza la extensión del identificador de clave de asunto del certificado

      Para asignar el identificador de clave de asunto, utilice el identificador de clave de asunto del certificado:

      $Username = 'YourUsername' $SubjectKeyIdentifier = 'YourSubjectKeyIdentifier' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<SKI>$SubjectKeyIdentifier"}
  2. Verifique que la asignación se haya aplicado correctamente:

    Get-ADUser -Identity $Username -Properties altSecurityIdentities | Select-Object -ExpandProperty altSecurityIdentities
  3. Espere a que se complete la replicación de Active Directory (normalmente de 15 a 30 segundos) antes de probar la autenticación del certificado.

Ejemplo: un certificado masivo que mapea el AltSecurityIdentity atributo

En el siguiente ejemplo, se muestra cómo asignar el atributo AltSecurityIdentity de varios certificados de usuario de una entidad emisora de certificados:

$CertificateTemplateName = 'User' $Now = $((Get-Date).ToString($(Get-culture).DateTimeFormat.ShortDatePattern)) $Restrict = "Disposition=20,NotAfter>=$Now,Certificate Template=$CertificateTemplateName" $Out = "SerialNumber,Certificate Hash,User Principal Name,RequesterName,CommonName,CertificateTemplate,NotBefore,NotAfter" $Certs = certutil -view -restrict $Restrict -out $Out csv | ConvertFrom-CSV $UserSha1HashMapping = @{} ForEach ($Cert in $Certs) { $UPN = $Cert.'User Principal Name' $Username, $Domain = $UPN.Split('@') $CertificateThumbprint = ($Cert.'Certificate Hash').Replace(' ','') $AdUserObject = Get-ADUser -Identity $Username If ($AdUserObject -And $AdUserObject.Count -gt 1) { Write-Output "Unable to map user: $Username, multiple user objects found" Continue } If ($AdUserObject) { If ($UserSha1HashMapping.Keys -Contains $Username) { $UserSha1HashMapping[$Username] += $CertificateThumbprint } Else { $UserSha1HashMapping[$Username] = @($CertificateThumbprint) } } } ForEach ($User in $UserSha1HashMapping.Keys) { Write-Output "Mapping altSecurityIdentity for $User" $UserObject = Get-ADUser -Identity $User | Get-ADObject -Properties 'altSecurityIdentities' $altSecurityIdentities = $UserObject.altSecurityIdentities ForEach ($thumbprint in $UserSha1HashMapping[$User]) { $SHA1PUKEY = "X509:<SHA1-PUKEY>$thumbprint" If ($altSecurityIdentities -Contains $SHA1PUKEY) { Write-Output "Skipping $thumbprint, already mapped." Continue } Write-Output "Adding $thumbprint to $User as altSecurityIdentity" Set-ADUser -Identity $User -Add @{'altSecurityIdentities'=$SHA1PUKEY} } }

Siguientes pasos

  • Pruebe la autenticación basada en certificados con sus certificados asignados

  • Configure las aplicaciones para que usen los certificados asignados de autenticación

  • Supervise su Microsoft AD AWS administrado para eventos de autenticación