Skip to content

Instantly share code, notes, and snippets.

@grakic

grakic/ePorezi-macOS.md

Last active Nov 24, 2020
Embed
What would you like to do?
ePorezi na macOS

ePorezi na macOS

Zvanična klijentska aplikacija Poreske uprave se može preuzeti sa njihove stranice.

U pitanju je Java aplikacija koja dolazi sa posebno priređenom distribucijom Oracle Java radnog okruženja. Aplikacija podržava samo Microsoft Windows operativni sistem i sertifikatima u Personals skladištu pristupa kroz Microsoft CryptoAPI koji poziva operacije na pametnoj kartici ili tokenu posredstvom midlvera.

Sertifikaciono telo Pošte korisnicima nudi SafeSign midlver, osim u verziji za Windows i u verziji za GNU/Linux i macOS operativne sisteme. Midlver isporučuje prateću aplikaciju za upravljanje karticom/tokenom i PKCS#11 biblioteku. Programi poput jSignPDF, Adobe Reader ili LibreOffice mogu da učitaju ovu biblioteku i omoguće korisniku elektronsko potpisivanje dokumenata.

Elektronsko potpisivanje se koristi i na portalu ePorezi Poreske uprave, posredstvom pomenute klijentske aplikacije.

Da bi klijentsku aplikaciju mogli da koristimo na macOS-u moramo da je naučimo da kartici/tokenu umesto kroz Microsoft CryptoAPI pristupa kroz SafeSign PKCS#11 modul. Minimalno (nezvanično) prerađena verzija ePorezi 1.0 tako da umesto MS CAPI koristi PKCS#11 sa odgovarajućim putanjama midlvera prema podrazumevanoj instalaciji na macOS-u se može preuzeti sa:

http://goranrakic.com/tmp/ePorezi_1.1_mac.zip

Prepravljena verzija nije podržana od strane Poreske uprave. Napravljena je isključivo u najboljoj nameri, sa željom da se i korisnicima macOS-a omogući pristup portalu. Izmene menjaju isključivo deo aplikacije koji je okrenut ka kartici, bez izmena u kodu koji je okrenut ka portalu. Za pristup kartici izmenjena aplikacija koristi isključivo postojeće PKCS#11 biblioteke i ne bi trebalo da dovede do oštećenja ili neočekivanog blokiranja kartice (kartica će biti blokirana u slučaju da korisnik više puta unese pogrešan PIN kod, što je podrazumevano ponašanje). Ipak napisano ne predstavlja garanciju i ovu nepodržanu i prepravljenu verziju koristite isključivo na svoju odgovornost.

Klijentska aplikacija je minimalno izmenjena, samo koliko je bilo neophodno za učitavanje PKCS#11 modula. U slučaju greški aplikacija će "zakucati" ili "pući", i jedino u log zapisu ili eventualnom ispisu u terminalu možete da naslutite šta je problem. Ovakvo prepravljanje gotove aplikacije kada izvorni kod nije dostupan nije jednostavno i postoje ograničene mogućnosti za dodavanje nove funkcionalnosti. Verovatno bi bilo lakše i praktičnije napraviti novu alternativnu aplikaciju, koja bi mogla da izgleda i ovako.

Na macOS-u nakon svakog uspešnog potpisivanja prikazuje se greška o padu programa. Aplikacija bi u tom trenutku trebalo da se tiho zatvori, međutim pri izlasku dolazi do neogovarajućeg pristupa (EXC_BAD_ACCESS). Pretpostavljam da je problem u zaostaloj niti ili resursu koji je potrebno osloboditi, međutim to ostaje u delu aplikacije koji ne mogu ili ne znam kako da prepravim (patchujem).

Osim Sertifikacionog tela Pošte, moguće da i druga sertifikaciona tela imaju dostupan PKCS#11 modul za macOS (npr. NexusPersonal za Halcom ili NetSet CardEdge za PKS/MUP).

@vuk-nikolic

This comment has been minimized.

Copy link

@vuk-nikolic vuk-nikolic commented Jan 26, 2020

Svaka čast Gorane! Da li imaš ideju kako da izvučem log aplikacije? interesuje me šta sam omanuo :)

