Czy używanie certyfikatów SSL z podpisem własnym jest złą praktyką?

29

Certyfikaty SSL są dość drogie dla osób fizycznych, szczególnie jeśli chcesz zabezpieczyć różne subdomeny. Rozważam użycie certyfikatów z podpisem własnym, ponieważ moim głównym celem jest zabezpieczenie połączenia, a nie uwierzytelnianie siebie.

Jednak kilka przeglądarek wyświetla nieprzyjemne ostrzeżenia, gdy napotyka taki certyfikat. Czy odradzałbyś korzystanie z samopodpisanych certyfikatów (na przykład w przypadku małej aplikacji internetowej lub strony administracyjnej małej witryny)? A może w niektórych przypadkach jest OK?

Wookai
źródło

Odpowiedzi:

14

Ogólnie źle jest używać certyfikatu z podpisem własnym. Jeśli to zrobisz, ryzykujesz, że ludzie opuszczą Twoją witrynę, gdy otrzymają ostrzeżenie o złym certyfikacie. Co ważniejsze, istnieje większe ryzyko, że ktoś dokona ataku zastrzykiem, w którym użyje własnego certyfikatu z podpisem własnym, a odwiedzający nie będzie wiedział nic lepszego.

Sprawdź artykuł tutaj, http://www.sslshopper.com/article-when-are-self-signed-certificates-acceptable.html, aby uzyskać trochę więcej informacji na ten temat.

Ben Hoffman
źródło
14

Jak powiedział RandomBen, certyfikaty z podpisem własnym są generalnie niezadowolone z powodów, które wyjaśnił. Ale jest jedna sytuacja, w której wszystko jest w porządku: jeśli grupa osób, które muszą przesłać poufne dane do Twojej witryny, jest niewielka i ograniczona, wszyscy są nieco technicznie kompetentni i możesz się z nimi komunikować. W takim przypadku możesz podać każdej osobie szczegóły certyfikatu, a następnie mogą ręcznie sprawdzić certyfikat, gdy odwiedzają Twoją witrynę, i w razie potrzeby dodać wyjątek bezpieczeństwa.

Jako skrajny przykład, na moim osobistym VPS mam administracyjną subdomenę, do której zawsze powinienem mieć dostęp. Nie byłoby problemu z zabezpieczeniem tej domeny za pomocą certyfikatu z podpisem własnym, ponieważ mogę ręcznie sprawdzić, czy certyfikat serwera użyty do zabezpieczenia połączenia jest tym samym, który zainstalowałem na serwerze.

W przypadku, gdy samopodpisany certyfikat nie działa lub wolisz mieć „prawdziwy” certyfikat, polecam Let's Encrypt , projekt rozpoczęty przez Internet Security Research Group i wspierany przez duże firmy internetowe, które oferują certyfikaty SSL na bez kosztów. Mogą to zrobić, ponieważ proces weryfikacji, którego używają, jest całkowicie zautomatyzowany, a serwer sieciowy obsługujący ich protokół ACME (taki jak Caddy , którego obecnie używam) może uzyskać certyfikaty całkowicie samodzielnie. Powiedzmy Szyfrowanie nie sprawdza, czy ciebiejako osoba mówisz, że jesteś; sprawdza tylko, czy Twój serwer WWW jest w stanie wyświetlać treści w domenie, do której się twierdzi. Let's Encrypt jest obsługiwany przez wszystkie główne przeglądarki, ale dobrze wiadomo, że weryfikacja jest minimalna, więc jeśli prowadzisz coś w rodzaju witryny e-commerce lub czegoś, w którym ludzie będą przesyłać poufne informacje, prawdopodobnie powinieneś wydać pieniądze, aby uzyskać certyfikat z wyższym poziomem walidacji.

