Seit dem 10. Juni 2021 werden Impf-Zertifikate (sogenannte Impfbescheinigungen) in Deutschland in Impfzentren ausgegeben. Den QR-Code kann man auch mit einem Raspberry Pi validieren (von lateinisch validus „kräftig, wirksam, fest“) und den Inhalt des QR-Codes im Klartext ausgeben. Am Beispiel eines Raspberry Pi Zero W sind folgende 6 Schritte nötig.
1. Wir brauchen das Impfzertifikat, also den QR-Code als PNG oder JPG-Bild in einer Datei z.B. max-mustermann.png.
Wie z.B.:
Aber nur den QR-Code, nicht die ganze Seite des Impfzertifikats. …
Wer nicht sein eigenes nehmen will, kann sich hier deutsche Testzertifikate runterladen, z.B. das 1.png.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 2. legen wir uns ein neues Verzeichnis auf dem Pi an und gehen dort rein mkdir Impfzertifikat-Check cd Impfzertifikat-Check/ // 3. installieren wir die libzbar0 Abhängikgeit sudo apt install libzbar0 // 4. Clonen wir das Repo und wechseln in das Verzeichnis git clone https://github.com/IT-Berater/vacdec.git cd vacdec // 5. Wir installieren alle Abhängikeiten aus der requirements.txt pip3 install -r requirements.txt # 6 Starten wir die Zertifikatsvaledierung des Impfzertifikat aus der max-musterman.png Datei (ein jpg würde auch gehen) // ./vacdec --image-file [image] z.B.: ./vacdec --image-file ../max-mustermann.png |
Schon erhalten wir die Ausgabe ob das Zertifikat gültig ist, und was da so drinne steht, z.B. Auszugsweise mal ein ungültiges (anonymisiert 😉 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
2021-05-05 11:29:45,199 [INFO ] Protected header key reference missing, using the unprotected one 2021-01-05 11:29:45,201 [INFO ] COVID certificate signed with X.509 certificate. 2021-01-05 11:29:45,205 [INFO ] X.509 in DER form has SHA-256 beginning with: 8ede3316d.....c6a3a3 2021-01-05 11:29:45,237 [INFO ] Skip verify as no key found from database 2021-01-05 11:29:45,242 [INFO ] Certificate as JSON: { "1": "DE", "4": 1622725423, "6": 1619167131, "-260": { "1": { "v": [ { "ci": "01DE/84503/11...9007/DXSGWLW......9A3#S", "co": "DE", "dn": 2, "dt": "2021-02-02", "is": "Bundesministerium für Gesundheit", "ma": "ORG-100...5", "mp": "EU/1/20/1528", "sd": 2, "tg": "8405...06", "vp": "11193...007" } ], "dob": "1964-08-12", "nam": { "fn": "Schmitt Mustermann", "gn": "Erika Dörte", "fnt": "SCHMITT<MUSTERMANN", "gnt": "ERIKA<DOERTE" }, "ver": "1.0.0" } } } |
Was die Felder so bedeuten, kann der Spec (PDF, engl.) entnommen werden. So z.B.
1 2 |
v/dt ist das Datum der Ímpfung v/sd Anzahl der Impfungen |
Mein Impfzertifikat ist natürlich gültig:
1 2 3 4 5 6 7 8 |
2021-11-05 11:12:06,315 [INFO ] Protected header key reference missing, using the unprotected one 2021-08-05 11:12:06,318 [INFO ] COVID certificate signed with X.509 certificate. 2021-08-05 11:12:06,321 [INFO ] X.509 in DER form has SHA-256 beginning with: d....... 2021-08-05 11:12:06,351 [INFO ] Found the raw key from DB-file certs/roots/Digital_Green_Certificate_Signing_Keys.json! 2021-08-05 11:12:06,905 [INFO ] Signature verified ok 2021-08-05 11:12:06,993 [INFO ] Certificate as JSON: { "1": "DE", ... |
Weitere ausführliche Infos gibt es bei der EU Elektronische Gesundheitsdienste (eHealth) .