Czy certyfikaty SSL z podpisem własnym są bezpieczne?

33

Chcę mieć bezpieczne połączenie, gdy loguję się do mojej poczty internetowej, phpMyAdmin itp.

Dlatego podpisałem własne certyfikaty SSL za pomocą OpenSSL i powiedziałem Apache, aby nasłuchiwał na porcie 443.

Czy to faktycznie jest bezpieczne? Czy wszystkie moje hasła są naprawdę przesyłane przez bezpieczną warstwę? Co to za różnica, jeśli kupię certyfikat SSL od Verisign lub podpiszę własny? Pod koniec dnia wszystkie dane i tak będą na moim serwerze. Jaka jest duża różnica?

Cherrun
źródło

Odpowiedzi:

40

Tu chodzi o zaufanie. Jeśli dostaniesz podpisany certyfikat od firmy Verisign, udowodnisz przypadkowym klientom, że twój certyfikat jest zaufany. Jeśli sam podpiszesz certyfikat, osoby, które nie mają certyfikatu zainstalowanego na swoim komputerze, nie mogą mieć pewności, że nie zostaną zaatakowane przez atak Man-in-the-middle .

Jeśli twój serwer jest właśnie używany przez Ciebie, nie potrzebujesz prawdziwego urzędu certyfikacji (takiego jak verisign), aby podpisać swój certyfikat. Wystarczy zainstalować certyfikat na komputerach, z których chcesz korzystać i możesz zacząć.

Edycja: Aby odpowiedzieć na twoje pytanie: Tak, wszystko jest zaszyfrowane i możesz być pewien, że nikt nie może odczytać twoich wrażliwych danych, jeśli wiesz, że certyfikat przedstawiony przeglądarce jest w rzeczywistości tym, za pomocą którego skonfigurowałeś serwer WWW.

monoceres
źródło
12
Celem urzędu certyfikacji jest udowodnienie innym, że certyfikat należy do tego, za kogo się podaje. Ponieważ już wiesz, do kogo należy certyfikat, jeśli chodzi o dostęp do własnego serwera i prezentowanie własnego certyfikatu, urząd certyfikacji nie ma sensu. Inni nie mogą jednak bezpiecznie uzyskiwać dostępu do serwerów, ponieważ nie mają sposobu na sprawdzenie, któremu certyfikatowi zaufać. (Wiesz - zaufaj temu, który wydałeś.)
David Schwartz,
Byłoby to również rozsądne podejście, gdyby do serwera miałaby dostęp ograniczona liczba użytkowników, którzy mogliby bezpośrednio skontaktować się z tobą w celu weryfikacji certyfikatu - członkowie Twojej rodziny lub pracownicy małej firmy, jako przykłady.
bgvaughan
Czy człowiek pośrodku, który jest koordynowany z urzędem certyfikacji, może unieważnić certyfikat z podpisem własnym? Np. Bob łączy się z własnoręcznie podpisaną witryną Alice, Scar wysyła Bobowi inny certyfikat podpisany przez urząd certyfikacji. Scar jest skoordynowany, przeglądarka Boba nigdy nie wyświetla ostrzeżenia SSL. czy to możliwe?
Hello World,
14

Tu chodzi o zaufanie.

Załóżmy, że odwiedzasz popularną witrynę internetową z certyfikatem. To jest strona internetowa z napisem: „Oto kim jestem, możesz mi zaufać, ponieważ mam list polecający podpisany przez osobę, której ufasz”.

W tym przypadku „ktoś, komu ufasz”, jest jednym z autorytetów certyfikatów, którzy (miejmy nadzieję) wykonali legalne prace w celu ustalenia tożsamości osoby wystawiającej certyfikat w Twoim imieniu.

To, na czym naprawdę ufasz, to zaufanie autora przeglądarki do zaufania urzędu certyfikacji do tożsamości osoby przedstawiającej certyfikat. Często między tobą a prowadzącym występuje więcej niż jeden autorytet, stąd termin: „łańcuch zaufania”. [1]

Po podpisaniu własnego certyfikatu nie ma łańcucha zaufania. Twoja strona przedstawia ci swój własny certyfikat. Jeśli zainstalować własny certyfikat w przeglądarce, jak ten, który Ci zaufać, to jest traktowany jako autorytet, takie same jak te, które pochodzą zainstalowane. Następnie masz łańcuch zaufania z tylko jednym linkiem.

Jeśli następnie odwiedzisz swoją witrynę, a przeglądarka ostrzeże Cię, że przedstawia niezaufany certyfikat, powinieneś mieć powód do niepokoju, ponieważ podobnie jak w przypadku każdej innej witryny, która przedstawia niezaufany certyfikat, nie możesz być pewien że komunikujesz się z prawdziwą witryną.

Zauważ, że nie wspomniałem jeszcze o szyfrowaniu. Certyfikaty dotyczą uwierzytelniania tożsamości strony, z którą się komunikujesz. Za pomocą zaufanych certyfikatów masz pewność, że Twój sklep lub bank są prawdziwe. Po ustaleniu ich tożsamości kolejnym krokiem jest zapewnienie komunikacji między wami. Zdarza się, że certyfikaty zawierają również klucze niezbędne do zapewnienia bezpieczeństwa. Zakładając, że poprawnie skonfigurowałeś SSL, ta komunikacja jest tak samo bezpieczna, jak w sklepie lub banku, a twoje hasła są jednakowo chronione. [2]

