Skocz do zawartości

SSL/TLS w rozwiązaniu produkcyjnym IoT (ESP-IDF)


Pomocna odpowiedź

Napisano

Zapytam, może ma ktoś doświadczenie jak powinno się obsługiwać certyfikaty w rozwiązaniu produkcyjnym?

Robię projekt w Azurze, o którym kiedyś wspominałem i znalazłem informację, że zdarzyło się, że certyfikaty utraciły ważność bo Root CA stracił uznanie. Stąd moje wątpliwości.

Na ten moment, certyfikat serwera do którego się łączę biorę poleceniem OpenSSL i wyciągam plik PEM wymagany w funkcjach ESP_IDF. Czy jest sens próbować robić to w runtimie gdy pojawi się problem z autoryzacją?

Tak się też zastanawiam jaki jest sens tych certyfikaów. W analogicznym kodzie w Pythonie nie ma tego albo jest to jakoś zautomatyzowane. Skoro jest to publicznie dostępne to nie da się jakoś tego uprościć?

 

14 minut temu, Gieneq napisał:

W analogicznym kodzie w Pythonie nie ma tego

Ale w tym mikrym wężyku na mikre kontrolery czy w normalnym Pythonie na normalnej maszynie (czyli od RPi Zero W w górę)?

Normalny moduł Pythona nie wie nic o certyfikatach (chyba że mu podsuniesz jakiś swój) bo korzysta z systemowych bibliotek ssl. Raczej nie widzę sensu wrzucania wszystkich CA na świecie do ESP...

 

  • Pomogłeś! 1

@ethanak hej, no właśnie. Python na komputerze ma swoją bazę certyfikatów. Porównuję to z Pythonem bo przychodzą do mnie marudy i marudzą, że oni w Pythonie nie podają certyfikatów i działa.

Mam taki pomysł, żeby odpalić na własnym serwerze skrypt do monitorowania certyfikatu Azura. Gdy się zmieni wystawiać go na w endpoint z dostępem HTTP ale z np z loginem/hasłem, które będą zaszyte w urządzeniu. Wtedy urządzenie jak wykryje problem będzie próbowało ściągnać nowy plik PEM z tego endpointa. Co o tym myślisz?

5 minut temu, Gieneq napisał:

Gdy się zmieni wystawiać go na w endpoint z dostępem HTTP ale z np z loginem/hasłem

A dlaczego nie z własnym certyfikatem?

 

  • Pomogłeś! 1
(edytowany)
7 minut temu, Gieneq napisał:

Da się ustawić żeby był bezterminowy? 

AFAIK Nie da się, ale da się ustawić na pier[cenzura] lat w przyszłość 😉 

Edytowano przez H1M4W4R1
  • Lubię! 1

20 lat da radę.

@H1M4W4R1 a to w ogóle da radę 😅

A tak ciągnąć temat. Skąd komputer ma bazę certyfikatów, skoro się coś zmieni i dalej może się do tego podłączyć? Ma listę wszystkich root CA i uderza do nich?

@Gieneq troszkę offtop, wiesz jak uruchomić mqtts na esp32 w esp idf? Tak tylko pytam bo jak coś założę później osobny wątek eot 

Podobne pytanie zadałem na forum Espressifa. Dostałem odpowiedź, że ESP-IDF ma listy certyfikatów CA. Pełna lista zajmuje z 200kB, jest do aktywacji w menuconfig:

image.thumb.png.a673ddf4a5d995fcb5ff5feeb15d65dc.png

Wtedy użycie esp_crt_bundle załatwi sprawę:

    // mqtt_cfg.broker.verification.certificate = (const char *)cfg->broker_certificate;

    mqtt_cfg.broker.verification.crt_bundle_attach = esp_crt_bundle_attach;

Można też dodać własny certyfikat, np. do połączenia z własnym serwerem. Pozostaje jeszcze kwestia aktualizacji oprogramowania. W dokumentacji jest info, że trzeba przewidzieć wycofanie certyfikatu:

Cytat

Trusting all root certificates means the list will have to be updated if any of the certificates are retracted. This includes removing them from cacrt_all.pem.

Czyli bez OTA się nie obędzie.

  • Lubię! 2

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...