MOCCA und Linux

  • Hier am Bespiel Ubuntu 13.10 eine Anleitung, was für MOCCA unter Linux benötigt wird. Dies soll als Überblick bisherige Diskussionen zum Thema erweitern und teils zusammenfassen (Einige Links zu bisherigen Diskussionen am Ende dieses Beitrags).


    Benötigte Komponenten:

    • libpcsclite-dev
    • pcscd
    • libccid (bzw. spezielle Lesegerät Treiber)


    Alternativ können diese Pakete auch im Terminal installiert werden mittels:
    sudo apt-get install libpcsclite-dev pcscd libccid


    libpcsclite-dev

    • Installation des Pakets: Ubuntu Software-Center -> Suche nach "libpcsclite" , das Paket ("Middleware to access a smart card using PC/SC (development files)") installieren.


    pcscd

    • Installation des Pakets: Ubuntu Software-Center -> Suche nach "pcscd" -> das Pakets ("Middleware to access a smart card using PC/SC (daemon side)") installieren.


    libccid

    • Installation des Pakets: Ubuntu Software-Center-> Suche nach ?libccid? -> das Paket (PC/SC-Treiber für USB-CCID-Chipkarten-Lesegeräte) installieren.
    • Die libccid Bibliothek enthält die Implementierung eines PC/SC-IFD-Handlers für USB-Chipkarten-Treiber. Diese Bibliothek ist an das CCID-Protokoll angepasst. Damit die Kommunikation mit CCID-Chipkarten-Lesegeräten durch den (pcscd) PC/SC- Lite Resource Manager funktioniert, wird das libccid Paket benötigt.
    • Liste der unterstützten Chipkarten - Lesegeräte finden Sie unter http://pcsclite.alioth.debian.org/section.html.
      Lesegeräte die nicht in der Liste angeführt sind benötigen einen eigenen Treiber der Herstellerfirma.



    Archivierte Teile der Anleitung, die inzwischen überholt sind:

    • sun-java6-plugin
      Mittlerweile ist OpenJRE (icedtea) ausgereift genug, und das Oracle (Sun) Java-Plugin wird nicht mehr benötigt - für ältere Distributionen könnte folgendes Paket noch benötigt werden:


      • sun-java6-plugin


      Sun Java Pakete befinden sich seit Ubuntu 10.04 in der Paketquelle partner . Um Sun Java 6 installieren zu können, muss zuerst ?Canonical Partner? als zusätzliche Paketquelle eingetragen werden. Falls openjdk-6-jdk am System schon vorhanden ist, sollte dieses Paket vor der Installation von sun-java6-plugin entfernt werden.

      • Hinzufügen der partner Paketquelle: Anwendungen -> Ubuntu Software-Center -> in der Menüleiste, Bearbeiten -> Software-Paketquellen. Tab, Andere Software -> Canonical-Partner auswählen -> Schließen
      • Installation des Pakets: Anwendungen -> Ubuntu Software-Center -> suche nach ?sun java plugin ?, das Paket (The Java? Plug-in, Java SE 6) anschließend Installieren.


    • Seit MOCCA 1.3.14 sucht MOCCA selbständig nach der PC/SC Bibliothek in den Systempfaden, da Java diese nicht findet.


      Ab Ubuntu 11.10. findet Java die pcsc-Library nicht mehr. Um dies zu umgehen, kann man folgende Befehle im Terminal ausführen:

      • Für 32-bit-Systeme:
        • sudo ln -s /lib/i386-linux-gnu/libpcsclite.so.1 /usr/lib/libpcsclite.so

      • Für 64-bit-Systeme:
        • sudo ln -s /lib/x86_64-linux-gnu/libpcsclite.so.1 /usr/lib/libpcsclite.so
        • sudo ln -s /usr/lib /usr/lib64




    Andere Diskussionsbeiträge zu Linux und MOCCA:

  • Ja, richtig, da hatten wir schon ausführliche Diskussionen ;-)


    http://www.buergerkarte.at/mvn…rum/viewthread_thread,292


    aktuell ist es bei mir so, dass seit dem "Fortschritt" von SuSE 11.3 auf 11.4 wieder "nix" mehr geht ;-) Bitte keine Antworten im Sinne von "selbst schuld, falsche Distri" und so ähnlich :-)) Ganz ehrlich: Bin momemtan froh, dass unter Windows so weit alles läuft. Jüngst "schreckte" eine neue Java-Version. Wenigstens hier war die Reparatur damit getan die alte MOCCA-BKU zu deinstallieren und die neueste Version von dieser Website zu holen.


    Gebe zu: Derzeit kein "Forscherdrang" ;-)

  • Hardware:
    Reiner cyberjack pinpad
    Software:
    Ubuntu 11.10 testing
    Java 1.6.0.26 (SUN)
    pcscd und alle empfohlenen Pakete sind installiert.


    Seit ca. 2 Wochen probiere ich es unter Linux.
    Unter Windows XP funktioniert die BKU mit derselben Hardware/Karte normal.


    Fehler-Meldung im Java-Applet:
    Die Karte wird nicht unterstützt.
    Bitte die Bürgerkarte in den Kartenleser stecken.


    Und anschließend den Server-Fehler:
    Fehlercode 4000: Unklassifizierter Fehler in der Befehlsabarbeitung.


    Die lokale BKU Mocca (Version 1.3.5-r904) zeigt in der PIN-Verwaltung an:
    Karten-PIN UNBEKANNT
    Signatur-PIN UNBEKANNT


    Nach Klick auf Abfragen kommt "Fehler", "Ein Fehler trat auf"


    Folgendes schreibt der pcscd im Debugging-Modus mit:


  • pcsc_scan gibt aus,
    ausgabe von firefox/icedtea-plugin weiter unten (icdedtea schreibt mehr als sun-jre):




    und hier die Ausgabe vom Java-Applet im Firefox:


    [quote]

  • Aktuell gibt es unter Ubuntu 11.10 (Oneiric) 64bit das Problem, dass Java die pcsc-library in /usr/lib64 sucht, dieses Verzeichnis aber nicht existiert.
    Folgender Workaround sollte genügen:

    Code
    1. sudo ln -s /usr/lib /usr/lib64


    (gnome-terminal starten, diese Zeile einfügen, mit Enter bestätigen - Passwortabfrage bestätigen)

  • Noch eine Ergänzung zu Ubuntu Oneiric:
    Ab Ubuntu 11.10 ist Sun Java nicht mehr in den Paketquellen enthalten, auch nicht unter partner. (Siehe dazu auch: http://wiki.ubuntuusers.de/Java/Installation)
    Die aktuelle Sun Java Version kann manuell (Anleitung dazu z.B: http://wiki.ubuntuusers.de/Java/Installation/Manuell) installiert werden.
    Alternativ gibt es auch die Möglichkeit der Installation über ein PPA (https://launchpad.net/%7Eferramroberto/%2Barchive/java), hier ist allerdings nicht immer die aktuellste Sun Java Version verfügbar.

  • Vielen Dank für den Hinweis mit /usr/lib64 - auf meinem Ubuntu Oneiric existiert allerdings der Ordner /usr/lib64 bereits und beinhaltet cups-Dateien und einen Link auf /usr/lib


    Daher ist es vielleicht besser nicht den gesamten /usr/lib auf /usr/lib64 zu linken sondern nur die libpcsclite.so-Datei um Kollisionen bei Paketinstallationen zu vermeiden


    Code
    1. sudo mkdir /usr/lib64; sudo ln -s /usr/lib/libpcsclite.so /usr/lib64


    Damit funktioniert mocca bei mir wieder einwandfrei.

  • Kann dazu sachlich nichts beitragen, nur so viel: Bin schon sehr gespannt auf SuSE 12.0 (angeblich in 20 Tagen da) und wie's dann mit der Bürgerkarte ausschaut ;-) Und da ich grad' viel Ärger mit einem anderen Betriebssystem hab' (na, welches wohl denn??? :-D ) wird's mit dem "Forschen" vorerst nix. Schönen Gruß allerseits ;-)

  • Ich schließe mich der Fehlerbeschreibung von joho1001 an, mit exakt dem selben Log-Output.


    OS: OpenSuSE 11.4, 64bit
    pcsc-lite-1.7.4-61.1 (auch probiert mit der standardmäßig enthaltenen Version 1.7.2-5.5.1)
    Mokka BKU 1.3.5-r904


    Windows Vista in einer VM (VMware) auf dem selben System (und somit gleichen Hardware-Bedingungen) kann mit der selben Mokka-Version ohne Probleme auf die Karte zugreifen.


    Meine noch aktive a.sign Premium-Karte funktioniert auch unter Linux ohne Probleme


    Meldung mit der aktivierten (und unter Windows als korrekt bestätigten) G3-eCard: "Die Karte wird nicht unterstützt. Bitte die Bürgerkarte in den Kartenleser stecken",
    danach:
    "Fehler beim Parsen: at.gv.egovernment.moa.id.ParseException: Fehler beim Parsen: at.gv.egovernment.moa.id.AuthenticationException: In der Bürgerkartenumgebung ist ein Fehler aufgetreten:
    Fehlercode 4000: Unklassifizierter Fehler in der Befehlsabarbeitung."


    Kann ich etwas beitragen, um den Fehler für die Entwickler reproduzierbar zu machen?

  • Ich habe ein wenig recherchiert:
    Die Ursache dafür, dass die Bankomatkarte mit a.sign premium funktioniert und die eCard nicht, ist das unterschiedliche "Karten-Betriebssystem". opensc-tool -n liefert:
    [list=1]
    [*]bei der Bankomatkarte: A-TRUST ACOS
    [*]bei der eCard (G3): Unsupported card
    [/list=1]
    Laut Informationen aus anderer Quelle handelt es sich beim System der G3-Karte um ein angepasstes Starcos-System. Durch die Anpassungen ist die Karte nicht vollständig kompatibel zu einer standardmäßigen Starcos-Karte.
    In einem Forum habe ich gelesen, dass in opensc.conf "force_card_driver = starcos" zum Erfolg führen soll. Dadurch werden bei mir zwar (scheinbar) einige Funktionen verfügbar, insgesamt funktioniert die Karte aber weiterhin nicht.


    Das grundsätzliche Problem ist, dass Mocca einen Betriebssystem-Treiber benötigt, um den Zugriff auf die unterschiedlichen Karten zu unterstützen. Derzeit funktioniert für viele Karten der Treiber aus dem OpenSC-Projekt (opensc-pkcs11.so). Für die eCard ist dieser Treiber unter Windows verfügbar, unter Linux nach aktuellem Informationsstand nicht.


    Laut OpenSC-Wiki (http://www.opensc-project.org/opensc/wiki/AustrianEid) sind für die Entwickler zu wenig Informationen verfügbar, daher wird die Karte derzeit nicht unterstützt.
    Die alternative Möglichkeit A-Trust ist ebenfalls nicht verfügbar (https://forum.a-trust.at/viewtopic.php?f=12&t=4767): "Leider sind derzeit keine Ressourcen für die Implementierung einer PKCS#11 Schnittstelle frei."


    Wessen Aufgabe ist es nun, dafür zu sorgen, dass die aktuelle eCard auch unter Linux unterstützt wird?
    Bei Bedarf kann ich mich gerne um die Abstimmung mit dem OpenSC-Projekt kümmern.

  • OpenSC wird bei MOCCA nicht benötigt, auch keien PKCS11 Treiber. Die Karten werden über PCSC angesprochen. Es werden dabei alle aktuellen Karten unterstützt (ACOS03 und 04, e-card G2 und G3).


    Da Sie lt. vorigem posting Mocca-Lokal verwenden: Am besten Sie erhöhen den loglevel und senden uns die MOCCA-logs. Dazu im log4j.properties file in mocca/conf (log4j.logger.at.gv=TRACE setzen und mocca neu starten.


    Dann bitte einen Version mit Ihrer funktionierenden alten a.sign premium Karte und danach das selbe mit der e-card und uns den mocca-logfile webstart.log schicken. (Sinnvoller Weise als PM und nicht posten, da im hohen loglevel personenbezogenen Daten aus der Kartenkommunikation in der Datei sind).

  • Positiv formuliert dürfte Linux halt doch ein "genaueres" Betriebssystem sein, kein "wird scho passen"-OS. Nachteil: Es deckt auch gnadenlos Unzulänglichkeiten auf... Wie die vielleicht nicht ganz so optimale E-Card ;-)


    Tja, ich gehörte doch auch glatt einmal zu den Leuten die dachten Java sei so was wie ein "Wunderwuzzi" ;-) Glaubte, dass es damit nun "universelle Binaries" gibt, die in jedem Betriebssystem (und auf jeder Hardware vom Handy bis zum Cloud) laufen... Nicht nur diese Diskussion, die wir hier führen, holte mich auf den Boden der Realität ;-) Es ist offensichtlich nicht so, dass ein Java-Binary, das im Betriebssystem A funktioniert, dies auch in OS B, C und so weiter tut **grübel**

  • wilfrid.eu :
    Ich kann diesem Argument so nicht zustimmen. "Wird scho passen" funktioniert unter keinem Betriebssystem stabil.
    Meiner Meinung nach liegt die Ursache für diese Art von Problemen darin, dass

    • in Österreich das Wissen über und daraus folgend die Nutzung der elektronischen Signatur sehr wenig verbreitet ist,
    • die eCard nur von einer Minderheit für diesen Zweck bzw. als Bürgerkarte verwendet wird, und
    • ich davon ausgehe, dass die Anzahl der Tests unter Linux im Vergleich zu den unter Windows durchgeführten Tests um einiges geringer war


    Mit Java wird das Ziel "Plattformunabhängigkeit" zu einem sehr großen Teil erreicht, aber 100% sind halt nicht immer möglich, manchmal dauert's auch ein wenig.


    hleitold :
    Kann ich noch etwas beitragen?
    Mit welchen Distributionen und Versionen wurde unter Linux erfolgreich getestet?
    Und in welchem Zeitrahmen wird das Problem unter Linux voraussichtlich gelöst sein?

  • Das Problem besteht anscheinend mit dem Treiber dieses speziellen Kartenlesers (in bestimmten Versionen), weswegen es bis jetzt von uns nicht reproduziert werden konnte.


    Was mich allerdings wundert ist, dass es bis jetzt nicht aufgetreten ist, da ich das Problem mit diesem Kartenleser auch unter Ubuntu 11.04 (natty) reproduzieren konnte.
    Gab es davor keine Probleme mit diesem Kartenleser unter Linux?


    Was eventuell noch helfen könnte, wäre die genaue Produktversion des Kartenlesers (unter Windows mittels cyberJack Gerätemanager auslesbar).


    Von unserer Seite lässt sich aber höchstwahrscheinlich nichts machen, eventuell kann der Support von Reiner-SCT weiterhelfen.

  • Zitat

    Gab es davor keine Probleme mit diesem Kartenleser unter Linux?


    Ich verwende den Leser seit Jahren ohne Probleme mit einer a.sign Premium-Signatur auf meiner Bankomatkarte. Das Problem tritt nur mit der eCard auf.


    Der Leser heißt "cyberJack pinpad (a) USB 01", ID DESCTCJPPA V3.0, Prod.Ref. V. 3.0.12
    Ich verwende den aktuellsten Treiber von Reiner-SCT (3.99.5final.SP02-1)


    Zitat

    Von unserer Seite lässt sich aber höchstwahrscheinlich nichts machen, eventuell kann der Support von Reiner-SCT weiterhelfen.


    Ok, das werde ich versuchen.

  • Ich habe bei Reiner-SCT angefragt, mit der Antwort, dass an einer neuen Treiber-Version gearbeitet würde, die das Problem beheben könnte.


    Inzwischen ist diese Version verfügbar (pcsc-cyberjack-3.99.5final.SP03 statt vorher .SP02), jetzt funktioniert der Leser mit der eCard :)


    Danke für die Unterstützung!

  • Ubuntu 12.04 LTS 64Bit ändert Verzeichnis für libpcsclite.so.1.0.0 und man findet in der log-Datei ~/.mocca/logs/webstart.log:

    Code
    1. Caused by: java.io.IOException: No PC/SC library found on this system


    das behebt man mit:

    Code
    1. sudo mkdir /usr/lib64
    2. sudo ln -s /lib/x86_64-linux-gnu/libpcsclite.so.1.0.0 /usr/lib64/libpcsclite.so
    3. sudo ln -s /lib/x86_64-linux-gnu/libpcsclite.so.1.0.0 /lib/x86_64-linux-gnu/libpcsclite.so


    Außerdem wird der Daemon pcscd nicht mehr beim StartUp gestartet, aber das SW-Paket (1.7.4-2ubuntu2) dieser Distro liefert auch kein udev-Script mit um pcscd on-demand zu starten. Die Lösung ist die Zeile "exit 0" in der Datei /etc/init.d/pcscd auszukommentieren:

    Code
    1. # DO NOT start the daemon on startup
    2. # comment the line to have the same behavior as in version < 1.6.0
    3. # exit 0 <=======


    Mit

    Code
    1. sudo /etc/init.d/pcscd start

    sollte der Daemon dann wieder laufen.

  • Zitat

    Ubuntu 12.04 LTS 64Bit ändert Verzeichnis für libpcsclite.so.1.0.0 und man findet in der log-Datei ~/.mocca/logs/webstart.log:

    Code
    1. Caused by: java.io.IOException: No PC/SC library found on this system


    das behebt man mit:

    Code
    1. sudo mkdir /usr/lib64
    2. sudo ln -s /lib/x86_64-linux-gnu/libpcsclite.so.1.0.0 /usr/lib64/libpcsclite.so
    3. sudo ln -s /lib/x86_64-linux-gnu/libpcsclite.so.1.0.0 /lib/x86_64-linux-gnu/libpcsclite.so


    Genau; oder - falls es das Verzeichnis noch nicht gibt - einfach mit

    Code
    1. sudo ln -s /usr/lib /usr/lib64


    Zitat

    Außerdem wird der Daemon pcscd nicht mehr beim StartUp gestartet, aber das SW-Paket (1.7.4-2ubuntu2) dieser Distro liefert auch kein udev-Script mit um pcscd on-demand zu starten. Die Lösung ist die Zeile "exit 0" in der Datei /etc/init.d/pcscd auszukommentieren:

    Code
    1. # DO NOT start the daemon on startup
    2. # comment the line to have the same behavior as in version < 1.6.0
    3. # exit 0 <=======


    Mit

    Code
    1. sudo /etc/init.d/pcscd start

    sollte der Daemon dann wieder laufen.


    Sollte eigentlich nicht nötig sein, da pcscd jetzt bei Bedarf für den jeweiligen User gestartet werden sollte.