AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1005993
Accepted
Massimo
Massimo
Asked: 2020-03-08 05:57:20 +0800 CST2020-03-08 05:57:20 +0800 CST 2020-03-08 05:57:20 +0800 CST

Erro ao registrar o certificado "Autenticação Kerberos" em uma rede esparsa

  • 772

Atualmente estou trabalhando na implementação de uma Autoridade de Certificação Corporativa para um cliente cuja rede não está totalmente conectada; ele abrange vários sites geográficos e alguns deles não têm roteamento para o site onde a autoridade de certificação está localizada.

Para contornar isso, usei o Certificate Enrollment Web Service , que permite a inscrição de certificados via HTTPS; o serviço é exposto por meio de um nome público e endereço IP, e os computadores nos sites remotos podem acessá-lo dessa maneira.

A solução funciona muito bem para todos os tipos de certificados; no entanto, os controladores de domínio nos sites remotos não conseguem obter um certificado usando o modelo "Autenticação Kerberos" (que os DCs recentes tentam usar quando o registro automático está habilitado); o erro é um genérico "o servidor RPC está indisponível", mas acontece na própria CA , ficando logado nas requisições com falha.

Isso me intrigou por um tempo, até que decidi examinar o tráfego da rede; e eis que, parece que quando uma solicitação de certificado é feita usando o modelo "Autenticação Kerberos", a CA tenta se conectar novamente ao controlador de domínio que fez a solicitação . Isso não é possível na rede do cliente e parece ser a razão pela qual a solicitação falha.

Acho que a CA está tentando validar que o computador que está solicitando o certificado é na verdade um controlador de domínio; no entanto, não consegui encontrar nenhuma documentação para isso, e esse "retorno de chamada" parece contrário à lógica cliente/servidor das solicitações de certificado.

Esse comportamento está documentado em algum lugar?

Pode ser desligado?

O sistema operacional na CA é o Windows Server 2019.


Editar

Há quatro domínios na floresta do AD; a CA está no domínio raiz da floresta.
O comportamento é o mesmo para todos os DCs em todos os domínios: sempre que é feita uma solicitação de certificado "Autenticação Kerberos", seja manualmente ou via autoinscrição, a CA tenta entrar em contato com o DC solicitante nas portas 445 e 139 (estranhamente, há nenhum tráfego real de LDAP, Kerberos ou RPC); quando isso falha, a solicitação é negada com o erro "negado pelo módulo de política" e o código de status "o servidor RPC não está disponível".

Isso só acontece para certificados de "Autenticação Kerberos"; todos os outros certificados podem ser registrados com sucesso via CES, incluindo "Autenticação de controlador de domínio" e "Replicação de e-mail de diretório".

Eu também testei isso para DCs que podem realmente conversar com o CA: se o tráfego for bloqueado do DC para o CA, forçando a solicitação a usar o CES, mas não o contrário, as solicitações serão bem-sucedidas; se o tráfego for bloqueado da CA para o DC, a solicitação falhará.

domain-controller certificate certificate-authority ad-certificate-services
  • 2 2 respostas
  • 7780 Views

