@CryptoGuy tenía una respuesta bastante buena aquí, pero quería ampliarla.
Parafrasear:
Puede restringir la CA de terceros para confiar en los certificados (de esa CA) emitidos a la 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 es que firmas CA de terceros usando tu CA interna.
hoja SSL cert -> certificado cruzado -> su certificado de CA -> su certificado raíz interno.
Y así es como haces que funcione (usando la línea de comando de OpenSSL CA)
Crea una CA simple
openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"
Puede omitir la creación de 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.cfg
archivo:
[ 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 ese dominio intermedio CA 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
Si omitió la creación del intermedio, use su CA raíz para firmar
Ahora vuelva a firmar la CA del dominio original bajo su autoridad, utilizando su certificado. Puede agregar las extensiones de 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 necesite usar el -x509-to-req
argumento para crear una solicitud, que firmaría exactamente de la misma manera que el intermedio anterior.
Ahora, agregue su CA raíz, CA intermedia y el dominio-cross-ca a la base de datos de confianza de su navegador.