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 / 1140921
Accepted
Grant Curell
Grant Curell
Asked: 2023-08-07 09:22:24 +0800 CST2023-08-07 09:22:24 +0800 CST 2023-08-07 09:22:24 +0800 CST

É possível fazer com que um navegador apresente um certificado do lado do cliente, mesmo que o certificado do cliente não seja assinado pela mesma CA que o certificado do servidor?

  • 772

Estou em um cenário estranho onde tenho um servidor com back-end NodeJS e front-end ReactJS que mantém registros onde o cliente deseja usar certificados de usuário para identificar quem visita este site interno. O problema é que eles têm uma rede muito grande, com PKI complicado, e o certificado público que recebi para atribuir ao site não corresponde necessariamente a todos os clientes que podem visitá-lo.

Eu tenho nginx na frente com o ssl_verify_client optional_no_ca;conjunto, mas notei que os navegadores só darão aos usuários a opção de selecionar seu certificado de cliente se tiverem um certificado devidamente assinado pela mesma CA da chave pública apresentada pelo nginx.

Meu entendimento é que, durante a solicitação do certificado, o servidor pode especificar quais CAs são aceitáveis. Parece que o nginx pode estar fazendo isso, mas não tenho certeza se é esse o caso. Meu plano é começar a dissecar com o wireshark amanhã. Existe uma maneira conhecida de fazer meu site solicitar aos navegadores que sempre solicitem aos usuários um certificado de cliente? Talvez eu tenha entendido mal alguma coisa ao longo do caminho?

nginx
  • 1 1 respostas
  • 612 Views

1 respostas

  • Voted
  1. Best Answer
    anx
    2023-08-07T10:21:33+08:002023-08-07T10:21:33+08:00

    Simples: coloque na configuração do nginx quais certificados de autoridade você deseja que o nginx solicite . O Nginx enviará e verificará aqueles dependendo da sua ssl_verify_clientconfiguração. É isso ‡ .

    ssl_client_certificate = /path/to/concatenated-x509.pem
    # contents of /path/to/concatenated-x509.pem may contains, possibly many:
    # -----BEGIN CERTIFICATE---- much foo bar -----END CERTIFICATE-----
    

    As duas direções de autenticação por meio de certificados não estão relacionadas. Seu servidor apresenta um certificado e não há nenhuma regra que diga que não pode haver sobreposição, mas, caso contrário, você pode solicitar qualquer autoridade que desejar. O Nginx nem envia a chave pública dos certificados que você configura para serem "enviados" usando o arquivo ssl_client_certificate. Ele envia uma lista de algoritmos de assinatura aceitáveis ​​e uma lista dos conjuntos de nomes distintos desses certificados: algo como /C=DK/O=ACME Inc./CN=ACME CA3.

    Você pode ter problemas de interoperabilidade se tiver que oferecer suporte a clientes mais antigos (pré-TLSv1.3) juntamente com algoritmos de assinatura mista (mistura entre EC e RSA) e se sua lista de nomes distintos se tornar excessivamente grande. Experimente o que funciona, especificamente usando o software para o qual você precisa de suporte, e certifique-se de que as mensagens de erro sejam autoexplicativas ou devidamente documentadas para quaisquer clientes ou parceiros de negócios que possam encontrá-las.


    ‡) Isso é tudo para obter um cliente totalmente compatível com TLSv1.3 para apresentar um certificado assinado. Você não terminou, então. Por favor, tenha muito pouca confiança em assumir que tudo assinado por qualquer uma das CAs não gerenciadas por você é o usuário autorizado que o certificado sugere e garanta uma validação muito rigorosa em seu aplicativo por trás do proxy nginx que realmente lida com aqueles apresentados opcionalmente , certificados possivelmente inúteis/irrelevantes .

    • 5

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