Erro Schannel 36887 (TLS 48) em controlador de domínio: ignorar ou corrigir na migração para Windows Server 2022

O evento Schannel 36887 com alerta TLS 48 costuma assustar durante migrações de controladores de domínio. Veja como decidir entre ignorar por ora ou corrigir, como diagnosticar a origem e quais ajustes de certificado e confiança de CA aplicar para eliminar o ruído sem interromper serviços.

Índice

Visão geral e contexto

Num ambiente com controlador de domínio em Windows Server 2012 R2, o registo repetido do evento Schannel 36887 com a mensagem “A fatal alert was received” e código de alerta TLS 48 aparece várias vezes por minuto. Ao mesmo tempo, está em curso a migração para Windows Server 2022.

A questão prática é: é preciso tratar esse alerta antes de continuar a migração, ou dá para concluir e só então corrigir no ambiente novo?

Resposta curta para decisões durante a migração

  • Conclua a migração primeiro caso não exista impacto funcional. Evite mexer em configuração de um servidor prestes a ser descomissionado. Se o novo controlador em 2022 também registar o alerta, trate-o lá.
  • Se a validação de certificados do AD estiver correta e nenhuma aplicação estiver a falhar (ex.: integrações via LDAPS), o evento pode ser temporariamente ignorado até encerrar a migração.

O que o evento realmente significa

Para decidir com segurança, convém entender a semântica:

  • Evento 36887: o servidor recebeu de um endpoint remoto um alerta fatal de TLS. O sistema local apenas regista que o outro lado encerrou o handshake de forma abrupta. Por si só, não prova falha do serviço local.
  • Alerta TLS 48: corresponde a unknown_ca (autoridade certificadora desconhecida). Em termos práticos, o cliente ou serviço remoto não confia na cadeia da CA que emitiu o certificado apresentado pelo servidor. Em controladores de domínio, isso aparece tipicamente em ligações LDAPS nas portas 636 ou 3269 (catálogo global), mas também pode ocorrer em RDP na 3389, WinRM na 5986 ou HTTPS na 443.

Como decidir entre ignorar ou corrigir agora

Pode ignorar temporariamente sePrecisa corrigir antes se
não há queixas de aplicações nem falhas de autenticação que usem TLShá aplicações que usam LDAPS ou outros serviços TLS a falhar
o servidor antigo será despromovido em breveo alerta também aparece no novo controlador em 2022
o padrão sugere varreduras de segurança ou monitorização automatizadahá exigência de auditoria para reduzir alertas de confiança

Fluxo prático de diagnóstico

O objetivo é identificar qual serviço está a disparar o alerta e de onde vem a ligação. Em seguida, validar o certificado usado por esse serviço e a cadeia de confiança no cliente.

Aumentar o detalhe de registo de Schannel

Ative temporariamente o registo detalhado, para enriquecer correlação e reduzir suposições. Crie a seguinte chave e valor no servidor afetado:

Chave:   HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Valor:   EventLogging (DWORD)
Dados:   0x3  (avisos e erros)  ou  0x7  (todos os eventos)

Reinicie o servidor ou o serviço afetado se aplicável. Não esqueça de voltar ao valor padrão após o diagnóstico para evitar log excessivo.

Correlacionar horário, portas e origens

Em paralelo:

  • Ative registo do firewall para conexões bem-sucedidas, facilitando a captura de IP remoto.
  • Observe quais portas TLS estão a escutar e se há picos de conexão coincidindo com o horário do evento.
# Visualizar conexões ativas e portas em escuta
Get-NetTCPConnection -State Listen | Sort-Object LocalPort | Format-Table LocalAddress,LocalPort,OwningProcess

Testar conectividade básica às portas sensíveis

Test-NetConnection -ComputerName \ -Port 636
Test-NetConnection -ComputerName \ -Port 3269
Test-NetConnection -ComputerName \ -Port 5986
Test-NetConnection -ComputerName \ -Port 3389

Examinar eventos recentes de Schannel

\$start = (Get-Date).AddHours(-4)
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Schannel'; Id=36887; StartTime=\$start} |
Select-Object TimeCreated, Id, LevelDisplayName, Message 

Identificar o serviço mais prováv​el

ServiçoPortaIndicaçãoComo validar rapidamente
LDAP seguro636 e 3269aplicações, appliances e scanners que consultam o ADusar Ldp.exe para ligar a <dc-fqdn>:636 e ler o RootDSE
Área de trabalho remota3389conexões de administração, bastion hosts, salt serversabrir o cliente RDP e verificar aviso de certificado
WinRM sobre HTTPS5986scripts, Desired State Configuration, remoting automatizadoTestar com winrm ou Enter-PSSession via -UseSSL
HTTPS genérico443sites ou APIs hospedadas no DC (não é comum, mas existe)ver bindings no IIS Manager