Ispratio sam uputstvo ali mi se vrti crveni peščnik doživotno sa MUPovim sertifikatom izdatim posle 18.08.2014. Probam sam prvo pravu prijavu, a onda više puta testnu, ali ista stvar.
Iskopirao sam libnstpkcs11.dylib, verzija mac os 10.15.2, a java:

java 13.0.2 2020-01-14
Java(TM) SE Runtime Environment (build 13.0.2+8)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

info iz aplikacije:

OS info: mac os x
Server version: 1.2.2
Application version: 1.0
CertBody: MUP/PKS (CardEdge PKCS11)
Trying PKCS11 module path /usr/local/lib/libnstpkcs11.dylib
Loading PKCS11 module: name=CardEdge
library=/usr/local/lib/libnstpkcs11.dylib

Čitač je neki gemalto pc usb-tr providni što sam uzeo mislim u winwinu/gigatronu

Screenshot ako pomaže: Screenshot 2020-01-26 at 19 23 14

Hteo bih da pomognem oko aplikacije, još jednom svaka čast za trud!

@najdanovicivan

This comment has been minimized.

Copy link

@najdanovicivan najdanovicivan commented Jan 27, 2020

Problem koji se desava je zbog Jave 13. Aplikacija radi u Java 8 problem je klasa sun.security.pkcs11.SunPKCS11 koja je od Java 9 prepravljena da koristi prototype model

@najdanovicivan

This comment has been minimized.

Copy link

@najdanovicivan najdanovicivan commented Jan 28, 2020

@vuk-nikolic

Ovako se moze naterati da se koristiti java 8 na OSX-u ukoliko postoje instalirane nove verzije. Otvoriti aplikaciju ePorezi u finderu desnim klikom -> Show Package Contents

Zatim idemo u folder Contents gde se nalazi fajl info.plist

Otvorimo info.plist file u bilo kom tekst editoru

U fajlu se nalazi parametar

<key>JVMVersion</key>
<string>1.8+</string>

Samo prepravimo verziju na 1.8 bez plusa

<key>JVMVersion</key>
<string>1.8</string>
@cyberkurajber

This comment has been minimized.

Copy link

@cyberkurajber cyberkurajber commented Jan 28, 2020

Ako nije instalirana i Java 8, nece pomoci samo promena gore navedenog stringa.

Koristeci Terminal i Homebrew, instalacija je:
brew tap homebrew/cask-versions
a zatim:
brew cask install homebrew/cask-versions/adoptopenjdk8

Nakon ovoga mi je proradilo. Hvala Gorane!

@najdanovicivan

This comment has been minimized.

Copy link

@najdanovicivan najdanovicivan commented Jan 28, 2020

Ne mora preko homebrew-a moze i sa Oracle sajta da se preuzme pkg installer

@vuk-nikolic

This comment has been minimized.

Copy link

@vuk-nikolic vuk-nikolic commented Jan 31, 2020

Hvala obojici za info.
Instalirao sam javu 8 (openjdk version "1.8.0_242" odnosno OpenJDK Runtime Environment (build 1.8.0_242-b08)) ali idalje mi se isto ponaša nažalost.

@MladenJanjetovic

This comment has been minimized.

Copy link

@MladenJanjetovic MladenJanjetovic commented Feb 6, 2020

Uspeo sam da mi aplikacija kaze sertifikat validan i da me redirektuje na sajt eporezi, ali onda dobijem obavestenje da treba da otvorim eporezi.app koji je vec otvoren ali iz nekog razloga crashuje.
Evo pocetka log-a ako ista znaci:

Process:               java [19648]
Path:                  /Applications/ePorezi.app/Contents/MacOS/universalJavaApplicationStub
Identifier:            com.itsinbox.smartbox.SmartBox
Version:               1.1 (???)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
User ID:               501

Date/Time:             2020-02-06 11:34:51.923 +0100
OS Version:            Mac OS X 10.15.3 (19D76)
Report Version:        12
Bridge OS Version:     3.0 (14Y908)
Anonymous UUID:        0ED85ECF-3DC8-F3AF-047B-3400C887BBD0


Time Awake Since Boot: 61000 seconds

System Integrity Protection: enabled

Crashed Thread:        7  Java: VM Thread

Exception Type:        EXC_BAD_ACCESS (SIGABRT)
Exception Codes:       EXC_I386_GPFLT
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called
@lazanet

