Verslag van de bijeenkomst van JUG Utrecht 10 oktober 2016

Tegen de twintig bezoekers! En we hebben een internationaal gezelschap deze keer, want onze groep is vanavond uitgebreid met Peter uit Belgie (welkom Peter!). Ook voor het eerst is Co uit Culemborg.

Genoeg luisterende oren voor Jisse...

Volgende bijeenkomsten

  • 14 november: Rene Kreijveld over Joomla Best Practices
  • 12 december: Michiel Verhoef over Vagrant

Joomla! Nieuws

Joomla 3.7 is in aantocht, met een aantal fijne nieuwe features, zoals artikelen direct aanmaken vanuit het individueel-artikel-menu-item en een versimpelde manier om talen te installeren. En - maar dat is nog niet zeker - je kunt de editor interface aanpassen. Echt interessant is de nieuwe router, die in Joomla 3.7 nog geen volledige functionaliteit heeft (in 3.8 ook niet trouwens, dat gebeurt pas in Joomla 4). Hij zal er wel in zitten, maar standaard wordt de oude gebruikt. want het kan gebeuren dat urls niet meer werken als je de nieuwe gebruikt. Wat is de meest zichtbare verbetering van die nieuwe router: nou, uiteindelijk (nu dus nog niet) wordt-ie zo ingesteld dat die nare artikel-IDs weg zijn uit de urls van artikelen zonder menulink.

Custom fields zouden erin zitten, maar schijnen toch pas vanaf Joomla 3.8 te komen.

In de PC Active staat een feuilleton over Joomla, door Sander Potjer. Hetzelfde als al in het handboek staat, maar toch leuk.

Ben je trots op wat je gebouwd hebt, showcase je site dan op de officiele Joomla showcase website: https://showcase.joomla.org/.

Zin om te helpen Joomla te verbeteren? Kom patches voor bugs testen tijdens de Pizza, Bugs & Fun in Eindhoven! Het is leuk, het is gezellig, je ontmoet andere Joomlers en het is niet moeilijk: wie kan lezen, kan het. Hier vind je meer informatie en kun je je aanmelden: http://www.joomlacommunity.nl/nieuws/joomla-in-nederland/1099-pizza-bugs-a-fun-eindhoven.html

Ander nieuws

Voor de Piwik gebruikers: er is een security lek, je moet updaten.

Laatste versies

  • Joomla 3.6.4 (security fix, volgt op 3.6.3 die medio oktober uitkwam)
  • Akeeba Backup 5.2.3
  • Admin Tools 4.0.1
  • JCE 2.5.28
  • RSForm Pro 1.52.4

IMG 3628

Presentatie Jisse Reitsma: Joomla & SSL

Jisse is programmeur, trainer, en ondernemer. Hij is oprichter van Yireo en auteur van het boek Programming Joomla Plugins. De afgelopen tijd heeft hij veel activiteiten georganiseerd en gedaan rondom Magento, dus een Joomla-activiteit als vanavond is een mooie afwisseling. Jisses missie is technologie openen voor anderen, en alles wat simpel is moeilijk maken.

De opbouw van vanavond:

  • Basis van SSL
  • Gebruik in Joomla
  • Geavanceerd

De noodzaak om over te gaan op SSL is steeds groter; Google Chrome begint binnenkort met waarschuwen als een site niet SSL is.

In dit verslag staat veel, maar nog lang niet alles wat Jisse heeft verteld. Met de slides erbij krijg je wel een aardig compleet beeld, en die staan hier: http://slides.yireo.com/yireo/ssl

Basis van SSL

HTTPS is eigenlijk niets meer dan zeggen dat we het webverkeer willen versleutelen. Alles wat je daarvoor gebruikt moet hetzelfde protocol ondersteunen, zodat het blijft werken. SSL is dat protocol, en het is aan continue verbetering onderhevig (vandaar dat er steeds nieuwe versienummers komen).

