Što se tiče samog sertifikata, čitača kartica i middleware-a sve radi na Linux-u.
Čitač (Gemalto PC USB-SL) je CCID kompatibilan i radi bez problema, a A.E.T. SafeSign middleware je u verziju 3.0.93 (isto kao za windows) i dobiju se paketi za Debian 6, RHEL 6 i Ubuntu 12.04 (mora se tražiti putem maila, nema direktan download).
Pošto sam testirao na Fedora 19 ni jedan od tih mi nije odgovarao, ali sam uspeo iskoristiti ovaj za RHEL (ne može se instalirati direktno - fale zavisnosti).
Takođe našao sam na netu stariju verziju SafeSign-a, 3.0.44 za Fedora 13 (ne mogu sad naći link), koja se instalira bez problema na 19-ici, ali sam ipak koristio ovu noviju verziju.
Podešavanje firefox-a su ista kao na windows-u, dodaje se novi security device i u path se stavi putanja da libaetpkss.so.
Nakon toga firefox vidi sertifikat, radi provera na https://www.ca.posta.rs/test/provera_ispravnosti.asp, kao i logovanje putem sertifikata na www.euprava.gov.rs.
To sve radi, ali portal eporezi - ne radi.
Tačnije java applet na sajtu se pokreće i pronalazi čitač kartica, detektuje kad se ubaci/izvuče kartica, ispisuje ko izdaje sertifikat na kartici i daje polje za unos PIN-a (znači isto kao na windows-u).
Samo kada se unese PIN i klikne "Prijavite se" ne desi se ništa sa korisničke strane i samo tako stoji, ali ispiše sledeće na java konzoli:
java version "1.7.0_51"
OpenJDK Runtime Environment (fedora-2.4.4.1.fc19-x86_64 u51-b02)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
Connected!
PTT
3B:FA:18:00:FF:81:31:FE:45:4A:43:4F:50:32:31:56:32:33:31:65
SunPKCS11-SmartBox
OS: Linux A: x64
Exception in thread "AWT-EventQueue-1" java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key regkey_PTT_Linux_amd64
at java.util.ResourceBundle.getObject(ResourceBundle.java:395)
at java.util.ResourceBundle.getString(ResourceBundle.java:355)
at com.sw4i.smartbox.logic.SmartCardLogic.findDLLPath(SmartCardLogic.java:81)
at com.sw4i.smartbox.logic.SmartCardLogic.getPKCS11Config(SmartCardLogic.java:65)
at com.sw4i.smartbox.model.PTTCard.loadKeyStore(PTTCard.java:44)
at com.sw4i.smartbox.gui.LoginJApplet.checkPIN(LoginJApplet.java:544)
at com.sw4i.smartbox.gui.LoginJApplet.jButton1ActionPerformed(LoginJApplet.java:327)
at com.sw4i.smartbox.gui.LoginJApplet.access$200(LoginJApplet.java:43)
at com.sw4i.smartbox.gui.LoginJApplet$3.actionPerformed(LoginJApplet.java:179)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3311)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Neko nije mislio na Linux... ili možda jeste :)
Naravno isto je i sa Oracle Java-om (napomena: oracle java ne može skontati čitač kartice ako ne postoji lib sa nazivom libpcsclite.so, za detalje https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=500762)
Kako stvari stoje trenutno ništa od eporeza na linux-u. Ko hoće da se zanima može skinuti smartbox.jar sa sajta pa pogledati šta ima unutra.