2 respostas

  • Voted
  1. Best Answer
    Crypt32
    2020-03-08T11:46:20+08:002020-03-08T11:46:20+08:00

    De acordo com a documentação, o comportamento que você está enfrentando é esperado, por design e não pode ser desativado. Kerberos Authenticationrequer uma conexão RPC de CA para DC. Quais são as opções para você:

    1. Habilite a comunicação RPC entre a autoridade de certificação e o controlador de domínio.
    2. Use Domain Contoller Authenticationo modelo de certificado em vez do Kerberos Authenticationmodelo. Domain Contoller Authenticationmodelo não requer conexão RPC de volta ao DC.

    Na verdade, eu não me lembrava de todos os detalhes e elogios para você, que você fez uma boa investigação e apontou sobre uma falha de retorno de chamada RPC, isso realmente reduziu a quantidade de motivos possíveis. Detalhes completos sobre por que isso acontece estão abaixo.


    TL;DR

    Parte 1

    Em primeiro lugar, sobre os modelos de certificado: ambos Domain Controller Authenticatione Kerberos Authenticationos modelos são usados ​​para fornecer suporte para LDAP S (LDAP sobre TLS) e autenticação mútua durante o logon do certificado/smar card.

    A diferença entre dois é como o sujeito é construído, ou o que está incluído nele. Domain Controller Authenticationinclui o FQDN do controlador de domínio somente na extensão SAN. Kerberos Authenticationadiciona mais dois nomes: nomes de domínio FDQN e NetBIOS. Além disso, Kerberos Authenticationadiciona um KDC AuthenticationEKU. A configuração do modelo padrão é definida em [MS-CRTD], Apêndice A . Para ser mais claro:

    • Domain Controller Authenticationnome do assunto tem 134217728 (0x8000000) combinação de sinalizador, que se traduz em apenas sinalizador:CT_FLAG_SUBJECT_ALT_REQUIRE_DNS

    • Kerberos Authenticationnome do assunto tem 138412032 (0x8400000) combinação de sinalizadores, que se traduz em dois sinalizadores: CT_FLAG_SUBJECT_ALT_REQUIRE_DNSe CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS.

    Os sinalizadores de nome do assunto são armazenados no msPKI-Certificate-Name-Flagatributo ( [MS-CRTD] §2.28 ).

    O problema em sua pergunta é causado pelo requisito na SAN de incluir nomes de FQDN e NetBIOS de domínio. Kerberos Authenticationtemplate é o único template padrão que usa CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNSflag.

    Parte 2

    A CA do Windows usa a especificação do protocolo [MS-WCCE] para processar solicitações e emitir certificados. Este protocolo especifica completamente o comportamento do cliente e uma pequena parte da interação e comportamento do Windows CA. [MS-WCCE] §3.2.2.1.3 define um comportamento especial para clientes que são controladores de domínio e preparam seus nomes para estarem prontos para conexão RPC, acrescentando "\\".

    Parte 3

    A CA do Windows processa o CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNSconforme especificado em [MS-WCCE] §3.2.2.6.2.1.4.5.9 .

    Se o CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNSsinalizador estiver definido, a CA DEVE:

    • A CA DEVE recuperar um identificador para a política de informações usando o método LsarOpenPolicy ( [MS-LSAD] seção 3.1.4.4.2 ), com o SystemNameparâmetro definido como o dNSHostNameatributo do objeto de computador do solicitante, todos os campos do ObjectAttributesconjunto para NULLe o DesiredAccessparâmetro definido como POLICY_VIEW_LOCAL_INFORMATION.
    • A CA DEVE obter as informações de domínio DNS do computador do solicitante usando o LsarQueryInformationPolicymétodo ( [MS-LSAD] seção 3.1.4.4.4 ), com o PolicyHandleparâmetro definido para o valor obtido na etapa anterior e o InformationClasparâmetro s definido como PolicyDnsDomainInformation.
    • A CA DEVE adicionar o valor do campo Namee DNSDomainNamenas informações de domínio DNS retornadas da etapa anterior, à extensão de nome alternativo do assunto do certificado emitido.

    Como você pode ver, LsarOpenPolicycall é de fato a chamada RPC e retorna um identificador para a conexão RPC em caso de sucesso. No seu caso, essa chamada falha e a CA não pode chamar LsarQueryInformationPolicy(que é chamada RPC novamente!) para obter os nomes necessários para inserir no certificado.

    Resultado final

    Pode haver um desejo de desativar o FQDN do domínio e o nome NetBIOS do domínio no Kerberos Authenticationmodelo, mas eu não recomendaria isso. Nem tentar adicionar KDC AuthenticationEKU a Domain Controller Authentication, porque primeiro depende estritamente da presença do domínio FQDN e NetBIOs que causam problemas em seu ambiente.

    • 5
  2. CryptoDan
    2020-03-12T14:13:34+08:002020-03-12T14:13:34+08:00

    Para contornar a chamada RPC de volta ao seu DC, você pode duplicar o modelo Kerberos e adicionar as SANs manualmente. Em seguida, ative a renovação automática.

    Aqui estão os passos -

    Configurar modelo:

    1. duplicar o modelo kerberos

    2. configure o nome do assunto dos novos modelos para 'fornecer na solicitação'

    3. dê permissões de leitura e registro do seu DC no novo modelo
    4. Você pode substituir os modelos mais antigos, se necessário
    5. publicar o modelo

    No seu WES:

    iisreset para atualizar a lista de modelos

    Inscreva o certificado:

    Em seu DC isolado, registre um certificado e adicione os nomes de domínio na extensão SAN (isso não fará a chamada RPC de volta da CA para o DC).

    (Se você não conseguir ver o modelo, limpe o cache WES local em C:\ProgramData\Microsoft\Windows\X509Enrollment)

    Habilite a renovação automática (via GPO):

    Configurações do Windows > Configurações de segurança > Políticas de chave pública > Cliente de serviços de certificados - Registro automático. Basta marcar apenas 'Renovar certificados expirados, atualizar certificados pendentes e remover certificados revogados'

    Testando a renovação automática:

    No novo modelo - clique com o botão direito e escolha 'Reinscrever todos os titulares de certificados'. Isso aumentará a versão principal do modelo e forçará a renovação do certificado no próximo ciclo de inscrição automática (uma vez em 8 horas).

    Se você não quiser esperar - então reinicie o WES, exclua a pasta local x509enrollment e execute 'certutil -pulse'

    Boa sorte

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve