Dlaczego muszę kupić certyfikat SSL, kiedy mogę wygenerować go lokalnie?

57

Mam problem ze zrozumieniem, dlaczego musimy kupować certyfikaty SSL, skoro możemy je generować lokalnie za pomocą openSSL. Jaka jest różnica między zakupionym certyfikatem a certyfikatem testowym generowanym lokalnie? Czy to tylko duży przekręt?

SK ”
źródło
17
Jeśli chodzi o triadę CIA w zakresie bezpieczeństwa informacji, certyfikaty z podpisem własnym zapewniają poufność i integralność (tj. Umożliwiają szyfrowanie wiadomości między dwiema stronami), ale tylko certyfikaty podpisane przez zaufane źródło zapewniają autentyczność (tj. Drugą stronę w zaszyfrowanej rozmowie to tak naprawdę, jak myślisz).
apsillers
10
Mamy nadzieję, że kiedy DNSSEC wejdzie w grę, ludzie będą mogli stworzyć własny certyfikat i przechowywać go w rekordzie DNS. Łańcuch zaufania DNSSEC wystarczyłby wtedy, aby udowodnić, że certyfikat należy do właściciela domeny. (Nie sądzę, że jest to sformalizowana specyfikacja (jeszcze), ale byłoby miło)
jackweirdy
2
Do użytku wewnętrznego możesz wdrożyć certyfikat jako zaufany przy użyciu Zasad Grupy (w systemie Windows).
Ben
4
Często zastanawiam się, dlaczego ludzie też nie akceptują moich drukowanych pieniędzy;)
tgkprog
1
Uwaga: Istnieją bezpłatne podstawowe certyfikaty dostawców. Zaspokajają one 90% potrzeb ludzi. A niektóre urzędy certyfikacji mają bardzo tanie certyfikaty, nie ma powodu, by łamać bank bez względu na to, czego potrzebujesz. (oczywiście bez delegacji)
Chris S

Odpowiedzi:

72

Jedno słowo - zaufanie. Certyfikat SSL od dostawcy, któremu ufa Twoja przeglądarka, oznacza, że ​​przynajmniej dokonał podstawowej weryfikacji, aby stwierdzić, że jesteś tym, za kogo się podajesz.

W przeciwnym razie mógłbym tworzyć własne certyfikaty dla google.com lub yourbank.com i udawać, że nimi są.

Płatne certyfikaty nie zapewniają żadnego dodatkowego poziomu szyfrowania w stosunku do podpisu własnego (zwykle). Ale samopodpisany certyfikat spowoduje błąd przeglądarki.

Tak, części SSL to oszustwo (certyfikat Verisign kontra Geotrust, gdzie Verisign jest nawet 100 razy droższy), ale nie wszystkie.

Jeśli to wszystko jest wewnętrzne, nie ma potrzeby posiadania płatnego certyfikatu, ponieważ możesz zastosować własne metody zaufania (np. Nic nie rób, a może po prostu sprawdzanie odcisków palców).

Mark Henderson
źródło
8
Jeśli są to tylko elementy wewnętrzne, możesz wdrożyć certyfikat jako zaufany przy użyciu zasad grupy.
Ben
2
Z drugiej strony podpisywanie sterowników jest trochę oszustwem. Co do tego, tak, to ogromna zdzira, ale nie mamy wyboru. udane oprogramowanie.net/2008/02/27/…
Mat.
2
@Matt - Przeczytałem wcześniej ten artykuł; kiedy patrzyliśmy na podpisywanie kodu w pracy. Postanowiliśmy po prostu samopodpisać się i doradzić ludziom sprawdzenie podpisów. Na szczęście mamy bardzo zaawansowanych użytkowników (głównie).
Mark Henderson
A samopodpisane certyfikaty generują ostrzeżenia we wszystkich przeglądarkach. Chociaż certyfikaty od dostawców mogą być weryfikowane przez wszystkie główne przeglądarki, ponieważ mają one wbudowane klucze publiczne tych dostawców i mogą zweryfikować twoje certyfikaty oraz potwierdzić, że faktycznie zostały podpisane przez dostawcę.
Matt
23

