@CryptoGuy avait une assez bonne réponse ici, mais je voulais développer cela.
Paraphraser:
Vous pouvez restreindre l'autorité de certification tierce aux certificats de confiance (de cette autorité de certification) émis pour la liste de noms que vous souhaitez. Même si une autorité de certification tierce n'a pas d'extension de contrainte de nom, il est possible de les appliquer en utilisant votre propre serveur d'autorité de certification interne via la certification croisée. L'astuce consiste à signer une autorité de certification tierce en utilisant votre autorité de certification interne.
certificat SSL leaf -> certificat croisé -> votre certificat CA -> votre certificat racine interne.
Et voici comment cela fonctionne (en utilisant la ligne de commande OpenSSL CA)
Créer une autorité de certification simple
openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"
Vous pouvez ignorer la création d'une autorité de certification intermédiaire
Créez une demande CA intermédiaire, avec des contraintes de nom.
openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg
Avec ceci dans le ossl_domain_com.cfg
fichier:
[ 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
Ensuite, signez cette autorité de certification de domaine intermédiaire avec votre autorité de certification.
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 vous avez ignoré la création de l'intermédiaire, utilisez votre autorité de certification racine pour signer
Maintenant, signez à nouveau l'autorité de certification du domaine d'origine sous votre autorité, à l'aide de leur certificat. Vous pouvez ajouter les extensions CA ici.
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
Vous devrez peut-être utiliser l' -x509-to-req
argument pour créer une demande, que vous signeriez exactement de la même manière que l'intermédiaire ci-dessus.
Maintenant, ajoutez votre autorité de certification racine, votre autorité de certification intermédiaire et le domaine-cross-ca à la base de données de confiance de votre navigateur.