Devo usar CAs raiz separadas para certificados de servidores internos, certificados de clientes externos e certificados HTTPS?

Devo usar CAs raiz separadas para certificados de servidores internos, certificados de clientes externos e certificados HTTPS?

Devo ter 3 CAs raiz, 1 CA raiz + 3 intermediários ou alguma outra configuração de PKI para a seguinte situação?

Tenho três casos de uso:

  1. Expor uma API web sobre HTTPS (certificados de servidor)
  2. Permitir que os clientes se autentiquem com um certificado de cliente em vez de nome de usuário/senha (certificados de cliente externos)
  3. Validar servidores internos como clientes (certificados de clientes internos)

Cada par de chaves será usado para exatamente um dos casos de uso.

Suponhamos que não preciso de uma CA de terceiros e, em vez disso, estou trabalhando com uma PKI personalizada em um sistema fechado. Posso ver duas maneiras principais de apoiar isso:

  1. 1 CA raiz com 3 CAs intermediárias (uma intermediária para cada caso)
  2. 3 CAs raiz (uma raiz para cada caso de uso)

Tentei iniciar o número 1, mas descobri que, para testar openssl s_clientcertificados de cliente em um servidor HTTPS node.js, preciso validar do intermediário para a raiz, não apenas do intermediário. O que significa que os certificados de cliente entre os casos de uso 2 e 3 podem ser trocados, pois a raiz é a âncora de confiança. Procurei, mas não consigo encontrar uma maneira de tornar a CA intermediária a âncora de confiança para o servidor HTTPS node.js.

Então, estou entendendo mal alguma coisa, preciso passar para a implementação nº 2 ou uma mistura de coisas.

Responder1

Os certificados X.509 podem fornecer confidencialidade e autenticação. Ou seja, podem ser utilizados na criptografia de um link, e opcionalmente para autenticar o usuário ou servidor.

Eles não fornecem autorização. Em vez disso, cabe ao aplicativo determinar se a entidade que se autenticou com um certificado X.509 tem permissão para acessar os recursos.

Isso significa que (1) acima está bom. Use uma raiz e certifique-se de que a autorização seja realizada por outro meio.

No entanto, se você insistir que os certificados X.509 também forneçam autorização, você precisará:

  • Confie nas políticas de certificados para garantir que os aplicativos confiem apenas em determinados certificados - boa sorte com isso, pois você provavelmente precisará codificar seus próprios aplicativos que verificam as políticas;
  • Use um certificado raiz diferente para cada aplicação; como em (2) acima.

informação relacionada