V tuto chvíli nejste přihlášen do tohoto webu (nemáte přístup ke všemu).

Vítejte na mém blogu...

Pokud Vás můj web zaujal nebo Vám dobře slouží, můžete jej podpořit částkou 150,- na rozvoj konstrukcí, provoz webu a získat plný přístup k článkům. Pokud jste mně finančně podpořili, vyčkejte, prosím, na změnu vašich přístupových práv (maximálně do druhého dne - změnu nedělá robot, ale já :-) - vždy Vám v e-mailu poděkuji a potvrdím přístup. Konstrukce není povoleno bez mého souhlasu přejímat na jiné stránky nebo komerční využití. Je povoleno se pouze odkazovat na tento web a danou konstrukci. Pro více informací mne stačí kontaktovat. Zároveň nepřebírám jakoukoliv odpovědnost za chování zařízení a případné škody způsobené použitím těchto zařízení, ať by byly jakéhokoli rozsahu. Zařízení jsou určena pouze k užití pro vlastní potřebu. V konstrukcích je použit většinou program (program procesoru), na který se vztahují autorská práva. Jakýkoli prodej není bez mého souhlasu možný. Web používá pouze technické cookies, pokud s tím nesouhlasíte opusťte prosím můj web. Pro prohlížení (nebo stahování) příloh článků se musíte přihlásit nebo se nejprve zaregistrovat. Zpracování osobních údajů GDPR. Registrovaní uživatelé donate mají přístup seznam dárců. Můžete mě podpořit převodem na účet, přes PayPal nebo LiberaPay.

GitHubPrintablesGoogle PlayThingiverse

Upoutávka

Let’s Encrypt na Raspberry Pi

Pokud potřebujeme na našem Raspberry Pi používat šifrovanou komunikaci (například u webového serveru) je vhodné použít zabezpečenou komunikaci mezi serverem a klientem (webovým prohlížečem) -> a to celé světe div se zadarmo! Tento článek vychází z potřeby zabezpečit šifrovaně komunikaci pro zavlažování mé zahrady se systémem OSPy.

Co je šifrovaná komunikace? https://cs.wikipedia.org/wiki/Transport_Layer_Security

Let's Encrypt je certifikační autorita. Pomocí automatizovaného procesu je vše navrženého tak, aby se odstranil složitý proces manuální tvorby, ověřování, podepisování, instalace a obnovování certifikátu. Zdarma poskytuje doménově ověřené certifikáty. https://letsencrypt.org/

Co budeme potřebovat?

  • musíme vlastnit doménu (například pepa.melemaso.cz) -> doménu získáme například zde: https://www.wedos.cz/
  • zařízení na kterém chceme provozovat zabezpečené spojení (Linux v Raspberry Pi xx)
  • ideálně veřejnou IP adresu k routeru (nebo se propojit ze zařízení přes další služby jako je DDNS, ale jak toto provést není součástí tohoto článku)
  • přístup k našemu routeru (pro směrování portů)

