snaptec / openWB

openWB - die modulare Wallbox
https://openwb.de
GNU General Public License v3.0
340 stars 204 forks source link

OS Update needed for BMW SoC to keep on working #1595

Closed dj3mu closed 3 years ago

dj3mu commented 3 years ago

As mentioned already in PR https://github.com/snaptec/openWB/pull/1594 BMW is using a LetsEncrypt certificate for its server(s) hosting https://www.bmw-connecteddrive.com/api/vehicle.

Due to expiry of cross-signing certificate, an apt update && apt upgrade -y was necessary on my openWB to get trust anchors for the new LetsEncrypt root CA !

How will this be handled for openWBs without root access? I don't think any update UI feature is available for OS updates yet.

I think this will be an issue for many "older" openWBs.

Additional info: For me the apt upgrade installed the following packages:

apache2 apache2-bin apache2-data apache2-utils aspell curl ffmpeg klibc-utils libapache2-mod-php7.0 libaspell15 libav-tools libavcodec57 libavdevice57 libavfilter6 libavformat57 libavresample3 libavutil55 libcurl3 libcurl3-gnutls libdjvulibre-text libdjvulibre21 libfluidsynth1
  libgnutls30 libgssapi-krb5-2 libhogweed4 libk5crypto3 libklibc libkrb5-3 libkrb5support0 libnettle6 libopenexr22 libpam-systemd libpostproc54 libservlet3.1-java libsndfile1 libssl-dev libssl-doc libssl1.0.2 libssl1.1 libswresample2 libswscale4 libsystemd0 libtag1v5 libtag1v5-vanilla
  libudev1 openssl php7.0 php7.0-cli php7.0-common php7.0-curl php7.0-gd php7.0-json php7.0-opcache php7.0-readline php7.0-xml python-pil python-xdg python3-pil python3-xdg systemd systemd-sysv udev

I didn't do any research on which package actually brings the updated root CAs for PHP CURL (good candidates are probably openssl or curl or the php7.0-*).

benderl commented 3 years ago

Updating installed packages couold be done in atreboot.sh. We already learned the hard way how to spawn a new process which does not get killed if the parent one dies. So this should work in normal booting state and after triggering an update.

To prevent not needed updates, I would suggest to set a flag in the update settings to do this once. Otherwise package updates are triggered on every boot.

snaptec commented 3 years ago

Shouldn't downloading the root CA like mentioned here https://www.stephenwagner.com/2021/09/30/sophos-dst-root-ca-x3-expiration-problems-fix/ fix this?

DetMoerk commented 3 years ago

Das Problem ist wohl eher, dass die openWB beim API Zugriff auf ein Problem stößt, wenn das entsprechende Zertifikat nicht in der Chain ist. Ich würde auf das Paket openssl tippen, was aktualisiert werden muss.

DetMoerk commented 3 years ago

Kleiner Test von meinem Raspi4 unter einem recht aktuelle Buster pi@raspi4:~/xxx $ curl https://www.bmw-connecteddrive.com/api/vehicle pi@raspi4:~/xxx $

Jetzt die openwb mit dem Stretch aus eurer Auslieferung

pi@openWB:~/xxx $ curl https://www.bmw-connecteddrive.com/api/vehicle
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
pi@openWB:~/xxx $
DetMoerk commented 3 years ago

Vermutlich reicht auch das Paket ca-certificates. Nee reicht nicht. Musste auch noch curl aktualisieren. openssl hat es auch nicht getan.

Auf nem Test Raspi

DetMoerk commented 3 years ago

https://openwb.de/forum/viewtopic.php?f=12&t=4112

Vermute das Thema breitet sich jetzt aus.

VG Det

dj3mu commented 3 years ago

@DetMoerk Vielen Dank für die Untersuchungen welche Pakete nötig sind. Dazu hatte ich gestern keine Zeit.

Mein Vorschlag wäre in atreboot.sh dann das folgende Kommando so hinzuzufügen wie von @benderl in https://github.com/snaptec/openWB/issues/1595#issuecomment-931975324 beschrieben (Ausführung im Hintergrund):

sudo apt-get -qq update && sudo apt-get -qq install -y ca-certificates openssl curl

Möglicherweise ginge noch weniger wenn man explizit dpkg-reconfigure ca-certificates aufruft.
Aber einmal ausgeführt wird es aufwändig zu testen da explizites Downgrade von Paketen eine eher komplizierte Angelegenheit ist. Wenn also obiges funktioniert sollten wir es dabei lassen. Das Risiko, dass da noch was unerswünschtes mit kommt dürfte sehr gering sein.

Nebenbei: Das komplette "apt upgrade" hat bei mir auch keinerlei Probleme verursacht. Aber ich halte es dennoch für besser, nur das zu aktualisieren, was wirklich nötig ist um die neuen Root-Zertifikate zu bekommen.

snaptec commented 3 years ago

Ist in der nightly gefixt: https://github.com/snaptec/openWB/commit/a05d6b98616996dd1a436c548e5882d9ef9f6089