Jak zachować poufność klucza ssl dla naszej witryny?

12

Chcę zachować poufność naszego klucza SSL do naszej witryny. Jest przechowywany na 2 dyskach USB, jednym w sejfie i jednym, który przechowuję. A potem jestem jedynym, który stosuje go do serwera WWW, aby był całkowicie bezpieczny.

Z wyjątkiem...

Przynajmniej w IIS możesz wyeksportować klucz. Tak więc każdy, kto jest administratorem, może otrzymać kopię klucza. Czy jest na to jakiś sposób? Czy z definicji wszyscy administratorzy mają pełny dostęp do wszystkich kluczy?

Aktualizacja: Mam sysadminów, którym w pełni ufam. Doprowadziło to do tego, że jeden z nich zrezygnował (mieli godzinę dojazdy do naszej firmy, 5 minut do nowej). Chociaż ufam tej osobie, podobnie jak wyłączamy jej konto Active Directory, gdy ktoś odchodzi, pomyślałem, że powinniśmy mieć sposób, aby upewnić się, że nie zachowają możliwości korzystania z naszego SSL.

A najłatwiejsze było to, że jestem jedynym, który to ma. Nasz certyfikat wygasa w styczniu, więc był to czas, aby zmienić praktykę, jeśli moglibyśmy. Na podstawie odpowiedzi wygląda na to, że nie możemy.

Prowadzi to do nowego pytania - kiedy ktoś, kto ma dostęp do certyfikatu, odchodzi, czy standardową praktyką jest zdobycie nowego certyfikatu i cofnięcie istniejącego. A jeśli osoba, która odeszła, jest godna zaufania, to czy kontynuujemy posiadanie certyfikatu, który mamy?

David Thielen
źródło
5
Nawet jeśli serwer, którego używasz, nie pozwolił ci go wyeksportować, nadal musi być w pamięci i dlatego można go rozpakować. Jedyną opcją, jaką widzę, jest użycie sprzętowego modułu kryptograficznego, takiego jak karta inteligentna to trzy tylko jeden z kluczem, ale każdy, kto ma fizyczny dostęp do maszyny, może go ukraść. Nadal możesz go odwołać, jeśli zostanie skradziony.
user2313067,
27
Jeśli nie możesz ufać swoim administratorom, masz problem z HR.
Michael Hampton
5
Dlaczego w ogóle skopiowałeś klucz na te nośniki USB? Tajny klucz używany z SSL nie musi znajdować się w innych miejscach niż serwer, na którym jest używany. (Może oczywiście znajdować się w kopiach zapasowych serwera, ale tworzenie kopii zapasowej tego klucza jest mniej ważne niż w przypadku innych danych na serwerze, ponieważ zawsze możesz wygenerować nowy tajny klucz i podpisać go tak, jak w przypadku stary.)
kasperd
Nie jestem ekspertem w tej dziedzinie, ale czy nie istnieją sprzętowe moduły szyfrujące, które zawierają klucz, który pozostaje w nich i tylko żądania podpisania przychodzą i wychodzą podpisy? Rozwiązaniem może być wlutowanie lub przyklejenie jednego do serwera.
matega

Odpowiedzi:

26

Osoba z administracyjnym (lub często nawet fizycznym) dostępem do serwera będzie mogła wyodrębnić klucz prywatny. Czy to poprzez eksport, wąchanie pamięci lub inne podobne oszustwa.

Administratorzy mają dostęp do kluczy prywatnych serwerów internetowych. Zaakceptuj to jako fakt i obejdź to. Jeśli twoi administratorzy nie są godni zaufania, możesz potrzebować lepszych administratorów lub przynajmniej mniej administratorów z dostępem do serwerów sieciowych. Jeśli chodzi o paranoję bezpieczeństwa zarządzania, może istnieć głębszy problem dotyczący ich zaufania do sysadmin.

Nie oznacza to, że każdy powinien mieć dostęp do klucza prywatnego. Przed udzieleniem dostępu zawsze powinna istnieć potrzeba dostępu. Mając to na uwadze, czy zamierzasz podjąć ekstremalne środki, aby upewnić się, że sysadmin z pełną kontrolą strony internetowej nie może wyeksportować klucza prywatnego, ale nadal może manipulować samą stroną internetową na wiele niemożliwych do wykrycia sposobów? Wróciliśmy do zaufania i myślę, że to jest sedno problemu, który należy rozwiązać.

