Configurar a autenticação kerberos para serviços de acesso ao cliente com balanceamento de carga

Para que você use a autenticação Kerberos com servidores de caixa de correio com balanceamento de carga executando serviços de Acesso ao Cliente, você precisa concluir as etapas de configuração descritas neste artigo.

Criar a credencial de conta de serviço alternativa no Active Directory Domain Services

Todos os servidores do Exchange que executam serviços de Acesso ao Cliente que compartilham os mesmos namespaces e URLs devem usar a mesma credencial de conta de serviço alternativa ou (credencial ASA). Em geral, é suficiente ter uma única conta para uma floresta para cada versão do Exchange.

Importante

O Exchange 2010 e o Exchange 2016 não podem compartilhar a mesma credencial ASA. Se sua credencial ASA foi criada para o Exchange 2010, você precisará criar uma nova para o Exchange 2016.

Embora os registros CNAME sejam compatíveis com namespaces compartilhados, a Microsoft recomenda usar registros A. Isso garante que o cliente emita corretamente uma solicitação de tíquete Kerberos com base no nome compartilhado e não no FQDN do servidor.

Observação

Não há suporte para gMSA (Contas de Serviço Gerenciado de Grupo) em ambientes Exchange Server locais e, portanto, não podem ser usados nesse cenário.

Ao configurar a credencial ASA, tenha estas diretrizes em mente:

  • Tipo de conta: recomendamos que você crie uma conta de computador em vez de uma conta de usuário. Uma conta de computador não permite logon interativo e pode ter políticas de segurança mais simples do que uma conta de usuário. Se você criar uma conta de computador, a senha não expirará, mas recomendamos que você atualize a senha periodicamente de qualquer maneira. Você pode usar a política de grupo local para especificar uma idade máxima para a conta de computador e scripts excluirem periodicamente contas de computador que não atendem às políticas atuais. Sua política de segurança local também determina quando você precisa alterar a senha. Embora seja recomendável usar uma conta de computador, você pode criar uma conta de usuário.

  • Nome da conta: não há requisitos para o nome da conta. Você pode usar qualquer nome que esteja em conformidade com seu esquema de nomenclatura.

  • Grupo de contas: a conta que você usa para a credencial ASA não precisa de privilégios especiais de segurança. Se você estiver usando uma conta de computador, a conta só precisa ser membro do grupo de segurança Dos Computadores de Domínio. Se você estiver usando uma conta de usuário, a conta só precisa ser membro do grupo de segurança Usuários de Domínio.

  • Senha da conta: a senha fornecida ao criar a conta será usada. Portanto, ao criar a conta, você deve usar uma senha complexa e garantir que a senha esteja em conformidade com os requisitos de senha da sua organização.