This comment has been minimized.

Copy link

@lazanet lazanet commented Feb 6, 2020

Мислим да сам успео да га ухакујем да ради на новијим јавама (тестирано на 11), ако нађете неке багове вичите тамо на issue.
https://github.com/lazanet/ePorezi/releases/tag/1.0

@velibor-mandzo

This comment has been minimized.

Copy link

@velibor-mandzo velibor-mandzo commented Feb 12, 2020

Meni uporno ne skine / instalira libnstpkcs11.dylib sa Poštinog linka, jel moze neko da baci fajl ili direkt link thanks?

@velibor-mandzo

This comment has been minimized.

Copy link

@velibor-mandzo velibor-mandzo commented Feb 12, 2020

OS info: mac os x CertBody: MUP/PKS (CardEdge PKCS11) Server version: 1.2.2 Application version: 1.0 Trying PKCS11 module path /usr/local/lib/libnstpkcs11.dylib PKCS11 module not found! Error java.security.KeyStoreException: PKCS11 module not found!

@zkosanovic

This comment has been minimized.

Copy link

@zkosanovic zkosanovic commented Feb 12, 2020

@velibor-mandzo Moraš sam da skineš i prebaciš u /usr/local/lib/: https://nx7674.your-storageshare.de/s/659pz24qxoA4JcG

@velibor-mandzo

This comment has been minimized.

Copy link

@velibor-mandzo velibor-mandzo commented Feb 12, 2020

Thanks!

@dusansusic

This comment has been minimized.

Copy link

@dusansusic dusansusic commented Feb 25, 2020

U logu dobijam ovo:

CertBody: UNKNOWN (trying PKCS11)
CertBody: UNKNOWN (trying PKCS11)
CertBody: UNKNOWN (trying PKCS11)
CertBody: UNKNOWN (trying PKCS11)
CertBody: UNKNOWN (trying PKCS11)
CertBody: UNKNOWN (trying PKCS11)
CertBody: UNKNOWN (trying PKCS11)
CertBody: UNKNOWN (trying PKCS11)
CertBody: UNKNOWN (trying PKCS11)

Sve Poštine certifikate sam importovao i stavio na Always trust

@MladenJanjetovic

This comment has been minimized.

Copy link

@MladenJanjetovic MladenJanjetovic commented Feb 25, 2020

Nema sanse da ga naguram na Mac-u da radi. Na Windowsu sam instalirao sve za 5 min. Nazalost...

@velibor-mandzo

This comment has been minimized.

Copy link

@velibor-mandzo velibor-mandzo commented Mar 3, 2020

Meni je radilo na Mac-u do pre neki dan, sad trika nema, pusti da unesem PIN i onda kaze Disfunkcionalna kartica

@RockyMM

This comment has been minimized.

Copy link

@RockyMM RockyMM commented Apr 23, 2020

@velibor-mandzo može da se klikne na "clipboard" ikonicu gore desno, tu će biti log. Možeš da ostaviš log ovde pa da vidimo na šta se žali aplikacija.

@ivanalexic

This comment has been minimized.

Copy link

@ivanalexic ivanalexic commented Apr 24, 2020

Imam isti problem kao i Velibor - LK radi normalno na Windowsu, a na Macu u logu imam ovo:

OS info: mac os x Server version: 1.2.2 Application version: 1.0 CertBody: MUP/PKS (CardEdge PKCS11) CertBody: MUP/PKS (CardEdge PKCS11) Trying PKCS11 module path /usr/local/lib/libnstpkcs11.dylib Loading PKCS11 module: name=CardEdge library=/usr/local/lib/libnstpkcs11.dylib PIN callback handler invoked PIN entry confirmed Error java.security.KeyStoreException: KeyStore instantiation failed

A sa mojom licnom kartom (ovo prethodno napisano se ne tice moje LK) od 8. aprila imam drugi problem - pre toga je radilo OK. Ne mogu da se ulogujem na ePorezi na Macu, jer je jedan od sertifikata (kako ga oni zovu "sertifikat za autentifikaciju i enkripciju") istekao tog dana. Sertifikat za elektronski potpis radi normalno, mogu da koristim LK za potpisivanje PDF dokumenata na Macu.
Na Windowsu sve normalno (i ePorezi i potpisivanje PDF), valjda on ignorise taj istekli i gleda samo ovaj drugi sertifikat koji je validan do 2023. godine.