Hippy
źródło
2
+1 dla „Twoi administratorzy mają dostęp do kluczy prywatnych serwerów internetowych. Zaakceptuj to jako fakt i obejmij to”. Pytania dotyczące efektu „Jak uniemożliwić osobom z uprawnieniami administratora wykonywanie X?” wskaż mi głębszy problem. Albo zbyt nieufny, albo zbyt swobodny w przyznawaniu uprawnień administratora.
Brandon,
2
Zaktualizowałem, dlaczego zapytałem. Z administratorami nie ma problemu, to chęć postępowania zgodnie z najlepszymi praktykami.
David Thielen,
11

Podczas importowania klucza możesz zaznaczyć go jako nieeksportowalny. Zapobiegnie to użyciu IIS lub certyfikatu MMC do jego wyeksportowania. Przynajmniej czyni to trochę trudniejszym.

Jeśli jednak mają konto administratora na komputerze lub fizyczny dostęp do niego - nadal będą mogli uzyskać klucz w inny sposób.

Dotacja
źródło
1
To naprawdę nie jest o wiele trudniejsze. isecpartners.com/tools/application-security/jailbreak.aspx
Greg Askew
0

Tutaj może pomóc „pośredni urząd certyfikacji”.

„Główny urząd certyfikacji” w tym przykładzie poniżej jest własnością firmy SSL, a nie ciebie.

Nie masz bezpośredniej kontroli nad kluczami utworzonymi przez główny urząd certyfikacji, więc jeśli klucz podpisany przez główny urząd certyfikacji zostanie naruszony, musisz je przejrzeć, aby go unieważnić.

Ale:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key for site

Jeśli umieścisz inny urząd certyfikacji pośrodku i sprawisz, że kupiony certyfikat SSL podpisze własny certyfikat urzędu certyfikacji zamiast bezpośrednio podpisywać certyfikat serwera, możesz zachować kontrolę nad certyfikatami serwera poniżej i wydawać certyfikaty unieważnienia lub zrobić cokolwiek innego, jeśli sprawy poniżej nie zostaną naruszone .

Trzymasz prywatny klucz pośredniego urzędu certyfikacji dla siebie, a administratorzy nie muszą go widzieć.

Możesz także to zrobić:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key 1 for site
   +-Server Key 2 for site 
   +-Server Key 3 for site

Możesz przygotować się na kompromis i wygenerować certyfikaty z wyprzedzeniem, abyś mógł szybko przełączać się w przypadku odwołania pojedynczego klucza. Administratorzy nie otrzymują kluczy do 2 lub 3, dopóki nie pójdą na kompromis 1. Możesz umieścić w swojej witrynie powiadomienie o tym schemacie, a to również poinformuje administratorów, że jesteś gotowy w przypadku kompromisu i tego śmiesznego biznesu na ich koniec nie zniszczy twojej strony.

LawrenceC
źródło
1
Czy nie spowodowałoby to ostrzeżeń SSL dla użytkowników dla niezaufanego urzędu certyfikacji?
ceejayoz,
1
Myślę, że działałoby to dobrze tylko wtedy, gdy można zainstalować urząd certyfikacji jako zaufany certyfikat w przeglądarce użytkownika, na przykład w firmowym ustawieniu intranetowym. Wiedziałem, że coś jest nie tak z moim genialnym planem. :(
LawrenceC
0

Istnieje wiele artykułów sugerujących przechowywanie kluczy prywatnych w innym miejscu niż serwer, ale te klucze prywatne służą do certyfikatów do podpisywania kodu . Wyobraź sobie, że masz klucze na komputerze offline, do którego tylko Ty masz dostęp, niektóre oprogramowanie jest napisane, dostajesz klucz prywatny z serwera offline, podpisujesz kod, a potem nie potrzebujesz klucza prywatnego, dopóki nie będziesz musiał podpisać kod ponownie.

Najlepszym rozwiązaniem zawsze było i nadal będzie przechowywać klucz w trybie offline. To, jak to zrobisz, zależy wyłącznie od Ciebie (istnieje kilka metod), pamiętaj tylko, aby dobrze go chronić w bezpiecznym biurze lub w innym miejscu, w którym nie jest łatwo kogoś schować.

Czytaj więcej na: https://www.thesslstore.com/blog/heres-what-happens-when-your-private-key-gets-compromised/

Natomiast certyfikaty SSL są przeznaczone dla stron internetowych, aby umożliwić komunikację HTTPS: Klucz prywatny jest potrzebny podczas każdego uzgadniania przez serwer WWW. Dlatego przechowywanie go w trybie offline nie będzie działać.

Kodowanie Yoshi
źródło