2011-08-25 15 views
5

OK Zaawansowani partnerzy SSL i chłopaki - dodam do tego nagrodę po dwudniowym okresie, ponieważ uważam, że jest to złożony temat, który zasługuje na nagrodę dla każdego, kto w zamyśleniu odpowiedzi.Zaawansowany protokół SSL: pośredni urząd certyfikacji i wdrażanie zagnieżdżonych skrzynek

Niektóre z poniższych założeń to po prostu założenia, a dokładniej nadzieje. Rozważ to jako łamigłówkę, po prostu mówiąc "To nie jest możliwe", nie ma sensu.

Alternatywne i częściowe rozwiązania są mile widziane, osobiste doświadczenie, jeśli zrobiłeś coś "podobnego". Chcę się czegoś z tego nauczyć, nawet jeśli cały mój plan jest wadliwy.

Oto scenariusz:

Zajmuję na wbudowanym systemie Linux i chcą jego serwer WWW, aby móc służyć out-of-the-box, bez kłopotów SSL. Oto kryteria projektowe Jestem zmierzające do:

Musi Haves:

  • nie mogę mieć użytkownik dodać moją uczelnię certyfikat CA do swojej przeglądarce
  • nie mogę mieć użytkownikowi dodawanie samopodpisanego certyfikatu wygenerowanego statycznie (w czasie mfg) do przeglądarki
  • Nie mogę pozwolić, aby użytkownik dodał dynamicznie wygenerowany (podczas rozruchu) samopodpisany certyfikat do swojej przeglądarki.
  • Nie mogę ustawić domyślnego protokołu HTTP i włączyć/wyłączyć przełączanie dla protokołu SSL. Musi to być SSL.
  • Zarówno okno osadzone, jak i klient przeglądarki internetowej mogą, ale nie muszą mieć dostępu do Internetu, więc należy założyć, że działają poprawnie bez dostępu do Internetu. Jedynymi głównymi urzędami certyfikacji, na których możemy polegać, są te dostarczane z systemem operacyjnym lub przeglądarką. Pozwala udawać, że ta lista jest "w zasadzie" taka sama w różnych przeglądarkach i systemach operacyjnych - to znaczy, że będziemy mieć współczynnik sukcesu około 90%, jeśli będziemy na nich polegać.
  • Nie mogę użyć operacji "przelatuj po nocy", tj. "Szybka rejestracja certyfikatu SSL Eddiego - z cenami tak niskich naszych serwerów MUSI zostać zhakowana! '

Miło bogatymi:

  • nie chcę użytkownika, ostrzegł, że nazwa hosta certyfikacie nie pasuje nazwę hosta w przeglądarce. Uważam to za miłe, ponieważ może to być niemożliwe.

Nie chcą:

  • Nie chcę wysyłać ten sam zestaw kluczy statycznych dla każdego pola. Rodzaj sugerowany przez listę "nie może", ale znam ryzyko.

Tak, wiem ..

  • mogę i nie zapewniają mechanizm użytkownikowi przesyłanie własnych cert/klucz, ale uważam ten „tryb zaawansowany”, a poza zakresem tego pytania. Jeśli użytkownik jest wystarczająco zaawansowany, aby mieć swój własny wewnętrzny urząd certyfikacji lub klucze zakupowe, są one niesamowite i kocham je.

Thinking Cap Czas

Moje doświadczenia z SSL został generowania CERT/klucze mają być podpisane przez „prawdziwego” korzenia, a także zintensyfikowanie moją grę trochę o to, że mój własny wewnętrzny CA , dystrybucja wewnętrznych "samopodpisanych" certyfikatów. Wiem, że możesz certyfikować łańcuchy, ale nie jestem pewien, jaka jest kolejność operacji. Czy przeglądarka "podchodzi" do łańcucha widząc prawidłowy główny urząd certyfikacji i widzi go jako ważny certyfikat - czy też musisz mieć weryfikację na każdym poziomie?

Przebiegłem przez opis intermediate certificate authority, który pozwolił mi zastanowić się nad potencjalnymi rozwiązaniami. I może pójść z „prostego rozwiązania” do „trybie koszmar”, ale byłoby to możliwe:

szalony pomysł # 1

  • Get pośrednią ośrodka certyfikacji cert podpisane przez „prawdziwe "CA. (ICA-1)
    • ROOT_CA -> ICA-1
  • Certyfikat będzie używane w czasie wytwarzania, aby generować unikalny parę organu certyfikat podzespół pośredni pozbawione hasła za pudełka.
    • ICA-1 -> ICA-2
  • Użyj ICA-2, aby wygenerować unikalny serwera cert/klucz. Zastrzeżenie tutaj, czy możesz wygenerować klucz/parę dla adresu IP (a nie nazwy DNS?)? tj. potencjalny przypadek użycia tego może polegać na tym, że użytkownik łączy się z pudłem początkowo za pośrednictwem http, a następnie przekierowuje klienta do usługi SSL, używając adresu IP w przekierowanym adresie URL (aby przeglądarka nie skarżyła się na niedopasowania). To może być karta, która sprowadza dom. Ponieważ połączenie SSL musi zostać ustanowione zanim jakiekolwiek przekierowania mogą się zdarzyć, widzę, że to także problem. Ale jeśli to wszystko działało w magiczny sposób, to czy mogę użyć ICA-2 do wygenerowania nowych par certyfikatów/kluczy za każdym razem, gdy skrzynka zmieni adres IP, aby po powrocie serwera WWW zawsze był "prawidłowy" klucz łańcucha.
    • ICA-2 -> SP-1

Ok, jesteś taki inteligentny