Para criar a credencial ASA como uma conta de computador

  1. Em um computador ingressado no domínio, execute Windows PowerShell ou o Shell de Gerenciamento do Exchange.

    Use o cmdlet Import-Module para importar o módulo do Active Directory.

    Import-Module ActiveDirectory
    
  2. Use o cmdlet New-ADComputer para criar uma nova conta de computador do Active Directory usando essa sintaxe de cmdlet:

    New-ADComputer [-Name] <string> [-AccountPassword <SecureString>] [-AllowReversiblePasswordEncryption <System.Nullable[boolean]>] [-Description <string>] [-Enabled <System.Nullable[bool]>]
    

    Exemplo:

    New-ADComputer -Name EXCH2016ASA -AccountPassword (Read-Host 'Enter password' -AsSecureString) -Description 'Alternate Service Account credentials for Exchange' -Enabled:$True -SamAccountName EXCH2016ASA
    

    Onde EXCH2016ASA é o nome da conta, a descrição Credenciais de Conta de Serviço Alternativa para Exchange é o que você deseja que seja, e o valor do parâmetro SamAccountName , nesse caso EXCH2016ASA, precisa ser exclusivo em seu diretório.

  3. Use o cmdlet Set-ADComputer para habilitar o suporte de criptografia do AES 256 usado por Kerberos usando essa sintaxe de cmdlet:

    Set-ADComputer [-Name] <string> [-add @{<attributename>="<value>"]
    

    Exemplo:

    Set-ADComputer EXCH2016ASA -add @{"msDS-SupportedEncryptionTypes"="28"}
    

    Onde EXCH2016ASA é o nome da conta e o atributo a ser modificado é msDS-SupportedEncryptionTypes com um valor decimais de 28, o que permite as seguintes cifras: RC4-HMAC, AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96.

Para obter mais informações sobre esses cmdlets, consulte Import-Module e New-ADComputer.

Cenários entre florestas

Se você tiver uma implantação entre florestas ou florestas de recursos e tiver usuários fora da floresta do Active Directory que contém o Exchange, você deverá configurar relações de confiança florestal entre as florestas. Além disso, para cada floresta na implantação, você precisa configurar uma regra de roteamento que permita a confiança entre todos os sufixos de nome dentro da floresta e entre florestas. Para obter mais informações sobre como gerenciar fundos entre florestas, consulte Configurando organizações de parceiros.

Identificar os nomes da entidade de serviço a serem associados à credencial ASA

Depois de criar a credencial ASA, você precisará associar SPNs (Nomes de Entidade do Exchange Service) à credencial ASA. A lista de SPNs do Exchange pode variar de acordo com sua configuração, mas deve incluir pelo menos o seguinte:

  • http/: Use este SPN para Outlook Anywhere, MAPI em HTTP, Serviços Web do Exchange, Autodiscover e Catálogo de Endereços Offline.

Os valores SPN devem corresponder ao nome do serviço no balanceador de carga de rede em vez de em servidores individuais. Para ajudar a planejar quais valores de SPN você deve usar, considere os seguintes cenários:

Em cada um desses cenários, suponha que os FQDNs (nomes de domínio totalmente qualificados e com balanceamento de carga) tenham sido implantados para as URLs internas, URLs externas e o URI interno de descoberta automática usado pelos membros que executam os serviços de Acesso ao Cliente.

Site do Active Directory Único

Se você tiver um único site do Active Directory, seu ambiente poderá se assemelhar ao da seguinte figura:

vários sites do AD.

Com base nos FQDNs usados pelos clientes internos do Outlook na figura anterior, você precisa associar as seguintes SPNs à credencial ASA:

  • http/mail.corp.tailspintoys.com
  • http/autodiscover.corp.tailspintoys.com

Vários sites do Active Directory

Se você tiver vários sites do Active Directory, seu ambiente poderá se assemelhar ao da seguinte figura:

vários sites do AD.

Com base nos FQDNs usados pelos clientes do Outlook na figura anterior, você teria que associar os seguintes SPNs à credencial ASA usada pelos servidores da caixa de correio que executam os serviços de Acesso ao Cliente no ADSite 1:

  • http/mail.corp.tailspintoys.com
  • http/autodiscover.corp.tailspintoys.com

Você também teria que associar as seguintes SPNs à credencial ASA usada pelos servidores da caixa de correio que executam os serviços de Acesso ao Cliente no ADSite 2:

  • http/mailsdc.corp.tailspintoys.com
  • http/autodiscoversdc.corp.tailspintoys.com

Configurar e verificar a configuração da credencial ASA em cada servidor que executa serviços de Acesso ao Cliente

Depois de criar a conta, você precisa verificar se a conta foi replicada para todos os controladores de domínio do AD DS. Especificamente, a conta deve estar presente em cada servidor que executa serviços de Acesso ao Cliente que usará a credencial ASA. Em seguida, você configura a conta como a credencial ASA em cada servidor que executa serviços de Acesso ao Cliente em sua implantação.

Você configura a credencial ASA usando o Shell de Gerenciamento do Exchange, conforme descrito em um destes procedimentos:

  • Implantar a credencial ASA no primeiro servidor exchange que executa serviços de Acesso ao Cliente
  • Implantar a credencial ASA em servidores do Exchange subsequentes que executam serviços de Acesso ao Cliente

O único método com suporte para implantar a credencial ASA é usar o script RollAlternateServiceAcountPassword.ps1. Para obter mais informações e permissões necessárias para executar o script, consulte Usando o script RollAlternateserviceAccountCredential.ps1 no Shell. Após a execução do script, é recomendável verificar se todos os servidores de destino foram atualizados corretamente.

Implantar a Credencial ASA no primeiro servidor exchange que executa serviços de Acesso ao Cliente

  1. Abra o Shell de Gerenciamento do Exchange em um servidor exchange 2016 ou Exchange 2019.

  2. Altere diretórios para <o diretório> de instalação do Exchange 2016\V15\Scripts.

  3. Execute o seguinte comando para implantar a credencial ASA no primeiro servidor exchange 2016 ou Exchange 2019 que executa serviços de Acesso ao Cliente:

    .\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer cas-1.corp.tailspintoys.com -GenerateNewPasswordFor tailspin\EXCH2016ASA$
    
  4. Quando você for perguntado se deseja alterar a senha da conta de serviço alternativa, responda Sim.

A seguir está um exemplo da saída mostrada quando você executa o script RollAlternateServiceAccountPassword.ps1.

========== Starting at 01/12/2016 10:17:47 ==========
Creating a new session for implicit remoting of "Get-ExchangeServer" command...
Destination servers that will be updated:
Name                                                        PSComputerName
----                                                        --------------
cas-1                                                   cas-1.corp.tailspintoys.com
Credentials that will be pushed to every server in the specified scope (recent first):
UserName
Password
--------
--------
tailspin\EXCH2016ASA$
System.Security.SecureString
Prior to pushing new credentials, all existing credentials that are invalid or no longer work will be removed from  the destination servers.
Pushing credentials to server mbx-1
Setting a new password on Alternate Service Account in Active Directory
Password change
Do you want to change password for tailspin\EXCH2016ASA$ in Active Directory at this time?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y
Preparing to update Active Directory with a new password for tailspin\EXCH2016ASA$ ...
Resetting a password in the Active Directory for tailspin\EXCH2016ASA$ ...
New password was successfully set to Active Directory.
Retrieving the current Alternate Service Account configuration from servers in scope
Alternate Service Account properties:
StructuralObjectClass QualifiedUserName Last Pwd Update       SPNs
--------------------- ----------------- ---------------       ----
computer              tailspin\EXCH2016ASA$   1/12/2016 10:19:53 AM
Per-server Alternate Service Account configuration as of the time of script completion:
   Array: {mail.corp.tailspintoys.com}
Identity  AlternateServiceAccountConfiguration
--------  ------------------------------------
cas-1 Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
          ...
========== Finished at 01/12/2016 10:20:00 ==========
        THE SCRIPT HAS SUCCEEDED

Implantar a credencial ASA em outro servidor do Exchange que executa serviços de Acesso ao Cliente

  1. Abra o Shell de Gerenciamento do Exchange em um servidor exchange 2016 ou Exchange 2019.

  2. Altere diretórios para <o diretório> de instalação do Exchange 2016\V15\Scripts.

  3. Execute o seguinte comando para implantar a credencial ASA em outro servidor do Exchange 2016 ou Exchange 2019 que executa serviços de Acesso ao Cliente:

    .\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer cas-2.corp.tailspintoys.com -CopyFrom cas-1.corp.tailspintoys.com
    
  4. Repita a Etapa 3 para cada servidor que executa serviços de Acesso ao Cliente aos quais você deseja implantar a credencial ASA.

A seguir está um exemplo da saída mostrada quando você executa o script RollAlternateServiceAccountPassword.ps1.

========== Starting at 01/12/2016 10:34:35 ==========
Destination servers that will be updated:
Name                                                        PSComputerName
----                                                        --------------
cas-2                                                   cas-2.corp.tailspintoys.com
Credentials that will be pushed to every server in the specified scope (recent first):
UserName
Password
--------
--------
tailspin\EXCH2016ASA$
System.Security.SecureString
Prior to pushing new credentials, all existing credentials will be removed from the destination servers.
Pushing credentials to server mbx-2
Retrieving the current Alternate Service Account configuration from servers in scope
Alternate Service Account properties:
StructuralObjectClass QualifiedUserName Last Pwd Update       SPNs
--------------------- ----------------- ---------------       ----
computer              tailspin\EXCH2016ASA$   1/12/2016 10:19:53 AM
Per-server Alternate Service Account configuration as of the time of script completion:
   Array: cas-2.corp.tailspintoys.com
Identity  AlternateServiceAccountConfiguration
--------  ------------------------------------
cas-2 Latest: 1/12/2016 10:37:59 AM, tailspin\EXCH2016ASA$
          ...
========== Finished at 01/12/2016 10:38:13 ==========
        THE SCRIPT HAS SUCCEEDED

Verificar a implantação da credencial ASA

  • Abra o Shell de Gerenciamento do Exchange em um servidor exchange 2016 ou Exchange 2019.

  • Execute o seguinte comando para verificar as configurações no servidor que executa serviços de Acesso ao Cliente:

    Get-ClientAccessServer CAS-3 -IncludeAlternateServiceAccountCredentialStatus | Format-List Name, AlternateServiceAccountConfiguration
    
  • Repita a Etapa 2 em cada servidor que executa serviços de Acesso ao Cliente para o qual você deseja verificar a implantação da credencial ASA.

A seguir está um exemplo da saída mostrada quando você executa o comando Get-ClientAccessServer acima e nenhuma credencial ASA anterior foi definida.

Name                                 : CAS-1
AlternateServiceAccountConfiguration : Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
                                       Previous: <Not set>
                                          ...

A seguir está um exemplo da saída mostrada quando você executa o comando Get-ClientAccessServer acima e uma credencial ASA foi definida anteriormente. A credencial ASA anterior e a data e hora em que foi definida são retornadas.

Name                                 : CAS-3
AlternateServiceAccountConfiguration : Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
                                       Previous: 7/15/2015 12:58:35 PM, tailspin\oldSharedServiceAccountName$
                                          ...

Associar SPNs (Nomes de Entidade de Serviço) à credencial ASA

Importante

Não associe SPNs a uma credencial ASA até que você tenha implantado essa credencial a pelo menos uma Exchange Server, conforme descrito anteriormente em Implantar a Credencial ASA no primeiro servidor exchange que executa serviços de Acesso ao Cliente. Caso contrário, você experimentará erros de autenticação Kerberos.

Antes de associar os SPNs à credencial ASA, você precisa verificar se os SPNs de destino ainda não estão associados a uma conta diferente na floresta. A credencial ASA deve ser a única conta na floresta com a qual esses SPNs estão associados. Você pode verificar se nenhuma outra conta na floresta está associada aos SPNs executando o comando setspn da linha de comando.

Verifique se um SPN ainda não está associado a uma conta em uma floresta executando o comando setspn

  1. Pressione Iniciar. Na caixa Pesquisar , digite Prompt de Comando e, na lista de resultados, selecione Prompt de Comando.

  2. No prompt de comando, digite o seguinte comando:

    setspn -F -Q <SPN>
    

    Onde <o SPN> é o SPN que você deseja associar à credencial ASA. Por exemplo:

    setspn -F -Q http/mail.corp.tailspintoys.com
    

    O comando não deve retornar nada. Se ele retornar algo, outra conta já estará associada ao SPN. Repita esta etapa uma vez para cada SPN que você deseja associar à credencial ASA.

Associar um SPN a uma credencial ASA usando o comando setspn

  1. Pressione Iniciar. Na caixa Pesquisar , digite Prompt de Comando e selecione Prompt de Comando na lista de resultados.

  2. No prompt de comando, digite o seguinte comando:

    setspn -S <SPN> <Account>$
    

    Onde <o SPN> é o SPN que você deseja associar à credencial ASA e <à Conta> é a conta associada à credencial ASA. Por exemplo:

    setspn -S http/mail.corp.tailspintoys.com tailspin\EXCH2016ASA$
    

    Execute esse comando uma vez para cada SPN que você deseja associar à credencial ASA.

Verifique se você associou os SPNs às credenciais ASA usando o comando setspn

  1. Pressione Iniciar. Na caixa Pesquisar , digite Prompt de Comando e selecione Prompt de Comando na lista de resultados.

  2. No prompt de comando, digite o seguinte comando:

    setspn -L <Account>$
    

    Em que <conta> é a conta associada à credencial ASA. Por exemplo:

    setspn -L tailspin\EXCH2016ASA$
    

    Você precisa executar esse comando apenas uma vez.

Habilitar a autenticação kerberos para clientes do Outlook

  1. Abra o Shell de Gerenciamento do Exchange em um servidor exchange 2016 ou Exchange 2019.

  2. Para habilitar a autenticação kerberos para clientes do Outlook Anywhere, execute o seguinte comando em seu servidor exchange 2016 ou Exchange 2019 que está executando serviços de Acesso ao Cliente:

    Get-OutlookAnywhere -Server CAS-1 | Set-OutlookAnywhere -InternalClientAuthenticationMethod  Negotiate
    
  3. Para habilitar a autenticação Kerberos para MAPI em clientes HTTP, execute o seguinte comando em seu servidor Exchange 2016 ou Exchange 2019 que está executando serviços de Acesso ao Cliente:

    Get-MapiVirtualDirectory -Server CAS-1 | Set-MapiVirtualDirectory -IISAuthenticationMethods Ntlm,Negotiate
    

    Em ambientes híbridos com Exchange Online ou se você usar o OAuth internamente, execute os seguintes comandos em seu servidor Exchange 2016 ou Exchange 2019 que está executando serviços de Acesso ao Cliente:

    $mapidir = Get-MapiVirtualDirectory -Server CAS-1
    $mapidir | Set-MapiVirtualDirectory -IISAuthenticationMethods ($mapidir.IISAuthenticationMethods +='Negotiate')
    
  4. Repita as etapas 2 e 3 para cada servidor exchange 2016 ou Exchange 2019 que está executando serviços de Acesso ao Cliente para os quais você deseja habilitar a autenticação kerberos.

Verificar autenticação Kerberos do cliente exchange

Depois de configurar com êxito Kerberos e a credencial ASA, verifique se os clientes podem se autenticar com êxito, conforme descrito nessas tarefas.

Verifique se o serviço host do Serviço do Microsoft Exchange está em execução

O Serviço de Host do Serviço do Microsoft Exchange (MSExchangeServiceHost) no servidor que está executando os serviços de Acesso ao Cliente é responsável pelo gerenciamento da credencial ASA. Se o MSExchangeServiceHost não estiver em execução, a autenticação kerberos não será possível. Por padrão, o serviço é configurado para iniciar automaticamente quando o computador é iniciado.

Para verificar se o serviço host do Serviço do Microsoft Exchange foi iniciado

  1. Clique em Iniciar, digite services.msc e selecione services.msc na lista.

  2. Na janela Serviços , localize o serviço Host do Serviço do Microsoft Exchange na lista de serviços.

  3. O status do serviço deve estar em execução. Se o status não estiver em execução, clique com o botão direito do mouse no serviço e clique em Iniciar.

Verificar Kerberos do servidor que executa serviços de Acesso ao Cliente

Quando você configurou a credencial ASA em cada servidor que executa serviços de Acesso ao Cliente, você executou o cmdlet Set-ClientAccessServer . Depois de executar esse cmdlet, você pode usar os logs para verificar conexões Kerberos bem-sucedidas.

Verifique se Kerberos está funcionando corretamente usando o arquivo de log HttpProxy

  1. Em um editor de texto, navegue até a pasta em que o log HttpProxy é armazenado. Por padrão, o log é armazenado na seguinte pasta:

    %ExchangeInstallPath%\Logging\HttpProxy\RpcHttp

  2. Abra o arquivo de log mais recente e procure a palavra Negociar. A linha no arquivo de log será semelhante ao exemplo a seguir:

    2014-02-19T13:30:49.219Z,e19d08f4-e04c-42da-a6be-b7484b396db0,15,0,775,22,,RpcHttp,mail.corp.tailspintoys.com,/rpc/rpcproxy.dll,,Negotiate,True,tailspin\Wendy,tailspintoys.com,MailboxGuid~ad44b1e0-e44f-4a16-9396-3a437f594f88,MSRPC,192.168.1.77,EXCH1,200,200,,RPC_OUT_DATA,Proxy,exch2.tailspintoys.com,15.00.0775.000,IntraForest,MailboxGuidWithDomain,,,,76,462,1,,1,1,,0,,0,,0,0,16272.3359,0,0,3,0,23,0,25,0,16280,1,16274,16230,16233,16234,16282,?ad44b1e0-e44f-4a16-9396-3a437f594f88@tailspintoys.com:6001,,BeginRequest=2014-02-19T13:30:32.946Z;BeginGetRequestStream=2014-02-19T13:30:32.946Z;OnRequestStreamReady=2014-02-19T13:30:32.946Z;BeginGetResponse=2014-02-19T13:30:32.946Z;OnResponseReady=2014-02-19T13:30:32.977Z;EndGetResponse=2014-02-19T13:30:32.977Z;,PossibleException=IOException;
    

    Se você vir que o valor AuthenticationType é Negociar, o servidor está criando com êxito conexões autenticadas kerberos.

Manter a credencial ASA

Se você precisar atualizar a senha na credencial ASA periodicamente, use as etapas para configurar a credencial ASA neste artigo. Considere configurar uma tarefa agendada para executar a manutenção regular de senha. Certifique-se de monitorar a tarefa agendada para garantir a distribuição de senha em tempo hábil e evitar possíveis interrupções de autenticação.

Desativar a autenticação kerberos

Para configurar seus servidores que estão executando serviços de Acesso ao Cliente para parar de usar Kerberos, dissocie ou remova os SPNs da credencial ASA. Se os SPNs forem removidos, a autenticação Kerberos não será experimentada por seus clientes e os clientes configurados para usar a autenticação do Negotiate usarão o NTLM. Os clientes configurados para usar apenas Kerberos não poderão se conectar. Depois que os SPNs forem removidos, você também deverá excluir a conta.

Para remover a credencial ASA

  1. Abra o Shell de Gerenciamento do Exchange em um servidor exchange 2016 ou Exchange 2019 e execute o seguinte comando:

    Set-ClientAccessServer CAS-1 -RemoveAlternateServiceAccountCredentials
    
  2. Embora você não precise fazer isso imediatamente, você deve eventualmente reiniciar todos os computadores cliente para limpar o cache de tíquetes Kerberos do computador.