Tag Archives: linux

Let’s encrypt

Sinds gisteren is Let’s Encrypt in public beta en daarmee dus ook voor iedereen beschikbaar. Nou zal dat niet iedereen direct wat zeggen, maar ik denk dat dit een ontwikkeling is die een grote verandering op het internet met zich mee zal brengen. Nou betreft het wel een verandering die voor 90% van de mensen niet zullen merken, maar dat maakt het niet minder belangrijk.

letsencrypt-logo_0

Wat veel mensen niet beseffen is dat verkeer van en naar een website in principe voor alle “hops” tussen jouw pc en de server vrij in te zien is. Voor banken zijn we al wel gewent aan het feit dat er een groen slotje bij de domeinnaam moet staan, maar bij veel andere websites denken we daar niet over na. Het gebruik van encryptie lost dat probleem op, het verkeer tussen de client en de server is met certificaten beveiligd en voor de tussenliggende systemen niet in te zien.

Het probleem is echter dat de certificaten hiervoor geld kosten, alhoewel ze niet heel duur zijn (12 euro per jaar grofweg) wordt het voor veel content niet echt als noodzakelijk gezien om de bezoeken te beveiligen. De complexiteit van het onderhouden van deze certificaten is echter een groter probleem. Niet alleen is het veel handwerk om een certificaat goed op je eigen server te installeren, maar het is ook nog eens iets wat je niet moet vergeten bij te houden (wederom handmatig).

Let’s encrypt brengt hier verandering in, niet alleen zijn de certificaten gratis, maar er wordt een tool meegeleverd die de hele aanvraag en implementatie voor je uitvoerd. Daarbij zorgt de tool ook voor een tijdige vervanging van de certifcaten wanneer de einddatum in de buurt komt (een “le” certificaat is 90 dagen geldig).

Het draaien van de tool geeft een wizard die er grofweg zo uit ziet:

Certificaat Aanvraag

En de rest gaat eigenlijk vanzelf, je kan nog even aangeven of de site zowel via HTTP als HTTPS bereikbaar moet zijn of enkel via HTTPS en dat was het dan.

Wanneer we dan controleren of het certificaat goed geïmplementeerd is zien we dat ook dat helemaal in orde is:

Certificaat Controle

Het mooie aan de automatische implementatie is ook dat er eigenlijk niets in de weg staat om dit ook bij shared hosting oplossingen te implementeren. Het gehele traject kan volledig geautomatiseerd worden en een gebruiker hoeft er dus helemaal niets aan te doen. Wat misschien wel nog een blokkade kan zijn is dat voor een groot aantal providers een aardig stukje omzet kan wegvallen doordat ze nu geen tussenpartij meer hoeven te zijn tussen de grote certificaat verstrekkers en de “consument”.

Voor het testen van dit soort zaken gebruik ik overigens meestal een VM bij Digital Ocean, het grote voordeel is dat je deze per uur betaald, wat een root voordeel is voor het even snel testen van nieuwe dingen. De bovenstaande link is overigens een referral link, die levert je 10 dollar aan start tegoed op (1 maand voor een server met 1 core en 1 GB ram). Mocht je mij geen extra tegoed gunnen kan je natuurlijk altijd zelf even het adres invullen als je een account wil :). De gebruikte testomgeving heb ik gebouwd op Ubuntu 15.10 met Apache, PHP en MySQL.

 

 

Joe syntax highlighting aanpassen

Soms loopt je tegen van die problemen aan die je eens in de zoveel tijd tegen komt, maar die net niet vaak genoeg voorkomen om de oplossing te onthouden.. In dit geval is het de kleur van de PHP Syntax Highlighting in Joe via Putty (volg je het nog?)

Standaard is de instelling voor “Constant_sq” blauw, donkerblauw om precies te zijn, en dat leest toch net niet lekker op een zwarte achtergrond:

Joe PHP Syntax

Dus daarom heb ik het liever zo:

Joe PHP Syntax aangepast

Gezien ik dus iedere keer weer op zoek moest naar hoe ik dit definitief aan kon passen (dus niet iedere keer handmatig een andere syntax highlighting selecteren) heb ik besloten er maar een korte blogpost aan te besteden zodat ik de volgende keer niet zo ver hoef te zoeken :).

De configfile staat op ubuntu op deze locatie:

sudo joe /usr/share/joe/syntax/php.jsf

Vrijwel boven in de config staat dit stuk:

# Define colors
=Idle
=Comment green
=Constant cyan
=Constant_sq blue
=Escape bold cyan
=Keyword bold
=Var red
=Methods bold

Je wil hier de dikgedrukte regel aanpassen, in mijn voorbeeld heb ik er dit van gemaakt:

# Define colors
=Idle
=Comment green
=Constant cyan
=Constant_sq yellow
=Escape bold cyan
=Keyword bold
=Var red
=Methods bold

Lampen aansturen deel 2

Technisch was het niet bijzonder complex om het aansturen van de KlikAanKlikUit schakelaars werkend te krijgen, het installeren van Raspbian duurder langer dan het werkend maken van de aansturing.

De grotere uitdaging zat in  het maken van een beetje normaal werkende “webinterface”, en alhoewel het er niet uit ziet heb ik nu wel een werkend systeem om op alles wat een website kan openen thuis de lampen te kunnen schakelen.

screenshot

Er wordt ook direct nog wat data opgehaald uit een losse database die ik al een paar maanden aan het vullen ben met statistieken over ons gas en stroomverbruik. Sinds kort zit daar ook een tabel met weergegevens bij zodat ik ook nog een patroon zichtbaar kan maken met bijvoorbeeld de invloed van het weer op het gasverbruik. Of gevolgen van het wisselen van zomer en wintertijd op stroomverbruik en dergelijken. Overigens zit er een foutje in het bovenstaande screenshot, het stroomverbruik moet nog even door 10 gedeeld worden :).

Ondanks dat het geheel alleen intern op mijn eigen netwerk beschikbaar is heb ik toch wel wat aandacht besteed aan het “beveiligen” van het geheel zonder dat dit hinder oplevert in het gebruik. Effectief doet de pagina niets anders dan een paar variabelen uit de URL pakken (locatie en status) en aan de hand daarvan wordt er middels een php shell_exec een script aangeroepen dat de schakeling uitvoert. Gezien de gebruikte variabelen met wat geluk en probeerwerk dus misbruikt zouden kunnen worden voor kwalijkere zaken wordt de input vergeleken met de beschikbare opties, als het in orde is wordt het script aangeroepen, klopt het niet gebeurt er verder niets. Dit voorkomt ook meteen dat een foutje van mijn kant niet direct te grote gevolgen heeft ;).

Wat ik nu nog wil maken is dat ik via dezelfde webpagina ook de mogelijkheid krijg om schema’s te maken die de lampen op gezette tijden automatisch aan of uit kunnen zetten.