Postup instalace a nastavení pro certifikační autoritu (Let’s Encrypt)

  • port 80 a 443 nesmí být na našem serveru používán jinou službou (OSPy - zalévač běží ve výchozím stavu na portu 8080 -> je to tedy v pořádku)
  • musíme mít u poskytovatele naší zakoupené domény nastaveno DNS směrování na veřejnou IP adresu našeho routeru (například: pepa.melemaso.cz -> směruje na 10.11.12.13. Pokud do prohlížeče zadáme adresu: https://pepa.melemaso.cz tak bude prohlížeč směrován na IP adresu routeru 10.11.12.13:443)


Krok 1 - Instalace Certbot

Přihlásíme se do Raspberry Pi přes SSH (například pomocí putty), provedeme aktualizaci systému a instalaci klienta Certbot.

  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get install certbot
  • sudo reboot

Krok 2 - Spuštění certifikátu

Certbot musí odpovědět na kryptografickou výzvu vydanou přes API serverů Let's Encrypt API, abychom dokázali, že ovládáme naši doménu. K dosažení tohoto cíle se používají porty 80 (HTTP) nebo 443 (HTTPS).

Nyní můžeme spustit Certbot, abychom získali náš certifikát.

Volbou --standalone řekneme Certbotu, aby zvládl komunikaci pomocí vlastního vestavěného webového serveru. Volba --preferred-challenges dává Certbotu pokyn, aby používal port 80 nebo port 443. Pokud používáme port 80 --preferred-challenges http. Pro port 443 by to bylo --preferred-challenges tls-sni. Nakonec parametr -d se používá k určení názvu domény, pro kterou požadujete certifikát. Můžete přidat více možností -d a tím pokrýt více domén v jednom certifikátu.

  • sudo certbot certonly --standalone --preferred-challenges http -d pepa.melemaso.cz

Při spuštění příkazu budeme vyzváni k zadání e-mailové adresy a souhlasu s podmínkami služby. Poté by se nám měla zobrazit zpráva informující o tom, že proces byl úspěšný a kde jsou naše certifikáty uloženy:

pi@ospy:~ $ sudo certbot certonly --standalone --preferred-challenges http -d pepa.melemaso.cz
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for pepa.melemaso.cz
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/pepa.melemaso.cz/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/pepa.melemaso.cz/privkey.pem
   Your cert will expire on 2020-01-13. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 

Ruční generování certifikátů (z nějakého důvodu, například testování).

  • sudo certbot renew

 

Krok 3 - Konfigurace naší aplikace

Konfigurace naší aplikace pro SSL je nad rámec tohoto článku, protože každá aplikace má odlišné požadavky a možnosti konfigurace, ale podívejme se, co pro nás Certbot stáhl. Certifikační autorita pomocí Certbotu uloží klíče do složky v mém příkladu etc/letsencrypt/live/pepa.melemaso.cz

Tato složka obsahuje klíče a certifikáty.

  • privkey.pem: soukromý klíč pro náš certifikát
  • fullchain.pem: soubor certifikátů používaný na většině serverů
  • chain.pem: používá se pro OCSP v Nginx >= 1.3.7
  • cert.pem: neměl by být používán

VAROVÁNÍ: NEMĚNÍME TYTO SOUBORY! Certbot očekává, že tyto soubory zůstanou v tomto umístění v pořádku a beze změn uživatelem.

Pro použití v systému zalévače OSPy (jeho webový server) je fullchain.pem jako "crt" soubor a privkey.pem je jako "key" soubor. V poslední verzi zálevače OSPy (od verze: 2.5.669  2019-11-07) je již cesta k certifikátům nastavena v závislosti na nastavení doménového jména (doménové jméno nastavíme v záložce "nastavení" systému OSPy).


Krok 4 - Zpracování automatických obnov certifikátů

Certifikáty jsou platné pouze po dobu devadesáti dnů. To má podnítit uživatele k automatizaci procesu obnovy certifikátů. Certbot se o to postará sám přidáním obnovovacího skriptu do souboru /etc/cron.d. Tento skript se spouští dvakrát denně a obnoví všechny certifikáty, které uplynou do třiceti dnů před vypršením platnosti.

Po obnovení certifikátů je nutné náš webový server restartovat, aby se načetly certifikáty nové. Buď provedeme restart serveru (služby) ručně (sudo service ospy restart), nebo využijeme možnosti restartovat server automaticky pomocí Certbotu. Chceme-li přidat soubor renew_hook pro automatizaci, aktualizujeme konfigurační soubor pro obnovu Certbotu. Certbot si pamatuje všechny podrobnosti o tom, jak jsme poprvé získali certifikát a po obnovení bude se stejnými možnostmi pracovat. Stačí přidat do souboru conf u certifikátu co se má provést.

  • sudo nano /etc/letsencrypt/renewal/pepa.melemaso.cz.conf

Přidáme do souboru conf:

  • renew_hook = systemctl restart ospy

Uložíme a zavřete soubor conf a poté spustíme běh Certbotu "nanečisto" pro ujištění se, zda je syntaxe v pořádku:

  • sudo certbot renew --dry-run

Pokud nevidíme žádné chyby je všechno připraveno.

 

IPv4 versus IPv6

Můj router není nastaven pro IPv6 (směrování) provoz a při generovaní certifikátu pomocí Certbotu se mi nedařilo certifikát na svém Raspberry Pi vygenerovat. Zjistil jsem, že Certbot preferuje komunikaci přes IPv6. Řešením bylo v mém případě zakázat v Raspberry Pi použití IPv6 a ponechat pouze IPv4. Následně vše proběhlo v pořádku.

  • sudo nano /etc/modprobe.d/ipv6.conf

# Don't load ipv6 by default
alias net-pf-10 off
#alias ipv6 off
# added to disable ipv6
options ipv6 disable_ipv6=1
# added to prevent ipv6 driver from loading
blacklist ipv6

Palubní počítač pro čtyřkolku - Arduino Atmega328P

IMG 20130531 132756

 

Byl jsem požádán kolegou o vytvoření ukazatele údajů na jeho čtyřkolku... V kostrukci je použit grafický LCD displej 122x32 bodů, na kterém se zobrazují provozní údaje: palubní napětí, otáčky a teplota.

Číst dál: Palubní počítač pro čtyřkolku - Arduino Atmega328P

Arduino - LED hodiny s DCF a RTC

IMG 20130517 082555

 

Říká se, že jak člověk stárne potřebuje větší a větší hodiny. LCD hodiny se dají pořídit například u Konráda mají ale tu nevýhodu, že není vidět na čísla pokud je tma... Rozhodl jsem se sestavit 7 segmentové LED hodiny "BIG" velikosti netradičního designu... Na displeji se zobrazují desítky a jednotky hodin, desítky a jednotky minut, desítky a jednotky vteřin, na  7 LED pod hodinami se zobrazuje den v týdnu. Velikosti zobrazovačů jsou: hodiny 120 mm, minuty 70 mm, vteřiny 35 mm.

Číst dál: Arduino - LED hodiny s DCF a RTC