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 que valide apenas para um domínio?
certificate
restrictions
MichaelD
fonte
fonte
Respostas:
Como um princípio básico:
Não , implícita na confiança no certificado de CA do cliente está a confiança em todos os certificados assinados por essa CA.
Não conheço aplicativos / bibliotecas que tenham uma opção fácil que permita ao 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 mais nada.
A Mozilla tem uma preocupação semelhante com as CAs patrocinadas pelo governo atualmente confiáveis como um ponto de atenção aberta e, por exemplo, o Chrome possui verificações extras para acessar sites do Google, e foi assim que o certificado invasor * .google.com e o comprometimento da CA Diginotar se tornaram públicos .
Porém, mesmo se você não confiar na CA, ainda poderá importar / confiar em um certificado de servidor específico assinado por essa CA, o que impedirá avisos de SSL para os nomes de host nesse certificado. Isso deve fazer seu aplicativo funcionar 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 restringiu ao configurar sua infraestrutura de PKI e incluiu essa restrição de nome no certificado de CA. Em seguida, você pode importar o certificado da CA diretamente e saber que ele só pode validar um intervalo limitado de nomes de domínio.
fonte
example.com
ou*.ad.example.com
são válidos. Sua CA interna também pode emitir certificados para*.example.bank
permitir um bom ataque intermediário e espionar suas credenciais bancárias online.A @CryptoGuy teve uma resposta muito boa aqui, mas eu queria expandir.
Parafrasear:
E aqui está como você faz isso funcionar (usando a linha de comando CA do OpenSSL)
Crie uma CA simples
Você pode pular a criação de uma CA intermediária
Crie uma solicitação CA intermediária, com restrições de nome.
Com isso no
ossl_domain_com.cfg
arquivo:Em seguida, assine a autoridade de certificação de domínio intermediário com sua autoridade de certificação.
Se você deixou de criar o intermediário, use sua CA raiz para assinar
Agora, assine novamente a CA do domínio original sob sua autoridade, usando o certificado. Você pode adicionar as extensões da CA aqui.
Pode ser necessário usar o
-x509-to-req
argumento para criar uma solicitação, assinada exatamente da mesma maneira que o intermediário acima.Agora, adicione sua CA raiz, CA intermediária e o domínio cruzado ao banco de dados confiável do seu navegador.
fonte
basicConstraints
linha no arquivo de configuração parece fazer com que a extensão de restrições seja incluída no certificado duas vezes, o que faz com que o Firefox rejeite o certificado com uma mensagem de erro enigmática. Eu acho que pode ser removido com segurança.error with certificate to be certified - should be self signed
. O que significa e como resolver isso? pastebin.ubuntu.com/p/QHhpQh2N6J