Najprawdopodobniej moje zawiłe rozwiązanie nie będzie działać - ale byłoby świetnie, gdyby tak było. Czy miałeś podobny problem? Co zrobiłeś? Jakie były kompromisy?

+1

Czy nadal możesz używać zwykłego protokołu HTTP do przesyłania prywatnego certyfikatu głównego lub samopodpisującego się serwera do przeglądarki użytkownika? Można to zrobić jako "jeden klik" (ok, nie jeden, ale bardzo łatwy) proces podczas instalacji serwera. Czy "BRAK HTTP, nie ma instalacji certyfikatu" naprawdę MUSI mieć? – blaze

+1

Niestety "must have" są oparte na negatywnych odpowiedziach na temat obecnego rozwiązania konieczności kliknięcia z samopodpisanym certyfikatem. Ale po rozmowie z kilkoma naszymi rzecznikami klienta jest to tak samo złe, jak zastrzelenie psa klienta. Jest to ból w dupie, a nie pomógł mu rosnący marudny stosunek Firefoksa do samopodpisanych certyfikatów. To trochę, co ja strzelam do gwiazd, musi być lepszy sposób. auth_digest go nie rozwiązuje, SRP-TLS jest coraz bliższy niektórym aspektom, ale nadal jest krwawieniem jeśli chodzi o wsparcie. – synthesizerpatel

Odpowiedz

6

Zasadniczo nie, nie możesz tego robić tak, jak masz nadzieję.

Nie jesteś pośrednim autorytetem SSL i nie możesz sobie na niego pozwolić. Nawet jeśli tak, to nie ma mowy, aby w piekle można było dystrybuować do konsumenta wszystko, co niezbędne do tworzenia nowych ważnych certyfikatów dla każdej domeny, domyślnie zaufanych we wszystkich przeglądarkach. Gdyby było to możliwe, cały system upadłby (nie to, że nie ma już problemów).

Zazwyczaj nie można uzyskać od władz publicznych podpisu certyfikatów wydanych na adresy IP, chociaż nic nie uniemożliwia tego technicznie.

Należy pamiętać, że jeśli rzeczywiście dystrybuujesz klucze prywatne w cokolwiek, oprócz zabezpieczonych przed manipulacją zabezpieczonych modułów kryptograficznych, twoje urządzenia nie są tak naprawdę zabezpieczone przez SSL. Każdy, kto ma jedno z urządzeń, może wyciągnąć klucz prywatny (zwłaszcza jeśli jest to hasło bez haseł) i wykonać prawidłowe, podpisane ataki MITM na wszystkie twoje urządzenia. Odradzasz przypadkowe podsłuchiwanie, ale o to chodzi.

Najlepszym rozwiązaniem jest prawdopodobnie uzyskanie i podpisanie certyfikatów dla ważnej poddomeny internetowej, a następnie uzyskanie odpowiedzi urządzenia na tę poddomanę. Jeśli jest to urządzenie sieciowe na ścieżce wychodzącej, prawdopodobnie możesz zrobić magię routingu, aby uzyskać odpowiedź dla domeny, podobnie jak w przypadku wielu systemów murem. Możesz mieć coś takiego jak "system432397652.example.com" dla każdego systemu, a następnie wygenerować klucz dla każdego pola odpowiadającego tej poddomenie. Mieć bezpośredni dostęp do przekierowania IP do domeny i albo skrzynka przechwytuje żądanie, albo wykonaj sztuczki DNS w Internecie, aby domena rozwiązała poprawny wewnętrzny adres IP dla każdego klienta. Użyj do tego jednej domeny hosta, nie udostępniaj jej innym witrynom firmowym.

Płacenie więcej za certyfikaty nie sprawia, że ​​są one mniej lub bardziej legalne. Do czasu, kiedy firma stała się głównym urząd certyfikacji, daleko jej jest od operacji "lataj po nocy". Powinieneś sprawdzić i sprawdzić, czy StartSSL jest odpowiednia dla twoich potrzeb, ponieważ nie pobiera opłat za każdy certyfikat.

+0

W kwestii "Tylko tak bezpieczny, jak fizyczny sprzęt", przyznaję, że zgadzam się i rozumiem ten aspekt. Pragnienie unikalnych kluczy polega na uniknięciu scenariusza, w którym jest to pojedynczy poprawny klucz/klucz wdrożony na każdym pudełku (co powoduje problem z niezgodnością hosta), ponieważ po uzyskaniu dostępu prywatnego z jednego pudełka można odszyfrować każde pudełko. Jeśli chodzi o pośrednie koszty certyfikacji - domyśliłem się, że tak właśnie jest. Chciałbym, żeby EFR założył urząd not-for-profit. – synthesizerpatel

+0

Jeśli szukasz taniego certyfikatu CA, chcesz StartSSL (Myślałem, że robisz kopie u nich wcześniej z rzeczami "fast eddie's ...", więc nie wspomniałem o nich). Ich model weryfikuje, a następnie pozwala wydać tyle certyfikatów, ile potrzebujesz. Twój przypadek użycia jest prawdopodobnie pogranicza ich warunków, ale myślę, że jest po stronie ok. Linii. Czy niestandardowy model subdomeny może działać w twoim przypadku użycia? –

+1

To jest martwe. Ponieważ nie ma rozwiązania technicznego, będziesz musiał sobie z tym poradzić w dziale sprzedaży lub wsparcia. Ktoś musi powiedzieć klientowi, jakie opcje ssl są w taki sposób, aby zachęcić go do uzyskania certyfikatu bez własnego podpisu. Heck, jestem pewien, że mógłbyś współpracować z kimś, kto zaoferowałby to w aplikacji i wziąłby kawałek sprzedaży jako odsyłacz. – NotMe

Powiązane problemy