[1] To wcale nie jest bezbłędny system. Wolny rynek i niskomarżowa, masowa działalność nieuchronnie prowadzi do obniżenia kosztów: http://www.theregister.co.uk/2011/04/11/state_of_ssl_analysis/

[2] Przynajmniej chroniony na tyle, że ktoś jest o wiele tańszy, aby ktoś włamał się do twojego domu, wybił cię z tajemnic, a nie próbował ich złamać: http://xkcd.com/538/

SmallClanger
źródło
11

W rzeczywistości samopodpisane certyfikaty mogą być bezpieczne, ale nie w ramach modelu, którego używamy teraz.


W ramach szeroko rozpowszechnionego modelu CA (ośrodka certyfikacji), z którego wszyscy obecnie korzystają, celem podpisania certyfikatu przez zaufany urząd certyfikacji jest zapewnienie uwierzytelnienia.

Kiedy dostajemy certyfikat, wszystko, co naprawdę widzimy, to jedynki i zera nadchodzące z gniazda w ścianie; nie mamy pojęcia, skąd pochodzą te 1 i 0. Ponieważ jednak certyfikat jest podpisany przez urząd certyfikacji - coś, czego nikt inny na świecie nie może zrobić - i ponieważ ufamy urzędowi certyfikacji w zakresie weryfikacji tożsamości właściciela certyfikatu, ufamy, że certyfikat pochodzi od tego, kogo twierdzi do.

Oczywiście, jeśli CA zostanie naruszony lub nie zweryfikuje poprawnie właściciela , wszystkie zakłady są wyłączone.


Istnieje jednak kolejny model, zgodnie z którym certyfikaty autopodpisywane należy zapewnić autentyczność. To się nazywa model notarialny .

Zasadniczo, zamiast ufać jednemu urzędowi certyfikacji, dystrybuujemy zaufanie do dowolnej liczby notariuszy . Ci notariusze przeszukują Internet w poszukiwaniu certyfikatów, przechowując w pamięci podręcznej wszystkie certyfikaty, które widzieli. Gdy odwiedzasz witrynę po raz pierwszy i uzyskujesz certyfikat, pytasz wielu notariuszy dystrybuowanych na całym świecie, jaki był ostatni certyfikat, który widzieli. Jeśli nie zgadzają się z tym, co widzisz, możesz być częścią ataku man-in-the-middle.

W ramach tego modelu certyfikaty z podpisem własnym są całkowicie bezpieczne, o ile zakładamy, że serwer nie zostanie natychmiast narażony na szwank, zanim jakikolwiek notariusz będzie mógł zobaczyć jego certyfikat.


Model notariusza jest jeszcze w powijakach i wątpliwe, czy kiedykolwiek przejmie model CA (w rzeczywistości nie musi - można ich używać w tandemie) . Najbardziej obiecującym jak dotąd projektem jest Convergence.io , który ma wtyczkę do przeglądarki Firefox.

BlueRaja
źródło
2

Nie chodzi tylko o zaufanie ....

Certyfikaty SSL mogą służyć dwóm celom: 1) to serwer sieciowy, z którym się łączysz, z tym, z którym chcesz się połączyć; oraz 2) do szyfrowania komunikacji.

Możesz mieć # 2 bez # 1, co właśnie osiągnąłeś. Pozostaje więc weryfikacja, że ​​pole, z którym się łączysz, jest tym, którego chcesz.

Jeśli to MÓJ serwer, nie mam problemu z używaniem certyfikatu z podpisem własnym - chociaż istnieje pewne ryzyko, że ktoś może sfałszować rzeczy, aby zmusić mnie do połączenia się z ich serwerem zamiast z moim. Ponieważ nikt nie troszczy się o mnie i mój serwer, a ja mam tu niewielką wartość, nie widzę w tym zbyt dużego ryzyka.

Z drugiej strony, gdyby zamiast mojego serwera był to twój serwer, byłbym zaniepokojony.

uSlackr
źródło
Czy chciałbyś powiedzieć: „Jeśli to twój serwer, to NIE byłbym tym zainteresowany”?
cherrun
nie, powiedział: „jeśli to jest MÓJ serwer, nie mam problemu ... jeśli to jest TWÓJ serwer, to mam problemy”.
Francesco
Jesteś w błędzie Nikt nie może sfałszować rzeczy, które pozwolą ci połączyć się z ich serwerem zamiast twojego. Nie mają klucza odpowiadającego samemu podpisanemu certyfikatowi, który wystawiłeś, i nie mogą przedstawić innego certyfikatu, ponieważ nie zaakceptowałbyś go.
David Schwartz
@cherun Chodzi mi o to, że mi ufam - nie tobie (ani nikomu innemu). Możesz / powinieneś zaufać sobie.
uSlackr
1
-1. Szyfrowanie odbywa się za pomocą kluczy symetrycznych negocjowanych podczas uzgadniania. Oczywiście używasz certyfikatu do sprawdzania tożsamości strony zdalnej, w przeciwnym razie szyfrowanie komunikacji nie byłoby zbyteczne (może to być MITM). Jeśli jest to Twój serwer i certyfikat z podpisem własnym, zaimportuj go bezpośrednio do klienta.
Bruno