Meu cliente usa um certificado autoassinado para que um aplicativo funcione. Para poder trabalhar, tenho que instalar o certificado raiz que eles usaram para assinar o certificado.
É possível configurar um certificado raiz para validar apenas em um domínio?
Como um princípio básico:
Não , implícito em confiar no certificado CA do cliente está a confiança em todos os certificados assinados por esse CA.
Não conheço nenhum aplicativo/biblioteca que tenha uma opção fácil que permita a você, como usuário final, selecionar que confiará em seus clientes ou em qualquer outro certificado CA apenas para determinados (sub) domínios, ou seja, apenas para *. example.com e *.example.org e nada mais.
A Mozilla tem uma preocupação semelhante com as CAs atualmente confiáveis patrocinadas pelo governo como um ponto de atenção aberto e, por exemplo , o Chrome tem verificações extras incorporadas para acessar sites do Google, que foi como o certificado *.google.com não autorizado e o comprometimento da Diginotar CA se tornaram públicos .
Mas mesmo que você não confie na CA, você ainda pode importar/confiar em um certificado de servidor específico assinado por essa CA, o que evitará avisos SSL para os nomes de host nesse certificado. Isso deve fazer com que seu aplicativo funcione sem erros ou reclamações.
Exceções:
Uma opção muito subutilizada do padrão X.509v3 PKI é a extensão Name Constraints , que permite que um certificado CA contenha listas brancas e negras de padrões de nomes de domínio para os quais está autorizado a emitir certificados.
Você pode ter sorte e seu cliente se conteve ao configurar sua infraestrutura de PKI e incluir essa restrição de nome em seu certificado de CA. Em seguida, você pode importar o certificado CA diretamente e saber que ele só pode validar um intervalo limitado de nomes de domínio.
@CryptoGuy tinha uma resposta muito boa aqui, mas eu queria expandi-la.
Parafrasear:
E aqui está como você faz isso funcionar (usando a linha de comando OpenSSL CA)
Crie uma CA simples
Você pode pular a criação de uma CA intermediária
Crie uma solicitação de CA intermediária, com restrições de nome.
Com isso no
ossl_domain_com.cfg
arquivo:Em seguida, assine essa CA de domínio intermediário com sua CA.
Se você pulou a criação do intermediário, use sua CA raiz para assinar
Agora assine novamente a CA do domínio original sob sua autoridade, usando o certificado deles. Você pode adicionar as extensões CA aqui.
Pode ser necessário usar
openssl x509 -x509toreq
para criar uma solicitação, que você assinaria exatamente da mesma maneira que o intermediário acima.Agora, adicione sua CA raiz, CA intermediária e a CA cruzada de domínio ao banco de dados de confiança do seu navegador.