¿Es posible restringir el uso de un certificado raíz a un dominio?

¿Es posible restringir el uso de un certificado raíz a un dominio?

Mi cliente utiliza un certificado autofirmado para que funcione una aplicación. Para poder trabajar tengo que instalar el certificado raíz que usaron para firmar el certificado.

¿Es posible configurar un certificado raíz para que solo se valide en un dominio?

Respuesta1

Como una regla de oro:

No, lo que implica confiar en el certificado de CA del cliente es la confianza en cada certificado firmado por esa CA.

No conozco ninguna aplicación/biblioteca que tenga una opción sencilla que le permita a usted, como usuario final, seleccionar que confiará en sus clientes o en cualquier otro certificado de CA solo para ciertos (sub)dominios, es decir, solo para archivos *. example.com y *.example.org y nada más.

Mozilla tiene una preocupación similar acerca de las CA actualmente confiables patrocinadas por el gobierno comopunto de atención abiertoy por ejemploCromotiene controles adicionales incorporados para acceder a los sitios de Google, que fue la forma en que el certificado falso *.google.com y el compromiso de Diginotar CA se hicieron públicos.

Pero incluso si no confía en la CA, aún puede importar/confiar en un certificado de servidor específico firmado por esa CA, lo que evitará advertencias SSL para los nombres de host en ese certificado. Eso debería hacer que su aplicación funcione sin errores ni quejas.

Excepciones:

Una opción muy infrautilizada del estándar PKI X.509v3 es laRestricciones de nombreextensión, que permite que un certificado de CA contenga listas blancas y negras de patrones de nombres de dominio para los que está autorizado a emitir certificados.

Es posible que tenga suerte y su cliente se haya restringido cuando configuró su infraestructura PKI e incluyó esa restricción de nombre en su certificado de CA. Luego podrá importar su certificado de CA directamente y saber que solo puede validar un rango limitado de nombres de dominio.

Respuesta2

@CryptoGuy tuvo una respuesta bastante buena aquí, pero quería ampliarla.

Parafrasear:

Puede restringir la CA de terceros para que confíe en los certificados (de esa CA) emitidos a una lista de nombres que desee. Incluso si la CA de terceros no tiene la extensión de restricciones de nombre, es posible aplicarlas utilizando su propio servidor de CA interno mediante certificación cruzada. El truco consiste en firmar una CA de terceros utilizando su CA interna.

Certificado SSL de hoja -> certificado cruzado -> su certificado de CA -> su certificado raíz interno.

Y así es como se hace que funcione (usando la línea de comando CA de OpenSSL)

Crear una CA sencilla

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

O cree una CA intermedia...

Cree una solicitud de CA intermedia, con restricciones de nombre.

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

Con esto en el ossl_domain_com.cfgarchivo:

[ 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

Luego, firme esa CA de dominio intermedio con su 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

…o vuelva a firmar con su CA raíz

Si omitió la creación del intermediario, utilice su CA raíz para firmar. Vuelva a firmar la CA del dominio original bajo su autoridad, utilizando su certificado. Puede agregar las extensiones CA aquí.

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

Es posible que deba utilizarlo openssl x509 -x509toreqpara crear una solicitud, que firmaría exactamente de la misma manera que el intermediario anterior.

Ahora, agregue su CA raíz, CA intermedia y CA cruzada de dominio a la base de datos de confianza de su navegador.

información relacionada