OCPP-beveiliging: securityprofielen 1, 2 en 3 uitgelegd
OCPP kent drie securityprofielen. Profiel 1 gebruikt alleen een wachtwoord zonder versleuteling en hoort nooit op internet. Profiel 2 voegt TLS toe en is het minimum voor elke verbinding buiten een eigen netwerk. Profiel 3 gebruikt wederzijdse certificaten en is de norm voor publieke of bedrijfskritische infrastructuur.
OCPP 1.6 bevat in de basisspecificatie geen enkele beveiliging. Geen authenticatie, geen versleuteling, geen certificaten. Een laadpaal die volgens de kale 1.6-specificatie is geïnstalleerd, opent een onbeveiligde WebSocket naar een server en identificeert zich met niet meer dan een naam in de URL.
De Open Charge Alliance heeft dat achteraf gerepareerd met een aparte securitywhitepaper die drie profielen introduceert. Voor OCPP 1.6 zijn die profielen optioneel; in OCPP 2.0.1 zijn ze onderdeel van de standaard geworden.
Deze pagina legt uit wat elk profiel wel en niet beschermt, en wat er praktisch misgaat als je het verkeerde kiest.
De drie securityprofielen
| Profiel | Laadpaal bewijst identiteit met | Versleuteling | Server bewijst identiteit |
|---|---|---|---|
| 1 | Gebruikersnaam en wachtwoord | Geen | Nee |
| 2 | Gebruikersnaam en wachtwoord | TLS | Ja, met servercertificaat |
| 3 | Client-certificaat | TLS | Ja, met servercertificaat |
Profiel 1 — alleen binnen een gesloten netwerk
Profiel 1 stuurt gebruikersnaam en wachtwoord onversleuteld over de lijn via HTTP Basic Authentication. Iedereen die het verkeer kan meelezen, ziet de inloggegevens in leesbare vorm en kan zich daarna voordoen als die laadpaal.
Dit profiel is alleen verdedigbaar binnen een fysiek afgeschermd netwerk waar geen ander verkeer op zit — bijvoorbeeld een eigen VLAN op een bedrijfsterrein. Zodra er een router met internetverbinding tussen zit, is het onvoldoende.
Profiel 2 — het praktische minimum
Profiel 2 zet dezelfde gebruikersnaam en wachtwoord binnen een TLS-verbinding. Het verkeer is daarmee versleuteld en de laadpaal controleert of hij met de juiste server praat, aan de hand van het servercertificaat.
Voor de meeste bedrijfsopstellingen is dit voldoende en is het ook realistisch haalbaar op bestaande 1.6-hardware. De zwakte blijft dat het wachtwoord in de laadpaal staat opgeslagen: wie fysiek toegang heeft tot het apparaat, kan het uitlezen.
Profiel 3 — wederzijdse certificaten
Profiel 3 vervangt het wachtwoord door een client-certificaat, waarbij paal en server elkaars identiteit controleren. Dit heet wederzijdse TLS (mTLS) en is de sterkste variant die OCPP kent.
Het voordeel is dat certificaten intrekbaar zijn en aflopen. Raakt een laadpaal kwijt of wordt er geknoeid, dan trek je één certificaat in zonder alle andere palen aan te passen. De prijs is beheerlast: je hebt een certificaatinfrastructuur nodig die uitgifte en vernieuwing regelt.
Wat er misgaat zonder beveiliging
Een onbeveiligde OCPP-verbinding is niet alleen een privacyprobleem. De verbinding is bidirectioneel, wat betekent dat wie zich als CSMS kan voordoen ook opdrachten naar de paal kan sturen.
- Sessies meelezen: wie laadt wanneer, met welke pas en hoeveel. Dat is herleidbaar naar personen.
- Gratis laden: door de identifier van een geldige laadpas te hergebruiken uit meegelezen verkeer.
- Palen op afstand uitschakelen via ChangeAvailability of Reset, met een hele locatie plat als gevolg.
- Firmware vervangen via UpdateFirmware, waarmee een aanvaller permanente controle over het apparaat krijgt.
- Laadprofielen manipuleren, met overbelasting van de aansluiting als gevolg.
Wat je concreet moet regelen
- 1Controleer welk profiel je nu draait. Begint het serveradres in de laadpaalconfiguratie met ws:// in plaats van wss://, dan draai je profiel 1 zonder versleuteling.
- 2Zet minimaal profiel 2 aan. Dat vraagt een geldig TLS-certificaat op je CSMS en een aanpassing van het serveradres in elke laadpaal.
- 3Geef elke laadpaal een eigen wachtwoord. Eén gedeeld wachtwoord over het hele park betekent dat één gecompromitteerde paal het hele park opent.
- 4Controleer of de paal het servercertificaat daadwerkelijk valideert. Sommige firmware accepteert elk certificaat, waarmee TLS zijn belangrijkste bescherming verliest.
- 5Beperk wie firmware mag pushen. Leg vast welke URL's zijn toegestaan en log elke UpdateFirmware-opdracht.
Stap één levert vaak een onaangename verrassing op. In veel bestaande installaties staat nog een ws://-adres uit de begintijd, omdat er destijds geen certificaat beschikbaar was en het daarna nooit is aangepast.
Certificaatbeheer in OCPP 2.0.1
OCPP 2.0.1 bevat berichten om certificaten op afstand te beheren, wat in 1.6 volledig ontbreekt. Daarmee wordt profiel 3 pas echt werkbaar op grotere schaal.
| Bericht | Functie |
|---|---|
| SignCertificate | Laadpaal vraagt om ondertekening van een nieuw certificaat |
| CertificateSigned | CSMS levert het ondertekende certificaat terug |
| InstallCertificate | Nieuw wortelcertificaat plaatsen op de laadpaal |
| DeleteCertificate | Certificaat verwijderen, bijvoorbeeld bij intrekking |
| GetInstalledCertificateIds | Opvragen welke certificaten er op de paal staan |
| Get15118EVCertificate | Certificaat ophalen voor Plug & Charge via ISO 15118 |
Met deze berichten kan een laadpaal zijn eigen certificaat vernieuwen voordat het verloopt, zonder dat er iemand ter plaatse hoeft te komen. Op een park van honderd palen is dat het verschil tussen beheersbaar en onwerkbaar.
Daarnaast kent 2.0.1 SecurityEventNotification, waarmee een laadpaal beveiligingsgebeurtenissen meldt: een mislukte inlogpoging, een gewijzigde configuratie of een firmware-installatie. Die meldingen horen in je monitoring, niet alleen in een logbestand.
Veelgestelde vragen
Welke OCPP-securityprofielen zijn er?
Er zijn drie profielen. Profiel 1 gebruikt HTTP Basic Authentication zonder versleuteling, profiel 2 voegt TLS toe met een servercertificaat, en profiel 3 gebruikt wederzijdse TLS met een client-certificaat voor de laadpaal.
Is OCPP 1.6 veilig?
De basisspecificatie van OCPP 1.6 bevat geen beveiliging. Veiligheid moet apart worden ingericht via de securityprofielen uit de aanvullende whitepaper van de Open Charge Alliance. Zonder die inrichting is de verbinding onversleuteld.
Hoe weet ik of mijn laadpalen beveiligd verbinden?
Kijk naar het serveradres in de laadpaalconfiguratie. Begint het met ws://, dan is de verbinding onversleuteld (profiel 1). Begint het met wss://, dan wordt TLS gebruikt en draai je minimaal profiel 2.
Wat is het risico van een onbeveiligde OCPP-verbinding?
Wie het verkeer kan meelezen, kan laadpasgegevens hergebruiken, sessies volgen en zich voordoen als beheersysteem. In dat laatste geval kan een aanvaller palen uitschakelen, laadprofielen wijzigen en zelfs firmware vervangen.
Moet ik naar profiel 3 met client-certificaten?
Voor publieke laadinfrastructuur en bedrijfskritische opstellingen wel. Voor een afgesloten bedrijfsterrein met een beperkt aantal palen is profiel 2 met unieke wachtwoorden per paal doorgaans een verdedigbare keuze.
Bronnen
Verder lezen
Vragen over jouw specifieke situatie?
We bouwen OCPP-servers, CSMS-omgevingen en koppelingen voor bedrijven in heel Nederland. Een gesprek kost je een half uur en levert altijd een concreet antwoord op.
Gratis gesprek inplannen →