Configurar a autenticação Kerberos para serviços de Acesso de Cliente com balanceamento de carga
Para poder utilizar a autenticação Kerberos com servidores de Caixa de Correio com balanceamento de carga a executar serviços de Acesso de Cliente, tem de concluir os passos de configuração descritos neste artigo.
Criar a credencial de conta de serviço alternativa nos Serviços de Domínio do Active Directory
Todos os servidores exchange que executam serviços de Acesso de Cliente que partilham os mesmos espaços de nomes e URLs têm de utilizar 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 partilhar a mesma credencial ASA. Se a credencial do ASA tiver sido criada para o Exchange 2010, terá de criar uma nova para o Exchange 2016.
Embora os registos CNAME sejam suportados para espaços de nomes partilhados, a Microsoft recomenda a utilização de registos A. Isto garante que o cliente emite corretamente um pedido de permissão Kerberos com base no nome partilhado e não no FQDN do servidor.
Observação
As Contas de Serviço Geridas de Grupo (gMSA) não são suportadas em ambientes do Exchange Server no local e, portanto, não podem ser utilizadas neste cenário.
Quando configurar a credencial do ASA, tenha estas diretrizes em mente:
Tipo de conta: recomendamos que crie uma conta de computador em vez de uma conta de utilizador. Uma conta de computador não permite início de sessão interativo e pode ter políticas de segurança mais simples do que uma conta de utilizador. Se criar uma conta de computador, a palavra-passe não expira, mas recomendamos que atualize a palavra-passe periodicamente mesmo assim. Pode utilizar a política de grupo local para especificar uma idade máxima para a conta de computador e os scripts para eliminar periodicamente contas de computador que não cumprem as políticas atuais. A política de segurança local também determina quando tem de alterar a palavra-passe. Embora recomendemos que utilize uma conta de computador, pode criar uma conta de utilizador.
Nome da conta: não existem requisitos para o nome da conta. Pode utilizar qualquer nome que esteja em conformidade com o seu esquema de nomenclatura.
Grupo de contas: a conta que utiliza para a credencial do ASA não precisa de privilégios de segurança especiais. Se estiver a utilizar uma conta de computador, a conta só tem de ser membro do grupo de segurança Computadores de Domínio. Se estiver a utilizar uma conta de utilizador, a conta só tem de ser membro do grupo de segurança Utilizadores do Domínio.
Palavra-passe da conta: a palavra-passe que fornecer quando criar a conta será utilizada. Por isso, quando criar a conta, deve utilizar uma palavra-passe complexa e garantir que a palavra-passe está em conformidade com os requisitos de palavra-passe da sua organização.
Para criar a credencial do ASA como uma conta de computador
Num computador associado a um domínio, execute o Windows PowerShell ou a Shell de Gestão do Exchange.
Utilize o cmdlet Import-Module para importar o módulo do Active Directory.
Import-Module ActiveDirectory
Utilize o cmdlet New-ADComputer para criar uma nova conta de computador do Active Directory com esta 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
Quando EXCH2016ASA é o nome da conta, a descrição Credenciais de Conta de Serviço Alternativas para o Exchange é o que pretende que seja e o valor do parâmetro SamAccountName , neste caso , EXCH2016ASA, tem de ser exclusivo no seu diretório.
Utilize o cmdlet Set-ADComputer para ativar o suporte de cifras de encriptação AES 256 utilizado pelo Kerberos com esta sintaxe de cmdlet:
Set-ADComputer [-Name] <string> [-add @{<attributename>="<value>"]
Exemplo:
Set-ADComputer EXCH2016ASA -add @{"msDS-SupportedEncryptionTypes"="28"}
Quando EXCH2016ASA é o nome da conta e o atributo a modificar é msDS-SupportedEncryptionTypes com um valor decimal de 28, que permite as seguintes cifras: RC4-HMAC, AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96.
Para obter mais informações sobre estes cmdlets, veja Import-Module e New-ADComputer.
Cenários entre florestas
Se tiver uma implementação entre florestas ou florestas de recursos e tiver utilizadores fora da floresta do Active Directory que contenham o Exchange, tem de configurar relações de confiança da floresta entre as florestas. Além disso, para cada floresta na implementação, tem de configurar uma regra de encaminhamento que permita a confiança entre todos os sufixos de nome na floresta e entre florestas. Para obter mais informações sobre a gestão de confianças entre florestas, veja Configurar Organizações de Parceiros.
Identificar os Nomes dos Principais de Serviço a associar à credencial do ASA
Depois de criar a credencial do ASA, tem de associar os Nomes dos Principais de Serviço (SPNs) do Exchange à credencial do ASA. A lista de SPNs do Exchange pode variar consoante a configuração, mas deve incluir, pelo menos, o seguinte:
- http/: Utilize este SPN para Outlook Anywhere, MAPI através de HTTP, Exchange Web Services, Deteção Automática e Livro de Endereços Offline.
Os valores SPN têm de corresponder ao nome do serviço no balanceador de carga de rede em vez de em servidores individuais. Para ajudar a planear os valores SPN que deve utilizar, considere os seguintes cenários:
Em cada um destes cenários, suponha que os nomes de domínio completamente qualificados (FQDNs) com balanceamento de carga foram implementados para os URLs internos, URLs externos e o URI interno de deteção automática utilizado pelos membros que executam os serviços de Acesso de Cliente.
Site único do Active Directory
Se tiver um único site do Active Directory, o seu ambiente poderá assemelhar-se ao que se encontra na figura seguinte:
Com base nos FQDNs utilizados pelos clientes internos do Outlook na figura anterior, tem de associar os seguintes SPNs à credencial do ASA:
- http/mail.corp.tailspintoys.com
- http/autodiscover.corp.tailspintoys.com
Vários sites do Active Directory
Se tiver vários sites do Active Directory, o seu ambiente poderá assemelhar-se ao que se encontra na figura seguinte:
Com base nos FQDNs utilizados pelos clientes do Outlook na figura anterior, teria de associar os seguintes SPNs à credencial do ASA utilizada pelos servidores da Caixa de Correio que executam os serviços de Acesso de Cliente no ADSite 1:
- http/mail.corp.tailspintoys.com
- http/autodiscover.corp.tailspintoys.com
Também teria de associar os seguintes SPNs à credencial do ASA utilizada pelos servidores da Caixa de Correio que executam os serviços de Acesso de Cliente no ADSite 2:
- http/mailsdc.corp.tailspintoys.com
- http/autodiscoversdc.corp.tailspintoys.com
Configurar e, em seguida, verificar a configuração da credencial do ASA em cada servidor que executa os serviços de Acesso de Cliente
Depois de criar a conta, tem de verificar se a conta foi replicada para todos os controladores de domínio do AD DS. Especificamente, a conta tem de estar presente em cada servidor que execute serviços de Acesso de Cliente que irão utilizar a credencial do ASA. Em seguida, configure a conta como a credencial ASA em cada servidor que executa os serviços de Acesso de Cliente na sua implementação.
Pode configurar a credencial do ASA com a Shell de Gestão do Exchange, conforme descrito num destes procedimentos:
- Implementar a credencial do ASA no primeiro servidor Exchange a executar serviços de Acesso de Cliente
- Implementar a credencial do ASA em servidores Exchange subsequentes com serviços de Acesso de Cliente
O único método suportado para implementar a credencial do ASA é utilizar o script RollAlternateServiceAcountPassword.ps1. Para obter mais informações e permissões necessárias para executar o script, veja Utilizar o Script de RollAlternateserviceAccountCredential.ps1 na Shell. Após a execução do script, recomendamos que verifique se todos os servidores de destino foram atualizados corretamente.
Implementar a Credencial do ASA no primeiro servidor Exchange a executar os serviços de Acesso de Cliente
Abra a Shell de Gestão do Exchange num servidor exchange 2016 ou Exchange 2019.
Altere os diretórios para <o diretório> de instalação do Exchange 2016\V15\Scripts.
Execute o seguinte comando para implementar a credencial do ASA no primeiro servidor do Exchange 2016 ou Exchange 2019 a executar os serviços de Acesso de Cliente:
.\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer cas-1.corp.tailspintoys.com -GenerateNewPasswordFor tailspin\EXCH2016ASA$
Quando lhe for perguntado se pretende alterar a palavra-passe da conta de serviço alternativa, responda Sim.
Segue-se um exemplo da saída que é apresentada quando 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
Implementar a credencial do ASA noutro servidor Exchange a executar serviços de Acesso de Cliente
Abra a Shell de Gestão do Exchange num servidor exchange 2016 ou Exchange 2019.
Altere os diretórios para <o diretório> de instalação do Exchange 2016\V15\Scripts.
Execute o seguinte comando para implementar a credencial do ASA noutro servidor do Exchange 2016 ou Exchange 2019 com serviços de Acesso de Cliente:
.\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer cas-2.corp.tailspintoys.com -CopyFrom cas-1.corp.tailspintoys.com
Repita o Passo 3 para cada servidor que execute os serviços de Acesso de Cliente nos quais pretende implementar a credencial do ASA.
Segue-se um exemplo da saída que é apresentada quando 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 implementação da credencial do ASA
Abra a Shell de Gestão do Exchange num servidor exchange 2016 ou Exchange 2019.
Execute o seguinte comando para verificar as definições no servidor que executa os serviços de Acesso de Cliente:
Get-ClientAccessServer CAS-3 -IncludeAlternateServiceAccountCredentialStatus | Format-List Name, AlternateServiceAccountConfiguration
Repita o Passo 2 em cada servidor que execute os serviços de Acesso de Cliente para os quais pretende verificar a implementação da credencial do ASA.
Segue-se um exemplo do resultado apresentado quando executa o comando Get-ClientAccessServer acima e não foi definida nenhuma credencial asa anterior.
Name : CAS-1
AlternateServiceAccountConfiguration : Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
Previous: <Not set>
...
Segue-se um exemplo da saída que é apresentada quando executa o comando Get-ClientAccessServer acima e uma credencial asa foi definida anteriormente. São devolvidas as credenciais do ASA anteriores e a data e hora em que foi definida.
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 Nomes de Principais de Serviço (SPNs) à credencial do ASA
Importante
Não associe SPNs a uma credencial do ASA até ter implementado essa credencial em, pelo menos, um Exchange Server, conforme descrito anteriormente em Implementar a Credencial do ASA no primeiro servidor Exchange a executar os serviços de Acesso de Cliente. Caso contrário, irá deparar-se com erros de autenticação Kerberos.
Antes de associar os SPNs à credencial do ASA, tem de verificar se os SPNs de destino ainda não estão associados a uma conta diferente na floresta. A credencial do ASA tem de ser a única conta na floresta com a qual estes SPNs estão associados. Pode verificar se nenhuma outra conta na floresta está associada aos SPNs ao executar o comando setspn a partir da linha de comandos.
Verifique se um SPN ainda não está associado a uma conta numa floresta ao executar o comando setspn
Prima Iniciar. Na caixa Procurar , escreva Linha de Comandos e, em seguida, na lista de resultados, selecione Linha de Comandos.
No prompt de comando, digite o seguinte comando:
setspn -F -Q <SPN>
Em <que SPN> é o SPN que pretende associar à credencial do ASA. Por exemplo:
setspn -F -Q http/mail.corp.tailspintoys.com
O comando não deve devolver nada. Se devolver algo, outra conta já está associada ao SPN. Repita este passo uma vez para cada SPN que pretende associar à credencial do ASA.
Associar um SPN a uma credencial do ASA com o comando setspn
Prima Iniciar. Na caixa Procurar , escreva Linha de Comandos e, em seguida, selecione Linha de Comandos na lista de resultados.
No prompt de comando, digite o seguinte comando:
setspn -S <SPN> <Account>$
Em <que o SPN> é o SPN que pretende associar à credencial do ASA e <a Conta> é a conta associada à credencial do ASA. Por exemplo:
setspn -S http/mail.corp.tailspintoys.com tailspin\EXCH2016ASA$
Execute este comando uma vez para cada SPN que pretende associar à credencial do ASA.
Verifique se associou os SPNs às credenciais do ASA com o comando setspn
Prima Iniciar. Na caixa Procurar , escreva Linha de Comandos e, em seguida, selecione Linha de Comandos na lista de resultados.
No prompt de comando, digite o seguinte comando:
setspn -L <Account>$
Em <que Conta> é a conta associada à credencial do ASA. Por exemplo:
setspn -L tailspin\EXCH2016ASA$
Só tem de executar este comando uma vez.
Ativar a autenticação Kerberos para clientes do Outlook
Abra a Shell de Gestão do Exchange num servidor exchange 2016 ou Exchange 2019.
Para ativar a autenticação Kerberos para clientes do Outlook Anywhere, execute o seguinte comando no seu servidor exchange 2016 ou Exchange 2019 que está a executar os serviços de Acesso de Cliente:
Get-OutlookAnywhere -Server CAS-1 | Set-OutlookAnywhere -InternalClientAuthenticationMethod Negotiate
Para ativar a autenticação Kerberos para mapi através de clientes HTTP, execute o seguinte comando no seu servidor do Exchange 2016 ou Exchange 2019 que está a executar os serviços de Acesso de Cliente:
Get-MapiVirtualDirectory -Server CAS-1 | Set-MapiVirtualDirectory -IISAuthenticationMethods Ntlm,Negotiate
Em ambientes híbridos com o Exchange Online ou se utilizar o OAuth internamente, execute os seguintes comandos no seu servidor do Exchange 2016 ou Exchange 2019 com serviços de Acesso de Cliente:
$mapidir = Get-MapiVirtualDirectory -Server CAS-1 $mapidir | Set-MapiVirtualDirectory -IISAuthenticationMethods ($mapidir.IISAuthenticationMethods +='Negotiate')
Repita os passos 2 e 3 para cada servidor do Exchange 2016 ou Exchange 2019 que execute serviços de Acesso de Cliente para os quais pretende ativar a autenticação Kerberos.
Verificar a autenticação Kerberos do cliente Do Exchange
Depois de configurar o Kerberos e a credencial do ASA com êxito, verifique se os clientes se podem autenticar com êxito, conforme descrito nestas tarefas.
Verifique se o serviço Anfitrião do Serviço Microsoft Exchange está em execução
O serviço Anfitrião do Serviço Microsoft Exchange (MSExchangeServiceHost) no servidor que está a executar os serviços de Acesso de Cliente é responsável pela gestão da credencial do ASA. Se o MSExchangeServiceHost não estiver em execução, a autenticação Kerberos não será possível. Por predefinição, o serviço está configurado para iniciar automaticamente quando o computador é iniciado.
Para verificar se o serviço Anfitrião do Serviço Do Microsoft Exchange foi iniciado
Clique em Iniciar, escreva services.msc e, em seguida, selecione services.msc na lista.
Na janela Serviços , localize o serviço Anfitrião do Serviço Microsoft Exchange na lista de serviços.
O estado do serviço deve ser Em execução. Se o estado não for Em execução, clique com o botão direito do rato no serviço e, em seguida, clique em Iniciar.
Verificar o Kerberos no servidor que executa os serviços de Acesso de Cliente
Quando configurou a credencial do ASA em cada servidor que executa os serviços de Acesso de Cliente, executou o cmdlet Set-ClientAccessServer . Depois de executar este cmdlet, pode utilizar os registos para verificar as ligações Kerberos bem-sucedidas.
Verifique se o Kerberos está a funcionar corretamente com o ficheiro de registo HttpProxy
Num editor de texto, navegue para a pasta onde o registo httpproxy está armazenado. Por predefinição, o registo é armazenado na seguinte pasta:
%ExchangeInstallPath%\Logging\HttpProxy\RpcHttp
Abra o ficheiro de registo mais recente e, em seguida, procure a palavra Negociar. A linha no ficheiro de registo terá um aspeto semelhante ao seguinte exemplo:
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 vir que o valor AuthenticationType é Negotiate, o servidor está a criar ligações autenticadas kerberos com êxito.
Manter a credencial do ASA
Se tiver de atualizar a palavra-passe na credencial do ASA periodicamente, utilize os passos para configurar a credencial do ASA neste artigo. Considere configurar uma tarefa agendada para efetuar a manutenção regular de palavras-passe. Certifique-se de que monitoriza a tarefa agendada para garantir rollovers de palavras-passe em tempo útil e evitar possíveis falhas de autenticação.
Desativar a autenticação Kerberos
Para configurar os servidores que executam serviços de Acesso de Cliente para deixar de utilizar o Kerberos, desassocie ou remova os SPNs da credencial do ASA. Se os SPNs forem removidos, a autenticação Kerberos não será experimentada pelos seus clientes e os clientes configurados para utilizar a autenticação Negotiate utilizarão o NTLM. Os clientes configurados para utilizar apenas o Kerberos não conseguirão estabelecer ligação. Depois de os SPNs serem removidos, também deve eliminar a conta.
Para remover a credencial do ASA
Abra a Shell de Gestão do Exchange num servidor exchange 2016 ou Exchange 2019 e execute o seguinte comando:
Set-ClientAccessServer CAS-1 -RemoveAlternateServiceAccountCredentials
Embora não tenha de o fazer imediatamente, deve reiniciar todos os computadores cliente para limpar a cache de pedidos Kerberos do computador.