SSL is dus een protocol, een omschrijving hoe die versleuteling moet gaan werken. Er zijn meerdere interpretaties van verschillende makers. OpenSSL, een paar decennia geleden ontstaan, is de standaard geworden. De meeste servers met SSL support doen dat dankzij OpenSSL. Er is ook LibreSSL, dat bepaalde manco's van OpenSSL niet heeft, maar Jisse weet niet of er veel hosters zijn die dat gebruiken.

SSL staat voor Secure Socket Layer. Het gaat om de communicatie van de ene socket (combi van IP-adres en poort) met de andere, internetverkeer dat wordt beveiligd door middel van een set van standaarden. Een SSL certificaat toont aan dat degene met wie jij communiceert - de website - te vertrouwen is.

Alle verschillende algoritmen zijn bedoeld om de authenticiteit te bewaken en autorisatie op gang te brengen; daarna wordt er een heel stevige encryptie op gezet.

SSL en encryptie

Er zijn twee typen encryptie

  • Authenticatie van server (via certificaat)
  • Encryptie van verkeer (key-exchange)

Factoren:

  • Aantal bits: hoe meer hoe moeilijker te kraken, dus wordt elke keer vergroot om het moeilijker te maken. We zitten nu op 2048.
  • Ciphers (algoritme voor encryptie en decryptie):
    • Diffie-Hellman (sleuteluitwisselingsprotocol)
    • HMAC (TLS)
    • SHA / MD5: verouderde protocollen (de oorspronkelijke versies van SSL maakten hier gebruik van, en zijn daarmee dus achterhaald geraakt; vervolgens kwam men erachter dat SSL zelf achterhaald was, en dus is er geen nieuwe SSL versie gekomen maar is het nieuwere protocol TLS)

Het draait dus allemaal om versleutelingen en om mensen die niet stoppen tot ze het hebben gekraakt.

Er zijn twee stappen: eerst authenticatie, dan encryptie. Authenticatie doe je op basis van dat je de andere partij vertrouwt, en dat vertrouwen komt van het certificaat.

Certificate Authorities (CA)

De certificaten worden verstrekt door een certificaatautoriteit. Daar is een hiërarchie in. Bovenaan staan de Root CAs die bekend zijn in je eigen browser. Dat zijn allemaal bedrijven die samenkomen in één organisatie in Amerika. In opdracht van die bedrijven werken de Intermediate CAs, die zijn bekend bij de Root.

Je kunt ook je eigen certificaat bouwen; maar daarvan zegt de browser vervolgens: "dit is een certificaat dat je niet kunt vertrouwen". Theoretisch kan het een middel zijn om toch iets via SSL te beveiligen, zonder dat je daarvoor hoeft te betalen. Een self-signed certificaat is bekend bij niemand behalve bij jou. Er moet dus iemand zijn die zegt dat dat klopt, ook al is de techniek hetzelfde. Dus het is wel veilig; je zou dus je eigen backend kunnen beveiligen met een eigen SSL certificaat, dan is het veilig maar dan krijg je een waarschuwing. Zelf-gesigneerde certificaten zijn een doorn in het oog van de industrie, want de hiërarchie wordt overgeslagen en er wordt geen geld verdiend.

Er bestaat ook zoiets als FreeSSL maar dat is met Let's Encrypt eigenlijk overbodig geworden.

Wat heb je nodig?

  • Een SSL certificaat dat op een bepaalde manier wordt aangevraagd.
  • Een common name die gelijk is aan je domeinnaam; het certificaat is daarna hard gekoppeld aan jouw domeinnaam
  • Geldig voor een of meerdere domeinen (wildcard)
  • Geldig tot een bepaalde datum (let op: stel dat je de mogelijkheid hebt om een certificaat aan te vragen voor meerdere jaren, dan moet je wel zeker weten dat je certificaat niet binnen de kortste keren al verouderd is - dan schiet je je doel voorbij)
  • Soms KvK check nodig
  • Derde partij (Seller: Networking4ALL, Vendor: GeoTrust, GlobalSign, Comodo, Thawte, TrustWave)