Kiedyś polecałem bezpłatne certyfikaty StartSSL od StartCom dla osób, które nie chciały płacić za weryfikację, ale już nie. StartCom został potajemnie przejęty przez WoSign w 2016 r., A następnie wydał nielegalne certyfikaty dla kilku domen. W rezultacie główne przeglądarki usunęły obsługę certyfikatów StartCom. (O ile mi wiadomo, IE i tak nigdy ich nie wspierał). W każdym razie Let's Encrypt jest znacznie wygodniejszy.

David Z
źródło
+1 za pierwszy akapit. Używam samopodpisanego certyfikatu dla Webmina na moim serwerze, ponieważ używają go tylko ja i projektant, ale nie zalecałbym robienia tego dla ogólnego użytku publicznego.
DisgruntledGoat
3

To nie zły praktyką jest stosowanie certyfikatów z podpisem własnym. Certyfikaty z podpisem własnym mają wiele praktycznych celów, dla których nie ma sensu używać certyfikatu z podpisem urzędu certyfikacji.

Na przykład na wielu moich serwerach mam skonfigurowane logowanie bez hasła. Są to serwery, z którymi tak często się łączę, a czasem utrzymuję wiele połączeń SSH otwartych, więc trudno jest wpisać moją nazwę użytkownika i hasło za każdym razem.

Zamiast tego używam samopodpisanego certyfikatu SSL, który generuję na każdym komputerze klienckim (stacja robocza w biurze, laptop i domowa stacja robocza). Ten rodzaj konfiguracji pozwala mi używać dość długich, bezpiecznych i całkowicie unikatowych haseł dla każdego z moich serwerów bez wpływu na produktywność. A ponieważ mam bezpośredni dostęp do serwerów, na których mogę zainstalować klucz publiczny dla każdego certyfikatu, nie ma sensu używać certyfikatu podpisanego przez urząd certyfikacji.

I mógłby założyć własną głównego urzędu certyfikacji, z którym mogę podpisać wszystkie certyfikaty do użytku wewnętrznego dla naszej firmy, a w ten sposób bym wystarczy zainstalować jeden klucz publiczny na każdym serwerze. Jednak nasza organizacja nie osiągnęła rozmiarów, które naprawdę tego wymagają, a dla celów bezpiecznego protokołu HTTP byłoby to nadal takie samo, jak posiadanie certyfikatu z podpisem własnym.

Podobnie, samopodpisane certyfikaty są często używane do połączeń e-mail, podpisu PGP i połączeń między serwerami, gdzie wstępna wymiana kluczy publicznych jest banalna. W wielu z tych przypadków jest to w rzeczywistości bezpieczniejsze niż poleganie na łańcuchu certyfikatów, który może zostać naruszony w dowolnym momencie łańcucha.

Lèse majesté
źródło
Nie rozumiem, dlaczego w twoim przypadku używasz certyfikatów SSL? Wspominasz, że nie chcesz wpisywać hasła wiele razy: możesz po prostu użyć klucza prywatnego SSH z ssh-agent, aby automatycznie uwierzytelnić Cię na każdym serwerze bez konieczności wpisywania hasła więcej niż raz.
Wookai,
@Wookai: Byłby to jeden ze sposobów na SSH, ale używanie certyfikatów klienta SSL jest znacznie bardziej ogólną metodą uwierzytelniania klienta. Używam również moich certyfikatów klienta do uwierzytelniania HTTPS, a także poczty e-mail, a jeśli postanowię później skonfigurować wewnętrzny urząd certyfikacji, stanie się on jeszcze bardziej elastyczny / wydajny. W tym momencie nie będę musiał instalować indywidualnych kluczy prywatnych dla każdego klienta / użytkownika. To tylko bardziej niezawodne rozwiązanie IMO.
Lèse majesté
2

Jeśli zabezpieczasz wiele subdomen, możesz chcieć użyć certyfikatów wieloznacznych , które (w zależności od liczby subdomen, które zabezpieczasz) mogą okazać się znacznie tańsze niż zakup jednej na domenę; na przykład RapidSSL sprawia, że ​​symbol wieloznaczny jest tańszy niż poszczególne certyfikaty, gdy masz cztery domeny w użyciu.

Cebjyre
źródło