Validação de certificado para LDAPS

Em controladores de domínio, LDAPS é o principal candidato para unknown_ca. O certificado do servidor deve atender aos requisitos abaixo.

Requisitos essenciais

RequisitoDescriçãoOnde verificar
Localizaçãoinstalado em Computador Local\Pessoal (repositório My) ou preferencialmente no repositório do serviço AD DS (NTDS)MMC Certificates, selecionando conta de serviço AD DS
Uso de chaveextensão EKU contendo Server Authentication (OID 1.3.6.1.5.5.7.3.1)aba Detalhes do certificado
NomeFQDN do DC no SAN; incluir aliases se clientes os usamcampo Subject Alternative Name
Cadeiacadeia completa até uma CA confiável pelos clientes e scannersvisualizar caminho de certificação e verificar “confiável”
Seleçãoquando múltiplos certificados “parecem válidos”, o sistema pode escolher o errado; no repositório NTDS a seleção fica previsívelmover o certificado correto para o store do serviço AD DS

Testes rápidos

# Ver certs de computador
certlm.msc

Ver certs no store do serviço AD DS (NTDS) via MMC

Abrir MMC > File > Add/Remove Snap-in > Certificates > Service account > Active Directory Domain Services

Teste básico de LDAPS com Ldp.exe

Conectar a \<dc-fqdn> porta 636, marcar SSL, depois Bind anónimo ou com credenciais

Se o bind falhar e a mensagem indicar problemas de confiança de certificado, confirme se os clientes possuem a raiz e intermediárias da sua CA no trust store. Em ambientes com scanners de terceiros, pode ser necessário configurar explicitamente a CA corporativa no dispositivo de varredura.

Correções por serviço

LDAP seguro

  1. Emitir ou renovar um certificado para o DC com EKU de servidor e SAN contendo o FQDN.
  2. Instalar o certificado no NTDS\Personal ou, em alternativa, em Computador Local\Pessoal.
  3. Garantir a distribuição, via política, da raiz e intermediárias da CA a todos os clientes que consumam LDAPS.
  4. Reiniciar o serviço AD DS ou o servidor e validar com Ldp.exe.

Área de trabalho remota

Por padrão, servidores podem apresentar certificado autoassinado, o que dispara unknown_ca em clientes estritos. Publique um certificado emitido pela CA corporativa e configure o serviço de RDP para usá-lo. Em ambientes com Connection Broker ou Gateway, verifique a cadeia também nesses componentes.

WinRM sobre HTTPS

Se o remoting usa HTTPS, associe um certificado confiável e teste com PowerShell:

# Remoto para o DC via WinRM com TLS
Enter-PSSession -ComputerName <dc-fqdn> -UseSSL

Verificar configuração

winrm get winrm/config/Listener?Address=\*+Transport=HTTPS 

Serviços web no servidor

Se o DC hospeda um site ou API, confirme no IIS Manager que o binding HTTPS utiliza um certificado emitido por uma CA que os clientes confiem, e que as intermediárias estão instaladas no servidor.

Boas práticas para a migração

  • Automatize a emissão para controladores novos. Habilite autoinscrição via política e use um modelo de certificado adequado ao DC com Server Authentication.
  • Valide no laboratório as cadeias e os serviços TLS antes de promover o primeiro controlador 2022 em produção.
  • Evite mudanças disruptivas no 2012 R2. Concentre correções no novo ambiente, onde permanecerão.
  • Distribua a cadeia da CA (raiz e intermediárias) a todos os endpoints, inclusive scanners de segurança e appliances que consultam o AD.
  • Monitore após a promoção com consultas específicas para Schannel e verifique se o ruído cessou.

Exemplo de rotina de monitorização

# Janela de observação ajustável
$start = (Get-Date).AddDays(-1)

Coleta dos eventos 36887

\$ev = Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Schannel'; Id=36887; StartTime=\$start}

Resumo por mensagem

\$ev | Group-Object Message | Sort-Object Count -Descending |
Select-Object Count, Name

Exporta para CSV para auditoria

\$ev | Select-Object TimeCreated, Id, LevelDisplayName, Message |
Export-Csv -NoTypeInformation -Encoding UTF8 C:\Temp\Schannel-36887.csv 

Checklist objetivo

Use esta lista curta para orientar a decisão e as ações.

  • Confirme que não há impacto funcional em aplicações que usam LDAPS ou TLS.
  • Se a migração está em curso, priorize concluir e concentre correções no 2022.
  • Ative EventLogging do Schannel temporariamente e correlacione horários com origens e portas.
  • Para LDAPS, valide EKU, SAN, cadeia e store do certificado; prefira o repositório NTDS.
  • Garanta que clientes e scanners confiem na CA emissora.
  • Se houver múltiplos certificados, elimine ambiguidades e force a seleção correta no serviço pertinente.

