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?
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
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