Cały sens certyfikatu SSL polega na tym, że przeglądarka ma uzasadnione zaufanie do klucza publicznego serwera dla transakcji HTTPS.

Najpierw zbadajmy, co by się stało, gdybyśmy nie korzystali z certyfikatów. Zamiast tego serwer wysyłałby klucz publiczny w postaci zwykłego tekstu, a przeglądarka inicjowałaby zaszyfrowaną komunikację przy jego użyciu (pierwszą rzeczą, jaką zrobiłby, to szyfrowanie własnego klucza publicznego i bezpieczne wysyłanie go dalej). Co jeśli ja i napastnik zaklinuję się na środku? Mógłbym na bieżąco zastąpić twój klucz publiczny moim, mieć zaszyfrowane połączenie z przeglądarką, odszyfrować wszystkie otrzymywane przeze mnie rzeczy, zaszyfrować go za pomocą klucza publicznego i wysłać go (i odwrotnie w przypadku ruchu typu odpowiedzi). Żadna ze stron nie zauważy różnicy, ponieważ nikt wcześniej nie znał kluczy publicznych.

OK, więc ustaliliśmy, że potrzebujemy sposobu, aby przeglądarka zaufała mojemu kluczowi publicznemu. Jednym ze sposobów na to byłoby przechowywanie wszystkich zarejestrowanych kluczy publicznych w przeglądarce. Oczywiście wymagałoby to aktualizacji za każdym razem, gdy ktoś rejestrował klucz publiczny, a to prowadziłoby do wzdęć. Można również przechowywać klucze publiczne w rękach serwerów DNS 1 , ale serwery DNS mogą być również sfałszowane, a DNS nie jest bezpiecznym protokołem.

Tak więc jedyną opcją jest „połączenie” zaufania za pomocą mechanizmu podpisywania. Przeglądarka przechowuje szczegółowe informacje o kilku urzędach certyfikacji, a Twój certyfikat zostanie wysłany wraz z łańcuchem innych certyfikatów, z których każdy podpisuje następny i przechodzi do głównego / zaufanego / wbudowanego urzędu certyfikacji. Zadaniem urzędu certyfikacji jest upewnienie się, że domena należy do Ciebie przed podpisaniem certyfikatu.

Ponieważ bycie urzędem certyfikacji jest biznesem, pobierają za to opłaty. Niektóre bardziej niż inne.


Jeśli utworzyłeś własny certyfikat, otrzymasz błąd podobny do:

wprowadź opis linku tutaj

Nie ma wartości dla niepodpisanego certyfikatu. To jak zabranie ołówka i broszury, narysowanie paszportu, który twierdzi, że jesteś Barackiem Obamą. Nikt mu nie zaufa.

1. W końcu twoja pozycja DNS jest tworzona podczas rejestracji domeny. Ciekawym pomysłem byłoby użycie bardziej niezawodnego protokołu, który pozwala jednocześnie rejestrować klucze publiczne.

Manishearth
źródło
Możesz także użyć zszywania DNSSEC dla twojego certyfikatu SSL, więc certyfikat pochodzi (ostatecznie) z ICANN jako CA, a nie z innego urzędu certyfikacji. Żadna z obecnych przeglądarek nie obsługuje tego, chociaż Chrome kiedyś.
Richard Gadsden
A obecnie masz DANE i jego rekordy TLSA DNS, które pozwalają ograniczyć niektóre usługi do określonych kluczy lub określonych urzędów certyfikacji.
Patrick Mevzek,
5

Odpowiedź na twoje pytanie zależy od odbiorców: ponieważ cały system certyfikatów opiera się na „zaufaniu”, użytkownicy muszą mieć możliwość udowodnienia swoich certyfikatów lub zaufania stronie trzeciej, która przeprowadziła te kontrole i wykazała sukces poprzez podpisanie twój certyfikat. Użyty przeze mnie termin „potwierdzenie certyfikatów” jest nieco niedokładny: długa wersja powinna brzmieć: „aby udowodnić, że jesteś właścicielem certyfikatu i możesz go używać”.

