(Wysłano do ServerFault zamiast StackOverflow, ponieważ uważam, że dotyczy to bardziej konfiguracji systemu operacyjnego niż kodu programowania).
Obecnie jestem odpowiedzialny za utrzymanie systemu, który łączy się z zewnętrzną usługą internetową. Ta usługa wymaga certyfikatów uwierzytelniania klienta, co jest uczciwe, ale sama usługa jest zabezpieczona certyfikatem z podpisem własnym utworzonym przez samodzielnie utworzony certyfikat głównego urzędu certyfikacji - ten sam katalog główny, który tworzy certyfikaty uwierzytelniania klienta.
Wystarczy tylko dodać bieżący certyfikat usługi do listy zaufanych i zignorować samodzielnie utworzony certyfikat urzędu, niestety certyfikat usługi zmienia się regularnie, więc certyfikat zaufania musi być zaufany, aby aplikacja nie uległa awarii, gdy certyfikat usługi został odnowiony.
Jednak nie (osobiście) ufam certyfikatowi CA na podstawie mojego doświadczenia z firmą prowadzącą serwis internetowy - nie zdziwiłbym się, gdyby wyciekł do sieci - i, co niepokojące, certyfikat CA nie ma żadnych ograniczeń dotyczących używania klucza it (chociaż zewnętrzne ataki MITM są możliwe, choć zdalne, bardziej martwię się o wyciek certyfikatu używanego na przykład do podpisywania kodu).
Czy mogę powiedzieć mojemu komputerowi (obecnie skrzynce serwerowej, ale w przyszłości zwykłym klientom klienckim), aby ufał urzędowi certyfikacji, ale tylko dla określonego zestawu zastosowań klucza i niewielkiego zestawu możliwych nazw podmiotów (nazw domen) )?
Serwer to obecnie system Windows Server 2012 R2, ale może on działać na komputerze z systemem Linux - choć wszystkie komputery stacjonarne to urządzenia z systemem Windows.
Odpowiedzi:
Tak to mozliwe. W przypadku systemu Windows istnieje funkcja o nazwie Cross-Certification lub Qualified Subordination.
Chodzi o to, że podpisujesz w swoim środowisku certyfikat CA wydany przez stronę trzecią. W rezultacie zdalny certyfikat SSL zostaje połączony z twoim własnym certyfikatem głównego urzędu certyfikacji. Aby uchronić się przed ewentualnymi nieuczciwymi certyfikatami,
Name Constraints
wdrażasz rozszerzenie certyfikatu, w którym określasz listę dopuszczalnych nazw. Jeśli CA wystawi certyfikat innej firmy (nieokreślony wyraźnie w rozszerzeniu Ograniczenia nazwy), zostanie on automatycznie odrzucony przez dostawcę CryptoAPI.Oprócz ograniczeń nazw można opisać ograniczenie Ulepszonych zastosowań klucza, definiując
Application Policies
rozszerzenie certyfikatu w certyfikacie krzyżowym. Twój dostawca zaufania pomyślnie zweryfikuje tylko zastosowania określone wApplication Policies
rozszerzeniu.Więcej informacji: Planowanie i wdrażanie certyfikacji krzyżowej i podporządkowania kwalifikowanego za pomocą systemu Windows Server 2003
ps, chociaż artykuł jest napisany przeciwko Windows Server 2003, artykuł nadal dotyczy najnowszej wersji systemu Windows Server.
źródło