É possível restringir o uso de um certificado raiz a um domínio

É possível restringir o uso de um certificado raiz a um domínio

Meu cliente usa um certificado autoassinado para que um aplicativo funcione. Para poder funcionar, tenho que instalar o certificado raiz que eles usaram para assinar o certificado.

É possível configurar um certificado raiz para que ele seja validado apenas em um domínio?

Responder1

Como um princípio básico:

Não, implícito na confiança no certificado CA do cliente está a confiança em cada certificado assinado por essa CA.

Não conheço nenhum aplicativo/biblioteca que tenha uma opção fácil que permita que você, como usuário final, selecione se confiará em seus clientes ou em qualquer outro certificado de 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 sobre CAs atualmente confiáveis, patrocinadas pelo governo, como umponto de atenção abertoe por exemplocromadatem verificações extras integradas para acessar sites do Google, e foi assim que o certificado *.google.com não autorizado e o comprometimento da CA Diginotar se tornaram públicos.

Mas mesmo que você não confie na CA, ainda poderá importar/confiar em um certificado de servidor específico assinado por essa CA, o que impedirá 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 PKI X.509v3 é oRestrições de nomeextensão, 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 ter se contido ao configurar sua infraestrutura PKI e incluir essa restrição de nome em seu certificado CA. Então você pode importar seu certificado CA diretamente e saber que ele só pode validar um intervalo limitado de nomes de domínio.

Responder2

@CryptoGuy teve uma resposta muito boa aqui, mas eu queria expandi-la.

Parafrasear:

Você pode restringir a CA de terceiros a certificados confiáveis ​​(daquela CA) emitidos para uma lista de nomes desejada. Mesmo que a CA de terceiros não tenha extensão de restrições de nome, é possível aplicá-las usando seu próprio servidor CA interno por meio de certificação cruzada. O truque é assinar uma CA de terceiros usando sua CA interna.

certificado SSL folha -> certificado cruzado -> seu certificado CA -> seu certificado raiz interno.

E aqui está como você faz isso funcionar (usando CA de linha de comando OpenSSL)

Crie uma CA simples

openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"

Crie uma CA intermediária…

Crie uma solicitação de CA intermediária, com restrições de nome.

openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg

Com isso no ossl_domain_com.cfgarquivo:

[ req ]
prompt=no
distinguished_name=req_distinguished_name
req_extensions=domain_ca

[ req_distinguished_name ]
CN=somedomain.com trust CA

[ domain_ca ]
basicConstraints=critical,CA:true,pathlen:1
nameConstraints=critical,permitted;DNS:.somedomain.com

Em seguida, assine essa CA de domínio intermediário com sua CA.

openssl x509 -req -in domain-ca.req -CA root-ca.crt -CAkey root-ca.key -sha256 -set_serial 1 -out domain-ca.crt -extensions domain_ca -extfile ossl_domain_com.cfg

…ou assine novamente com sua CA raiz

Se você ignorou a criação do intermediário, use sua CA raiz para assinar. Assine novamente a CA do domínio original sob sua autoridade, usando o certificado deles. Você pode adicionar as extensões CA aqui.

openssl x509 -in third_party_ca.crt -CA domain-ca.crt -CAkey domain-ca.key -set_serial 47 -sha256 -extensions domain_ca -extfile ossl_domain_com.cfg -out domain-cross-ca.crt

Pode ser necessário usar openssl x509 -x509toreqpara criar uma solicitação, que você assinaria exatamente da mesma forma que o intermediário acima.

Agora, adicione sua CA raiz, CA intermediária e CA cruzada de domínio ao banco de dados confiável do seu navegador.

informação relacionada