Jeśli wszyscy użytkownicy znają Cię osobiście i mają techniczną możliwość udowodnienia, że ​​certyfikat został wydany przez Ciebie, nie ma technicznej potrzeby korzystania z certyfikatu od „certyfikowanego” dostawcy. W takim przypadku samopodpisany certyfikat może być nawet lepszy niż jeden z nich.

Ale w większości przypadków użytkownicy nie mogą wykonać tego procesu samodzielnie. Tutaj ci dostawcy SSL wchodzą na rynek. Oferują usługę wykonania tych kontroli i wyrażają wynik kontroli poprzez podpisanie certyfikatu. Należy jednak pamiętać o jednym ważnym fakcie: podpisując certyfikat dostawca SSL wyraża, że ​​sprawdził tożsamość wystawcy certyfikatu zgodnie z własną polityką podpisywania. Użytkownik musi więc zdecydować, czy ta polityka jest wystarczająco precyzyjna i czy może zaufać dostawcy.

mschenk74
źródło
4

Najważniejsze jest to, że jeśli certyfikat jest generowany samodzielnie, zwykli użytkownicy nie mają możliwości zweryfikowania jego prawdziwości. W przypadku zakupionego certyfikatu zakładają oni przynajmniej zweryfikowanie poprawności wydruków w certyfikacie. Pomysł: jeśli umieścisz swój telefon i adres w certyfikacie, urząd certyfikacji przypuszczalnie go zweryfikuje, ale rzadko to robią.

Dodatkowo, certyfikat zakupu jest identyfikowalny, co oznacza, że ​​użytkownik może zawsze śledzić, skąd pochodzi certyfikat, podczas gdy certyfikat z podpisem własnym jest tylko losową tożsamością.

W wielu systemach „podpisywanie kodu” było wymagane od autoryzowanego urzędu certyfikacji w przeszłości, co jest uzależnione od zasad, ale ponieważ samopodpisane certyfikaty są tak liczne, nie jest już teraz w 100% egzekwowane.


źródło
4

Nie ma różnicy technicznej (twoje własne nie są mniej bezpieczne), tylko organizacja: certyfikat Twojego urzędu certyfikacji nie jest częścią standardowej instalacji przeglądarki. To sprawia, że ​​większość osób nie jest w stanie połączyć się z twoim certyfikatem. Ale kupowanie certyfikatu dla sieci wewnętrznej nie miałoby sensu.

Hauke ​​Laging
źródło
3

Wszystko sprowadza się do zaufania. „Certyfikowany” dostawca SSL jest podobno renomowany (choć można nim manipulować) w porównaniu z samopodpisanym certyfikatem z samego serwera.

Jeśli Twoja organizacja ma własne podpisywanie certyfikatów, jest to całkowicie akceptowalne i nie powinno powodować żadnych ostrzeżeń dla użytkowników (pod warunkiem, że używają pęku kluczy cert jako zaufanego źródła), ale nadal będzie generować ostrzeżenie, jeśli spróbujesz użyć go zewnętrznie.

Podsumowując: do użytku wewnętrznego jest w porządku, jeśli dostarczasz go zewnętrznie płatnemu klientowi, brak ostrzeżeń jest spokojny. Czy poczujesz się bezpieczniej, gdy twoje transakcje finansowe odbywają się przez akredytowane źródło, czy może jakiś facet stojący na ulicy, której tak naprawdę nie znasz?

szukalski
źródło
3

Ostatnio LetsEncrypt ogłosił dostępność swoich narzędzi wiersza poleceń do generowania ważnych certyfikatów.

Brak e-maili sprawdzających poprawność, bez skomplikowanej edycji konfiguracji, żadnych wygasłych certyfikatów niszczących witrynę. I oczywiście, ponieważ Let's Encrypt zapewnia certyfikaty za darmo, nie trzeba organizować płatności.