Resolução de problemas adicionais

Se após as correções a mensagem persistir:

  • Verifique se há dispositivos externos (WAF, IDS, proxies, scanners) a conectar com pilhas TLS estritas e trust store próprio. Configure a confiança nesses dispositivos.
  • Considere captura de pacotes em janelas curtas para observar o alerta TLS vindo do cliente. Em controladores, faça isso com cautela, fora de horários críticos.
  • Audite contas de serviço e integrações antigas que possam estar a chamar LDAPS a partir de sistemas desatualizados sem a cadeia de CA.

Perguntas frequentes

O alerta significa falha do meu servidor?
Não necessariamente. Significa que o cliente remotei encerrou o handshake por não confiar na CA do certificado apresentado. Só é problema se afetar um fluxo funcional.

É seguro ignorar até terminar a migração?
Sim, desde que não haja impacto funcional e o servidor antigo vá sair de produção. Faça a validação no novo ambiente e trate lá os alertas persistentes.

Como saber se é LDAPS?
Olhe volume e cadência. Ligações periódicas, de scanners ou appliances, costumam atingir LDAPS. Valide com Ldp.exe e monitore as portas 636 e 3269.

Posso “matar” o ruído desabilitando portas?
Evite alterar exposição de serviços críticos do DC durante a migração. O risco de efeitos colaterais é maior que o benefício de silenciar logs.

Trocar a CA resolve?
Resolve se a causa for falta de confiança na cadeia. Alternativamente, distribua a cadeia atual aos clientes que se conectam. O importante é a confiança do lado cliente.

Exemplo de comunicação para auditoria

Resumo: Evento Schannel 36887 com alerta TLS 48 observado no DC legado em descomissionamento.
Impacto: Sem evidências de falhas em integrações. Volume compatível com varreduras automatizadas.
Ação: Migração para Windows Server 2022 priorizada. Certificados e cadeia de CA validados no novo DC.
Plano: Monitorar Schannel nos novos controladores; se persistir, ajustar confiança de CA nos clientes envolvidos.

Conclusão prática

O evento Schannel 36887 com alerta 48 aponta para desconfiança de CA do lado cliente e não acusa, por si, um defeito local. Em cenários de migração, a abordagem mais segura e eficiente é concluir a troca dos controladores, garantir que o Windows Server 2022 opera com certificado e cadeia adequados, e tratar o que sobrar de ruído no ambiente novo. Se houver impacto real, siga o roteiro: identificar o serviço, validar o certificado (EKU, SAN, cadeia e store), e alinhar a confiança nos clientes que se conectam.


Apêndice com comandos úteis

Consulta de eventos

# Últimas vinte e quatro horas de Schannel 36887
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Schannel'; Id=36887; StartTime=(Get-Date).AddDays(-1)} |
  Format-Table TimeCreated, LevelDisplayName, Id, Message -Auto

Exportar para CSV

Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Schannel'; Id=36887; StartTime=(Get-Date).AddDays(-7)} |
Select-Object TimeCreated, Id, Message |
Export-Csv -NoTypeInformation C:\Temp\Schannel-36887-semana.csv 

Verificação de portas

# Portas em escuta
Get-NetTCPConnection -State Listen | Sort-Object LocalPort | ft LocalAddress, LocalPort, OwningProcess

Processos por PID

Get-Process -Id (Get-NetTCPConnection -State Listen | Select-Object -ExpandProperty OwningProcess | Sort-Object -Unique) 

Validação rápida de LDAPS

# Teste de conectividade (não valida certificado)
Test-NetConnection -ComputerName &lt;dc-fqdn&gt; -Port 636

Ldp.exe: conectar a \<dc-fqdn> na porta 636 com SSL e executar Bind

Verifique se o RootDSE é retornado sem erro

Boas práticas de certificado

  • Modelos de certificado para DC devem incluir EKU de Server Authentication e SAN com o FQDN do controlador.
  • Distribua raiz e intermediárias da CA via Política de Grupo para computadores e contas de serviço que consomem LDAPS.
  • Se existirem múltiplos certificados, mantenha apenas o necessário e prefira o uso do store NTDS para o AD DS.

Resumo executivo

Para equipas que precisam de uma decisão rápida: se não há falhas funcionais, prossiga com a migração. No novo ambiente, garanta certificados corretos e cadeia confiável. Se o evento persistir, corrija a confiança de CA no cliente ou troque o certificado do serviço envolvido. O evento 36887 com alerta 48 é um indicador de desconfiança do lado cliente, não uma condenação do seu servidor.

Em suma: complete a migração sem alterar o servidor antigo caso não haja impacto. Se necessário corrigir já, identifique a porta e o serviço, valide o certificado (SAN, EKU, cadeia) e assegure que o cliente confia na CA emissora.

Índice