@RockyMM

This comment has been minimized.

Copy link

@RockyMM RockyMM commented May 1, 2020

@ivanalexic
Prvi problem je u KeyStore instantiation failed. Interesantno. Očekivao bih mnogo duži log koji bi pokazao gde je tačno došlo do greške.

Drugi problem zapravo nije problem. Ako je sertifikat istekao, trebalo bi da se zameni svežim. Čudno je da radi na Windowsu, jer taj sertifikat bi trebalo da se koristi za autentifikaciju korisnika.

Zapravo, sad kad pročitam gore šta sam napisao, i nisam od neke pomoći 😅

@TrujaGroup

This comment has been minimized.

Copy link

@TrujaGroup TrujaGroup commented Jun 12, 2020

Hvala Gorane, odlicno radi aplikacija. Dugo smo cekali u odnosu na to koliko se dugo koriste digitalni sertifikati, i koliko su zapostavljeni korisnici Mac operativnih sistema i skoro da niko iz drzavne uprave ne vodi brigu o tome, ali isplatilo se.
Hvala i tebi Vuce, posto sam imao problem sa Javom koji sam resio brisanjem tog plusa.
Hteo sam samo jos da pitam da li je moguce da se adaptira ponudjeni middleware softver od poste ili neki drugi da bi mogli da se potpisu pdf dokumenti MUP-ovim sertifikatom, direktno u Adobe readeru ili preko https://aplikacije3.apr.gov.rs/ElektronskoPotpisivanje

@precompiled

This comment has been minimized.

Copy link

@precompiled precompiled commented Jul 21, 2020

Drugari, znate li šta je sa ličnim kartama izdatim PRE 18.8.2014, a na koje je naknadno (nedavno) instaliran sertifikat? Ima li nekih dodatnih peripetija?

@luka-stanisic

This comment has been minimized.

Copy link

@luka-stanisic luka-stanisic commented Oct 20, 2020

Zdravo,
Ako bi neko bio ljubazan da baci pogled možda bude imao ideju gde sam omanuo.

Prošao sam sve potrebne korake, zatim skinuo i sredio problem sa Javom kao sto je @najdanovicivan napomenuo, ali mi uporno izbacuje grešku nakon unosa pin-a: Došlo je do greške prilikom čitanja sertifikata. Molim, pokušajte ponovo.

U pitanju je MacOS Catalina (10.15.7).
Na win sve radi i na mac-u se logujem na eUpravu ali ePoreze nikako ne uspevam da "namestim".
U nastavku je kopija log-a nakon što izbaci grešku.

Hvala unapred na pomoći.

OS info: mac os x
Server version: 1.2.2
Application version: 1.0
CertBody: Posta (SafeSign PKCS11)
Trying PKCS11 module path /Applications/tokenadmin.app/Contents/Frameworks/libaetpkss.dylib
Loading PKCS11 module: name=AETSafeSign
library=/Applications/tokenadmin.app/Contents/Frameworks/libaetpkss.dylib
PIN callback handler invoked
PIN entry confirmed
Alias: #########
DN: CN= ###########,C=RS
digitalSignature
nonRepudiation
@lukapaunovic

This comment has been minimized.

Copy link

@lukapaunovic lukapaunovic commented Oct 30, 2020

Jel može neko da okači libnstpkcs11.dylib
mrtav je mirror
https://nx7674.your-storageshare.de/s/659pz24qxoA4JcG

@AlexR78

This comment has been minimized.

Copy link

@AlexR78 AlexR78 commented Nov 23, 2020

Molim za preporuku koji citac da kupim a da radi na Mac-u? Unapred hvala!

@lukapaunovic

This comment has been minimized.

Copy link

@lukapaunovic lukapaunovic commented Nov 24, 2020

Molim za preporuku koji citac da kupim a da radi na Mac-u? Unapred hvala!

radi bilo koji citac bukvalno, samo je fora u ovom .dylib fajlu i radi savrseno.
ako hoces provereno uzmi gemalto, mada ja sam uzeo neki potpuno generic JAVTEC JAV-SCR08 u gigatronu i funkcionise (na mac).

Haha prestalo je da radi na BigSur.... :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.