Eigen IP adres: was een lange tijd voorwaarde om een certificaat te hebben, want op shared hosting, kon je geen eigen SSL certificaat hebben. Het is achterhaald door middel van een techniek, SNI, Server Name Indication, dit maakt het mogelijk voor de server om aan één IP-adres en poort (poort 443) verschillende websites met SSL beveiliging te verbinden. Je hosting moet het dan wel ondersteunen.

Gebruik in Joomla

In de algemene instellingen heb je twee opties: forceer SSL voor backend of voor de hele website. In dat laatste geval garandeert Joomla dat de hele website via SSL kan worden benaderd. Jisse heeft ooit een plugin geschreven waarmee je kunt configureren dat iedere pagina SSL is, met support voor gedeeltelijke SSL en HSTS. Maar sinds Google vindt dat alles SSL moet zijn, heeft gedeeltelijk SSL eigenlijk geen bestaansrecht meer. Behalve bij onderdelen die van derde partijen ingeladen worden, dus daar zou je de plugin nog wel voor kunnen gebruiken.

HTTP Strict Transport Security (HSTS) is een beveiligingsmechanisme. Het is een soort contract dat je sluit met de rest van de wereld, waarin je zegt dat je website volledig SSL is. Het laat toe dat webservers vereisen dat webbrowsers alleen beveiligde HTTPS-verbindingen kunnen gebruiken, en nooit alleen HTTP. Als je SSL niet meer werkt omdat je certificaat verlopen is, kun je niet meer terug naar HTTP. De plugin van Jisse heeft een HSTS vlaggetje om te garanderen dat overal SSL is. Google zoekt naar bewijzen dat jouw website veilig is, als je HSTS instelt op 0 dan zeg je dat.

SSL in je eigen code

Het is eigenlijk iets heel simpels, je gebruikt het of je gebruikt het niet. Het is dus belangrijk dat je zeker weet of alle extensies compatible zijn met SSL. Check dat door je website te bezoeken met https. Wat je in elk geval niet wilt, is een mixed-content foutmelding: this page contains both secure and non-secure items. Dat zijn fouten in Joomla-extensies. Zorg dat je de foutmelding zichtbaar hebt, dan weet je direct wat er gaande is. Waar het gaande is, dat is een zoektocht, maar als je het vindt kun je het fiksen.

Wees je bij het bouwen bewust dat niet iedere extensieontwikkelaar checkt of het goed werkt onder http en https.

Veel voorkomende fouten met SSL

This connection is untrusted: er is wel een beveiligde verbinding, maar de beveiliging is niet op orde (negen van de tien keer een verouderd SSL certificaat, of bij een self-signed certificaat).

Geavanceerd

Eigenlijk zou je natuurlijk zelf op de hoogte moeten blijven van de situatie rond SSL, zodat je ook weet of je certificaat nog veilig is. Jij bent verantwoordelijk dat het certificaat tijdig wordt vernieuwd en dat het nog veilig is. Daarom is Let's Encrypt begonnen. Dat is een samenwerkingsverband van een aantal technologiebedrijven (o.a. Google, Mozilla, IBM etc). Doel is SSL certificaten gratis laten zijn, want als het hele web volgens SSL moet draaien, dan kun je het niet maken om daar geld voor te laten betalen. Bovendien moet het aanvragen makkelijker zijn, en het vernieuwen ook. Let's Encrypt maakt dat mogelijk: je kunt automatisch een certificaat ophalen dat op de juiste plek wordt opgenomen en waar nodig de certificaten elke drie maanden automatisch laten vernieuwen.

SSL Certificaat aanmaken

