@CryptoGuy miał tutaj całkiem dobrą odpowiedź, ale chciałem ją rozwinąć.
Parafrazować:
Możesz ograniczyć zewnętrzny urząd certyfikacji do zaufanych certyfikatów (z tego urzędu certyfikacji) wydanych na dowolną listę nazw. Nawet jeśli urząd certyfikacji innej firmy nie ma rozszerzenia Ograniczenia nazwy, można je zastosować, korzystając z własnego wewnętrznego serwera urzędu certyfikacji poprzez certyfikację krzyżową. Sztuczka polega na tym, że podpisujesz zewnętrzny urząd certyfikacji za pomocą wewnętrznego urzędu certyfikacji.
leaf SSL cert -> certyfikat krzyżowy -> twój certyfikat CA -> twój wewnętrzny certyfikat główny.
A oto, jak to działa (za pomocą wiersza polecenia OpenSSL CA)
Utwórz prosty urząd certyfikacji
openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"
Możesz pominąć tworzenie pośredniego urzędu certyfikacji
Utwórz żądanie pośredniego urzędu certyfikacji z ograniczeniami nazw.
openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg
Z tym w ossl_domain_com.cfg
pliku:
[ 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
Następnie podpisz ten urząd certyfikacji domeny pośredniej za pomocą swojego urzędu certyfikacji.
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
Jeśli pominiesz tworzenie pośrednika, użyj głównego urzędu certyfikacji do podpisania
Teraz ponownie podpisz oryginalny urząd certyfikacji domeny pod swoim urzędem, używając ich certyfikatu. Możesz dodać rozszerzenia CA tutaj.
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
Może być konieczne użycie -x509-to-req
argumentu do utworzenia żądania, które podpisałbyś dokładnie w taki sam sposób, jak powyższy półprodukt.
Teraz dodaj główny urząd certyfikacji, pośredni urząd certyfikacji i domenę cross-ca do bazy danych zaufania przeglądarki.