Dla tych, którzy zastanawiają się, czy te certyfikaty są ważne w głównych przeglądarkach, odpowiedź brzmi: tak:

W dniu 19 października 2015 r. Certyfikaty pośrednie zostały podpisane krzyżowo przez IdenTrust, co powoduje, że wszystkie certyfikaty wydawane przez Let's Encrypt mają zaufanie wszystkich głównych przeglądarek. [20]

..... 8 marca 2016 r. Let's Encrypt wydało swój milionowy certyfikat po siedmiu miesiącach istnienia. [39]

12 kwietnia 2016 r. Let's Encrypt opuścił Beta.

Link do administratora systemu i programistów: https://letsencrypt.org/getting-started/

W dobie technologii blockchain i eliminacji zewnętrznych systemów zaufania nadszedł czas, aby wydawanie drogich certyfikatów przez kilka wybranych organów zaczęło być kwestionowane.

Chociaż Letsencrypt nie ma nic wspólnego z technologią blockchain, jest to początek we właściwym kierunku. Mamy nadzieję, że konieczność płacenia wysokiej opłaty co roku drogiemu urzędowi certyfikacji kończy się logicznie.

surfbuds
źródło
2

Mówiąc najprościej, samopodpisany certyfikat SSL nic nie znaczy. Nie ma żadnej wartości dla świata zewnętrznego. To tak, jakby powiedzieć „jestem właścicielem Hiszpanii”. Możesz szczerze myśleć, że tak, ale nikt nie rozpozna twojego roszczenia.

Podobną analogią byłoby wymyślenie czegoś, a następnie twierdzenie, że posiadasz prawa do wynalazku, ale jeśli nie zarejestrujesz patentu w urzędzie, trudno będzie ci na to uwierzyć, prawda?


Chodzi o to, że certyfikat jest podpisany przez organ, któremu ufają ludzie. Jeśli jakaś strona internetowa ma ważny certyfikat SSL, oznacza to, że właściciel zadał sobie trud zarejestrowania swojej witryny, płacenia za certyfikat SSL i uzyskania oficjalnego certyfikatu od jakiegoś prawdziwego urzędu certyfikacji, więc prawdopodobnie nie jest to tania strona phishingowa. Z drugiej strony, jeśli ufasz samopodpisanym certyfikatom, wtedy wspomniana witryna phishingowa może po prostu wygenerować własny sfałszowany certyfikat (który chętnie zaakceptujesz) i voila.

Oczywiście, jeśli jest to sieć wewnętrzna w prywatnym intranecie, prawdopodobnie już sobie ufasz, więc w tym przypadku autorytatywny certyfikat tak naprawdę nic nie dodaje, więc możesz bezpiecznie zignorować jasne czerwone światła, które Twoja przeglądarka rzuci na Ciebie . To samo dotyczy małych witryn internetowych, w których nadal chcesz szyfrować ruch klient-serwer, ale twój model zagrożenia nie gwarantuje silnego uwierzytelnienia, w którym to przypadku możesz uzyskać certyfikat z podpisem własnym i zaakceptować (nieistotny dla twojego modelu zagrożenia) ryzyko MITM.

Co jest prawdopodobnie satysfakcjonujące, biorąc pod uwagę, jak drogie mogą być zaufane certyfikaty SSL.


Innymi słowy, samopodpisany certyfikat oznacza powiedzenie „Poświadczam, że jestem tym, kim jestem - zaufaj mi !”.

