Limitando a potência de um certificado confiável

1

Estou criando um site com minha própria CA e assinando certificados de cliente com ele. Os clientes precisarão adicionar minha CA como uma fonte confiável, mas, por motivos de segurança, não quero que eles confiem cegamente em tudo o que poderia ser assinado com a chave da CA, portanto, quero impor limitações para criar a confiança dos clientes. Por isso, quero limitar as habilidades de CA apenas para assinar certificados de cliente e ativar https access. Não tenho certeza de todas as restrições que devo impor na criação do certificado.

A melhor maneira de fazer isso parece ser restrições de nome e usar uma lista branca para limitar o uso, que é aparentemente respeitado hoje em dia . Então, eu tenho que usar um dns (digamos xyz.com), então a assinatura da CA não seria aceita para google.com f.ex, e colocar isso também em cada SAN dos certificados do cliente, então os certificados do cliente são considerado válido e não rejeitado. Aparentemente, não é assim que funciona. Eu tentei isso, mas não consegui fazer isso funcionar corretamente. Além disso, estou recebendo um aviso do Windows ... Talvez seja porque todos possíveis tipos de restrição de nome devem estar presentes ?

Então, minhas perguntas são:

  1. Como devo configurar o certificado da CA? Quais restrições devo aplicar no certificado da autoridade de certificação para limitar sua capacidade de uso indevido? Se envolver restrições de nome, por que meu exemplo na imagem não está funcionando?
  2. Existe algo extra que deve ser feito / considerado nos certificados do cliente, como adicionar um SAN extra?

EDITAR

Idealmente, deve haver algo em meu certificado de autoridade de certificação que o force a assinar somente certificados de cliente e fazer a autenticação do servidor https. Não vejo como fazer essa limitação, acho que não é possível.

Para o uso de restrições de Nome, usei xyz.com como permitido e achei que somente certificados assinados por minha CA com SAN xyz.com e realmente usados com esse nome seriam aceitos (caso contrário, eu poderia criar um certificado com SAN xyz.com e google.com e pode funcionar ao acessar google.com ). Por isso, usei um certificado de cliente assinado pela minha CA sem SAN xyz.com e fui aceito. Não tenho certeza se as restrições de nome também se aplicam neste caso.

    
por user1156544 05.07.2017 / 21:26

1 resposta

1

Existem algumas restrições que você pode definir em um certificado de emissão, o que limita quais certificados ele pode assinar.

Restrições de nome

Você já mencionou isso. Eles podem ser usados para limitar quais nomes podem ser usados nos vários tipos nome alternativo do certificado final (lista branca usando allowedSubtrees ) ou não podem ser usados (lista negra usando < em> excludedSubtrees ). Na prática, o primeiro é provavelmente o que você quer. Um caso de uso típico seria permitir apenas endereços de e-mail e dnsNames que terminem com um dos nomes de domínio de suas empresas.

Esta página dá mais detalhes.

Restrição de política

Esta extensão pode especificar, sob qual política um certificado final pode ser emitido. Como isso não é algo que você pode realmente impor tecnicamente (além de comparar OIDs), isso não será útil para você

Uso de chave estendida

Este não é um uso padrão, mas como a captura de tela sugere que você está vivendo em um mundo da Microsoft, pode ser útil para você. A Microsoft inventou a chamada Política de aplicativos que permite um certificado de emissão para limitar qual chave estendida usa um certificado final emitido. Ao definir essa política como tlsClientAuthentication, você pode garantir que apenas esses certificados de cliente sejam emitidos e não haja certificados de servidor TLS ou certificados de assinatura de código. Fora do cosmos da Microsoft, essa extensão provavelmente será ignorada.

Uma última palavra: verificar essas restrições é muito difícil, a maioria dos softwares nem se incomodam em tentar, e não há muitos produtos que realmente acertam.

    
por 06.07.2017 / 10:49