Turvallinen Web-palvelu Node-RED:n avulla

Comments Off on Turvallinen Web-palvelu Node-RED:n avulla

Node-RED:n avulla voidaan tehdä Dashboard tyyppisiä pieniä Web-palveluja, aika nopeasti.
Esimerkiksi; https://koodinkutoja.com/node-red-ja-mariadb-sql-kysely/

Mikäli oma web-sivu halutaan laittaa tarjolle Internettiin eli ulkomaailmaan, pitää sitä ennen Node-RED:lle tehdä hieman tietoturva määrittelyjä. Nykyisin käytetään Web-sivujen turvaamiseen https / ssl / tsl salausta. Internet selainten valmistajat ovat ottaneet nykyisin tiukemman kannan tietoturvan suhteen, ja alkaneet hylkiä vanhoja salaamattomia http yhteyksiä. Tämä on ihan hyvä asia ja parantaa tietoturvaa. Tietoa ei ole tällöin enää niin helppoa salakuunnella, kun se liikkuu internet verkon solmupisteiden kautta, koneelta toiselle salattuna liikenteenä.

Kokeillaan seuraavaksi kuinka voidaan määrittää esimerkiksi meidän Raspberry Pi tietokoneelle aikaisemmin asennetulle Node-RED kehitysympäristölle, että pitää käyttää salattua https yhteyttä. Tällöin se on turvallisempi käyttää ja sallia vaikkapa salasanasuojattu yhteys, kodin ulkopuolelta, ulkoverkosta käsin.

Kokeillaan käytännössä, miten voisi katsella esimerkiksi kasvihuoneen lämpötilatietoa ja ilmankosteutta vaikkapa kännykän selaimella, internetistä käsin. Voidaan vaikka kokeilla ohjata kastelupumppu päälle ja pois tai tuuletus päälle ja pois, Web-sivulle lisättyjen toimintopainikkeiden avulla.

Aikaisemmissa postauksissa käsiteltiin jo hieman Node-RED:iä ja kuinka sen avulla voidaan kehittää Raspberry Pi tietokoneella. Päivitetään ensin uusin versio käyttöön ja luodaan .pem sertifikaatit ja enabloidaan https ssl salaus.

Ajetaan seuraavia komentoja Raspberry Pi:n terminaalissa, (päivitetään linux paketit, stopataan node red, päivitetään se ja npm):
sudo apt-get update
sudo apt-get upgrade
sudo systemctl disable nodered.service
node-red stop
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
sudo npm install -g n
sudo n latest
cd /home/pi/.node-red
sudo npm rebuild
sudo npm install -g node-red-admin

Sitten jatketaan kokeilua eteenpäin ja generoidaan .pem sertifikaatit. No nyt jos kotiverkon kautta olisi pääsy johonkin internetin Domain palveluun, sertifikaatti kannattaisi luoda tuolle domain nimelle, tällöin Internet selaimet osaisivat paremmin toimia ja luokitella Web-sivun varmasti turvalliseksi. Mutta jos ei ole kotiverkosta pääsyä domain palveluun, voi tässä jatkaa eteenpäin ilmankin. Ja tehdä sertifikaatit vaikka uudelleen myöhemmin, kun on ensin testattu, että node-red palvelu muuten toimii ja on käytettävä, vaikkapa mobiili laitteella.

Komentoja Raspberry Pi:n terminaalissa:
openssl genrsa -out privatekey.pem 2048
openssl req -new -key privatekey.pem -out private-csr.pem
openssl x509 -req -days 365 -in private-csr.pem -signkey privatekey.pem -out certificate.pem

Sertifikaatteja luotaessa, ssl työkalu kyselee joitain tietoja, joihin voi täyttää “jotain”, tai painella Enter-painikkeella eteenpäin. Jatketaan ja luodaan tiedosto, “certificate.pem”.

Tällä komennolla luodaan “hash kryptatut salasanat”, “Pää-Käyttäjä”:lle ja “Perus-Käyttäjä”:lle.

node-red-admin hash-pw

Työkalu luo annetuista salasanoista kryptattuja sekavia merkkijonoja, jotka kannattaa pistää itselle talteen varmaan paikkaan, eikä luovuttaa niitä muille. Seuraavaksi voidaan mennä nano teksti editorilla editoimaan Node-RED:n asetustiedostoa:

nano settings.js

Tässä settings.js tekstitiedostossa määritellään käyttäjänimet ja salasanat, Web-palvelulle.
Sekä pakotetaan https käyttöön.

Painellaan delete näppäimellä pois // kommenttimerkit, eli otetaan https asetukset käyttöön asetustiedostossa.
RequireHttps true on tärkeä valinta, se pakottaa https salatun liikennöinnin käyttöön, vaikka yrittäisi yhdistyä vanhalla http osoitteella raspberry pi:lle.

Portti 1880 on “defaulttina” käytössä, mutta sen voi vaihtaa muuksikin tässä kohtaa, jos näin tahtoo tehdä.
Kun node red myöhemmin käynnistetään, selaimen osoiteriville kirjoitetaan esimerkiksi;

https://raspberry-pi-ip-osoite:1880 (Admin editori) ja https://raspberry-pi-ip-osoite:1880/ui (Dashboard oma Web-palvu)

Jos vaihtaa porttia asetustiedostossa, käytettävä portti vaihtuu tietenkin sitten myös web-selaimessa.

Node-RED Web-palvelu joka pyörii Raspberry Pi tietokoneella, on nyt turvallisempi.
Ja on mahdollista sallia sen käyttäminen mahdollisesti jopa ulkoverkosta käsin.
Kokeillaan sitä seuraavaksi.