Tomasz
źródło
2
Jest to poprawne, ale nadal warto zauważyć, że płatne certyfikaty są tylko dowodem, że ktoś zadał sobie trud płacenia pieniędzy urzędowi certyfikacji. Sprzedawcy po drugiej stronie Verisign / Namecheap / Cokolwiek-CA nie zrobią nic więcej niż tylko wyślą certyfikat na [email protected] (np. Wyślą go na potencjalną stronę phishingową exqmple.org) .
89c3b1b8-b1ae-11e6-b842-48d705
1
@tristan To prawda, mogliby zastosować lepsze formalne procedury do tego rodzaju rzeczy, ale myślę, że wymagania logistyczne byłyby nieuzasadnione.
Thomas
1
@tristan - jest to niedoskonały system, ale urzędy certyfikacji mają motywację, by być godnym zaufania. Na przykład, jeśli dadzą przypadkowej osobie certyfikat Google, zostaną usunięte ze wszystkich przeglądarek w krótkiej kolejności. Oferują także certyfikaty „rozszerzonej weryfikacji”, co teoretycznie oznacza, że ​​przeprowadzają więcej kontroli. Każdy z nich może zdecydować, że wymaga to osobiście przeprowadzonych testów DNA, jeśli uzna, że ​​wzmocni to ich reputację i przyniesie im zyski.
Nathan Long
1
@NathanLong Nie chodzi o dawanie „Google cert” jakiemukolwiek pozbawionemu skrupułów facetowi, chodzi o to, że nawet EV cert to po prostu „ktoś może odpowiedzieć na e-maile z tej domeny”. W każdym razie krążimy wokół tych samych punktów: a) użytkownicy nadal muszą wiedzieć, aby nie dawać pieniędzy payqal.com, b) bariera kosztowa dla SSL nie jest tego warta dla niektórych oszustów, c) płatne certyfikaty oznaczają, że jest więcej prawdopodobnie witryna prawdopodobnie będzie poszukiwana przez DNS, i d) jest to rozsądne podejście do podania wartości
początkowej
Tristan, to część kosztów. Bardzo tanie certyfikaty wykonują bardzo niedrogą walidację. Bardzo drogie certyfikaty (na poziomie przedsiębiorstwa) mogą przeprowadzać bardzo kosztowną weryfikację. (chociaż cena nie jest bezpośrednim wskaźnikiem tego, jak dobrze wykonano zadanie sprawdzania poprawności) Niektóre certyfikaty dają absolutną gwarancję tego, kim jesteś, ale większość po prostu gwarantuje, że masz kontrolę nad domeną, dla której zostały wydane. .
1

Aby było to krótkie i proste ... i trochę obalić to, co zostało powiedziane ...

To nie jest problem z szyfrowaniem, przy użyciu odpowiednich narzędzi możesz wygenerować certyfikat lokalnie z wybranym typem szyfrowania ... i uzyskać ważny certyfikat.

Główną zaletą, którą masz przy zakupie certyfikatu od jednostki certyfikującej jest to, że w okresie ważności certyfikatu posiadają na swoich serwerach mechanizm sprawdzania wszystkiego, co podpisałeś za pomocą certyfikatu online ...

Komputery nie muszą być podłączone, aby produkty cyfrowe mogły zostać zweryfikowane i zatwierdzone przy użyciu certyfikatu ... należy przekierować sprawdzanie poprawności do jednostki certyfikującej.

ZEE
źródło
1

Przepraszam, że tak późno włączyłem się w tę dyskusję - pomyślałem, że warto zauważyć, że używając openssl można skonfigurować prywatny urząd certyfikacji z własnym certyfikatem głównym, a następnie utworzyć certyfikaty serwera podpisane przez ten urząd certyfikacji. Pod warunkiem, że certyfikat główny urzędu certyfikacji zostanie zaimportowany do przeglądarki, a przeglądarka otrzyma polecenie jego zaakceptowania, certyfikat serwera zostanie zaakceptowany bez komentarza. (Oczywiście jest to realna opcja, jeśli społeczność użytkowników jest niewielka, a wszyscy użytkownicy znają się osobiście.)

pd9370
źródło
-2

Czy zaufasz komuś, kto powie „Zaufaj mi”? Zaufanie do autentyczności może zapewnić jedynie „Zaufany organ”, któremu wszyscy ufają. Właśnie dlatego musimy zebrać duże pieniądze za certyfikaty.

Ravi
źródło
2
Zgodnie z tą logiką nie byłoby darmowych dostawców certyfikatów. Ale tutaj są.
Chris S