Je kunt je eigen certificaat aanmaken, opsturen naar een provider en dan vragen om een echt certificaat (kan betaald en gratis, via FreeSSL en StartSSL). Daarvoor moet je een procedure doorlopen: een Certificate Signing Request aanvragen. Deze procedure kun je gebruiken voor self-signed certificaten. Het installeren is complex, soms is er een controlepaneel met stappen, anders moet het met commando's. Let's Encrypt versimpelt dat proces. En is gratis.

Waarom zou je Let's Encrypt gebruiken?

  1. Als de grote jongens besluiten dat SSL overal moet komen, dan komt het er.

  2. Wil je er geen geld voor betalen, dan is Let's Encrypt het initiatief dat ervoor zorgt dat het overal geïmplementeerd kan worden; dus je moet je hoster vragen wanneer ze Let's Encrypt gaan ondersteunen, want ze dwingen je om geld te betalen voor iets waar de groten der aarde van vinden dat je er geen geld voor moet betalen

Renew is wel elke drie maanden, maar op het moment dat Let's Encrypt het nodig vindt, kan het ook al eerder vernieuwd worden. Dus als er een ontwikkeling is, dan verandert het automatisch en hoef je geen drie maanden te wachten.

Extended Validation

Voor zijn bedrijfswebsite maakt Jisse gebruik van Extended Validation (EV)

Daarvoor krijgt hij validatie van zijn bedrijf bij de CA, een aantal gegevens is gecheckt (KvK, BKR en juridische issues).

Google maakt geen verschil tussen soorten SSL, dus Let's Encrypt en EV zien ze als even veilig.

Is SSL wel veilig?

Jisse is een aantal jaren geleden naar een hackersconferentie geweest, daar waren heel veel hackers die een Root CA wilden hacken, want als je dat kunt, dan kun je alles hacken. Het is nu heel stil op dat gebied, dus of het is gelukt, of juist niet.

Als je een SSL certificaat aanvraagt, zet je een verbinding op met een CA, maar is dat wel een CA en niet iets ertussenin?

Decryptie-aanvallen werden actueel met Heartbleed-achtige toestanden. Er zijn uiteraard veel security problemen, ook in SSL zelf. De afgelopen jaren kwam naar voren dat OpenSSL heel veel gaten bevatte. LibreSSL is begonnen door de mensen die de gaten in OpenSSL hebben ontdekt. Ergens in de komende tijd kunnen we een omslag verwachten. Let's Encrypt maakt gebruik van onderdelen van OpenSSL. Als alles overgaat naar LibreSSL, zal Let's Encrypt als eerste overgaan.

Een certificaat gegenereerd door OpenSSL blijft werken onder LibreSSL.

IMG 3627

Dokter Joomla

Vraag: wat is jullie ervaring met gebruikers die zelf de content bijhouden op het gebied van afbeeldingen en links?

Antwoord: Gebruikers die enthousiast worden plakken overal plaatjes in. Maar je kunt ze ook dwingen (of overtuigend adviseren) om Afbeeldingen en Links te gebruiken

Vraag: Ik had iemand die een Word-document van vier verdiepingen (ingedeeld met allerlei niveaus) met JCE in Joomla wilde plakken, maar JCE maakte daar een puinhoop van. Uiteindelijk heb ik dat helemaal via html ingevoerd, maar ik hoop niet dat er iemand enige wijzigingen gaat aanbrengen in dat document. Hoe kan ik het verder beveiligen, zodat er niemand meer bij kan? Kan JCE alles aan, ook trapsgewijze opmaak? Want daar lijkt het niet op.

Antwoord: Zet het in een aparte categorie die alleen door bepaalde groepen bewerkt kan worden, ACL manager gebruiken. En JCE zou het aan moeten kunnen.

Vraag: Ik heb een site voor mijn neus, een 3.4 die gehackt is en voor het laatst gebackupt is in 2015. Die backup kan ik niet meer achterhalen, want ik kan er niet in. Is er een andere manier om hem te pakken te krijgen?

Antwoord: via FTP, of via de file manager van de hoster.

Reageer

1000 Resterende tekens