Por que os clientes (que não são navegadores) às vezes não confiam em certificados válidos e assinados?

Por que os clientes (que não são navegadores) às vezes não confiam em certificados válidos e assinados?

Esta é uma pergunta um tanto canônica... Espero que esteja tudo bem.

No meu trabalho, costumo solucionar situações em que um cliente em execução em um servidor Linux (geralmente um aplicativo Java) não confia em um certificado válido e assinado - um certificado confiável para os navegadores. Nossa solução rápida usual é adicionar o certificado ao armazenamento confiável java cacerts, mas me incomoda por que isso é necessário.

No meu entendimento existem duas possibilidades:

  1. O lado do servidor não está enviando a cadeia completa (certificado da entidade final + certificados intermediários), na ordem correta, E o cliente não confia nos certificados intermediários (talvez porque sejam muito antigos).
  2. O armazenamento confiável do cliente não contém o certificado raiz para usar como âncora confiável (talvez porque seja muito antigo).

Isso é preciso? Nesse caso, parece que possibilidades alternativas para forçar a confiança do certificado da entidade final são:

  • Configure o aplicativo do servidor para enviar a cadeia completa.
  • Atualize o cliente (por exemplo, java) para uma versão mais recente. No meu caso, geralmente a versão principal do Java que pode ser usada é limitada pelos pré-requisitos de software, mas talvez cada versão secundária contenha um armazenamento confiável atualizado?

Quaisquer pensamentos de esclarecimento são apreciados.

informação relacionada