@CryptoGuy ha avuto una risposta abbastanza buona qui, ma volevo ampliarla.
Per parafrasare:
È possibile limitare l'autorità di certificazione di terze parti a fidarsi dei certificati (da tale autorità di certificazione) rilasciati a un elenco di nomi desiderato. Anche se la CA di terze parti non ha l'estensione dei vincoli di nome, è possibile applicarli utilizzando il proprio server CA interno tramite certificazione incrociata. Il trucco è che firmi una CA di terze parti usando la tua CA interna.
certificato SSL foglia -> certificato incrociato -> il certificato CA -> il certificato radice interno.
Ed ecco come farlo funzionare (usando la CA della riga di comando OpenSSL)
Crea una CA semplice
openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"
È possibile saltare la creazione di una CA intermedia
Creare una richiesta CA intermedia, con vincoli di nome.
openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg
Con questo nel ossl_domain_com.cfg
file:
[ 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
Quindi, firmare quella CA del dominio intermedio con la propria 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
Se hai saltato la creazione dell'intermedio, usa la tua CA principale per firmare
Ora firma nuovamente l'autorità di certificazione del dominio originale sotto la tua autorità, utilizzando il loro certificato. È possibile aggiungere le estensioni CA qui.
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
Potrebbe essere necessario utilizzare l' -x509-to-req
argomento per creare una richiesta, che firmeresti esattamente allo stesso modo dell'intermedio sopra.
Ora aggiungi la tua CA principale, la CA intermedia e il dominio incrociato al database di fiducia del tuo browser.