Odpowiedzi:
Ciekawe pytanie, zależy moim zdaniem od zastosowania. Nadal jesteś chroniony, ponieważ sesja jest zaszyfrowana, ale nie możesz powiedzieć, czy jest to prawidłowy certyfikat SSL przedstawiony, chyba że rozpowszechnisz certyfikat główny CA wśród użytkowników / klientów. W przypadku wewnętrznych testów / projekcji deweloperskich działałoby to świetnie, generujesz certyfikat głównego urzędu certyfikacji, którego używasz rozpowszechniać wśród użytkowników (można to zrobić za pomocą Zasad Grupy w systemie Windows i wiersza poleceń openssl w Linux / BSD), a następnie użyć tego certyfikatu głównego dla podpisywanie CSR. Użytkownicy nie zobaczą ostrzeżenia ani nic, a wiesz, że certyfikat jest podpisany przez wewnętrzny urząd certyfikacji.
W przypadku witryn zewnętrznych, w których nie możesz tego zapewnić, nadal twierdzę, że samopodpisany certyfikat jest lepszy niż brak protokołu SSL, jeśli wysyłasz hasła lub inne poufne informacje przez połączenie.
Jednak z drugiej strony istnieje wiele bardzo tanich „komercyjnych” wystawców certyfikatów, wśród których jest GoDaddy . Możesz uzyskać certyfikat za około 40 euro rocznie. GoDaddy oferuje nawet bezpłatne certyfikaty na stronach internetowych projektu OpenSource.
Nie będę się zgadzać, raz z przyczyn technicznych, a raz z przyczyn ogólnych.
Wąską podstawą techniczną jest to, że OP pytał o certyfikaty z podpisem własnym, a kilka innych odpowiedzi dotyczy certyfikatów podpisanych przez prywatne urzędy certyfikacji, co jest nieco inną kwestią. Ale nie bardzo inaczej, więc tak naprawdę jest to tylko nuta przemijająca.
Głównym zastrzeżeniem jest to, że uważam, że dopóki certyfikaty podpisane w celach handlowych są czymś więcej niż trywialnym wydatkiem - a 40 USD rocznie nie jest trywialnym wydatkiem dla wielu ludzi na tej planecie - certyfikaty z podpisem własnym mają do odegrania ważną rolę w bezpieczeństwie internetowym, pod warunkiem rozpoznania ich ograniczeń .
Samopodpisany certyfikat jest jak klucz ssh z mojego known_hosts
pliku. Bez niezależnej weryfikacji nie może mnie zapewnić, że rozmawiam z systemem, który moim zdaniem jest; ale może mnie zapewnić, że system, z którym rozmawiam, to ten sam system, z którym rozmawiałem ostatnim razem, kiedy myślałem, że rozmawiam z nim. Cały czas przechowujemy w pamięci podręcznej klucze ssh i nigdy jeszcze nie spotkałem administratora systemu, który niezależnie weryfikowałby więcej niż ułamek kluczy publicznych w swoim known_hosts
pliku.
Certyfikaty z podpisem własnym (i, w tym zakresie, certyfikaty podpisane przez nieważne urzędy certyfikacji) są znacznie lepsze niż brak protokołu SSL, pod warunkiem, że ludzie zdadzą sobie sprawę, że dopóki ich nie zweryfikują, zapewnią komunikację tylko sobie, serwerowi na drugim końcu rekordu DNS i wszystkich środkowych ludzi aktualnie w linii. Jeśli niezależnie zweryfikują certyfikat, uwierzytelnianie i szyfrowanie są co najmniej tak silne, jak w przypadku certyfikatu podpisanego przez uznany urząd certyfikacji.
Ponadto ci, którzy chcą zaprezentować korzysta z certyfikatów podpisanych przez uznaną CA jako jeden i tylko panaceum bezpieczeństwa internetowego może trzeba myśleć intensywnie o kwestiach takich jak włączenie rządu chińskiego podpisywania CA w standardowym Mozilla wiązki i fałszywe certyfikaty SSL podpisane przez Comodo .
known_hosts
czego odwołuje się @MadHatter.
W przypadku witryn zewnętrznych, w których użytkownicy nie mają zainstalowanego certyfikatu CA (co jest najczęstszym przypadkiem), tak, certyfikat z podpisem własnym daje fałszywe poczucie bezpieczeństwa , a zatem jest gorszy niż bezużyteczny:
Po pierwsze, w jaki sposób użytkownik nie ma wstępnie zainstalowanego certyfikatu CA, czy rzeczywiście pochodzi on od Ciebie, a nie od osoby atakującej? Oczywiście dopasowując pola certyfikatu (CN, odciski palców itp.) - ale wbrew czemu? Więc teraz trzeba kanał boczny do weryfikacji certyfikatu - aw nielicznych przypadkach Widziałem, że operatorzy linii wsparcia (kto powinien służyły jako kanału bocznego w celu weryfikacji) nie mają pojęcia, co to ma znaczyć; ponadto działanie takiego kanału bocznego jest o rząd wielkości droższe niż uzyskanie certyfikatu z zaufanym certyfikatem CA, więc użytkownik musi ci ślepo ufać.
Po drugie, przerażający alert, który otrzymuje użytkownik, jest przerażający z dobrego powodu: ponieważ użytkownik nie może / nie zweryfikuje przedstawionego certyfikatu, może on bezpiecznie przesyłać dane do Elbonian Haxx0r D00dz.
Po trzecie, a co najgorsze, znieczulasz użytkowników : „powiedzieli mi, że powinienem zignorować to ostrzeżenie na https://mysite.example.com/ , a kowadło nie spadło mi na głowę, a moje złota rybka też nie umarła, więcoooo, oznacza to, że jest to po prostu kolejne okno alarmowe bez żadnego rzeczywistego znaczenia, więc mogę zignorować to okno za każdym razem, gdy go napotkam - i tak dostaję fajną ikonę kłódki, a to ważne. ”
Innymi słowy, poziom ochrony jest porównywalny do zwykłego HTTP (z wyjątkiem wąchania w sieci: chociaż dane są szyfrowane podczas przesyłania, jest to raczej anemiczna funkcja bez weryfikacji punktu końcowego), ale poczucie ochrony jest nieuzasadnione wysokie . Zła analogia samochodu: „Mam ABS, więc mogę teraz jeździć bezpieczniej w złych warunkach” - tyle, że ABS istnieje tylko w broszurze sprzedaży samochodu, ale w rzeczywistości nie jest obecny w samochodzie.
Sugerowana lektura: Najlepsze praktyki OWASP SSL
TL; DR: Używając samopodpisanych certyfikatów w publicznych witrynach, czynisz sieć gorszym miejscem, jeden nieświadomy użytkownik na raz.
Zależy. Jeśli uważasz, że dzięki temu jesteś bardziej bezpieczny, to zwiększa ryzyko, gdy robisz bardziej ryzykowne rzeczy z fałszywym poczuciem bezpieczeństwa. Jeśli potraktujesz to funkcjonalnie jako odpowiednik HTTP, to powiedziałbym, że jesteś nieco bardziej bezpieczny.
Bez protokołu SSL / HTTPS każdy, kto ma wireshark w Twojej sieci (lub w lokalnej sieci każdego logującego się użytkownika), może w prosty sposób nasłuchiwać i przechwytywać nazwy użytkownika / hasła wysłane jako zwykły tekst.
Dzięki samopodpisanemu protokołowi SSL nie mogą po prostu nasłuchiwać, ale teraz muszą sfałszować witrynę, potencjalnie zmienić DNS, aby wykonać atak typu man it the middle (MITM). Jest to nadal zagrożenie, ale znacznie trudniejsze do osiągnięcia.
Innym problemem związanym z korzystaniem z samopodpisanego protokołu SSL jest to, że wiele przeglądarek traktuje certyfikaty z podpisem własnym jako poważne zagrożenie bezpieczeństwa i ostrzega przed wejściem (np. Chrome) z wielką czerwoną stroną. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Może to być poważna niedogodność.
Podsumowując, jeśli prowadzisz coś, co nie musi być szczególnie bezpieczne (np. Brak danych karty kredytowej, brak numeru ubezpieczenia społecznego) i nie stać cię na odpowiedni certyfikat, certyfikat z podpisem własnym może mieć sens (aby uniemożliwić innym użytkownikom sieci wąchanie ich danych logowania).
Zależy to, co masz na myśli przez „bezpieczeństwo” i jaki jest zakres.
Na przykład twoja przeglądarka ma domyślnie akceptowany zestaw urzędów certyfikacji. Oznacza to, że każdy certyfikat wydany przez ten urząd certyfikacji jest akceptowany przez Twoją przeglądarkę (dopóki nie pasuje do nazwy dns). Teraz wyobraź sobie, że jakiś zły rząd ma urząd certyfikacji lub może zmusić go do wydania certyfikatu dla odwiedzanej witryny. Następnie wykonanie MITM jest bardzo łatwe: mogą proxy Twojego połączenia, wysyłając do przeglądarki certyfikat, który mają, a Twoja przeglądarka go zaakceptuje, ponieważ pochodzi on od „zaufanego” urzędu certyfikacji. Dopóki nie będą przezroczyste dla DNS (co stanowi podstawę dla MITM), jest to w porządku.
Tak więc „lista zaakceptowanych urzędów certyfikacji” jest zasadniczo wielką dziurą w zabezpieczeniach, dopóki jeden z tych urzędów nie będzie współpracować z jakimś złym rządem. Posiadanie własnego CA jest znacznie lepsze.
Oczywiście możesz to zrobić w swojej firmie lub na serwerze domowym, ponieważ możesz zainstalować własny certyfikat CA w kliencie, który również kontrolujesz. Na serwerze publicznym nie możesz poradzić sobie z żadnym użytkownikiem, prosząc go o dodanie wyjątku lub dodanie certyfikatu.
Zależy to zatem od tego, co masz na myśli, mówiąc o „bezpieczeństwie” i zasięgu. JEŚLI jesteś właścicielem klientów, NA PEWNO, samopodpisany jest bezpieczniejszy, dopóki sam nie zainstalujesz certyfikatu własnego urzędu certyfikacji.
Oczywiście nie możesz tego zrobić na publicznej stronie internetowej, ponieważ nie jesteś właścicielem wszystkich klientów. Będziesz więc narażony na ryzyko różnych zachowań, co nie jest bezpieczne.