Debian 10, Ubuntu 18.04 a DSigner

Zdravím,

včera som dobojoval s DSignerom a javaws v Debian 10.
Možno to nie je najelegantnejši workaround, ale funguje. Feel free modify a zlepšiť.

Problémom je, že Debian 10 má default java verziu 11 a DSigner pouziva JAXB (Java Architecture for XML Binding). JAXB ale uz nie je sucastou java 11 a preto DSigner spadne na java.lang.ClassNotFoundException: javax.xml.bind.JAXBException.

Čo s tým?
Treba nainštalovať
openjdk-8-jre, openjdk-8-jre-headless a
icedtea-netx:amd64 verzie 1.6.2-3.1+deb9u1
icedtea-netx-common 1.6.2-3.1+deb9u1

problém je, že tieto verzie javy nie su v Bustery, takže som spravil nasledovné.
V /etc/apt/sources.list.d
som vytvoril súbor “stretch.list” ktorý obsahuje:
deb http://ftp.be.debian.org/debian/ stretch main contrib non-free

do /etc/apt/apt.conf.d som pridal súbor “99strech”, ktorý obsahuje
APT::Default-Release “buster”;

následne som odstránil icedtea-netx príkazom “apt remove icedtea-netx” a nainštaloval som spomínané balíky:
openjdk-8-jre, openjdk-8-jre-headless a
icedtea-netx:amd64 verzie 1.6.2-3.1+deb9u1
icedtea-netx-common 1.6.2-3.1+deb9u1

po tychto hackoch sa mi podarilo podať podpísaný formulár na finančnej správe.
Poznamka:
treba dávať pozor pri apt upgrade aby sa neupgradol icedtea-netx, a to sa spraví príkazom
echo “icedtea-netx hold” | dpkg --set-selections

2 Likes

Rovnaky problem je aj na ubuntu 18.04. Neslo podpisovat cez schranku. Dnes mi odpisali takyto manual

  1. Odstrániť novú verziu icedtea-netx (1.8)
    a. sudo dpkg –purge icedtea-netx-common
    b. sudo dpkg –purge icedtea-netx
  2. Stiahnuť starú verziu icedtea-netx (1.6.2) zo stránky Index of /ubuntu/pool/universe/i/icedtea-web
    • pre 64-bit systém: icedtea-netx_1.6.2-3.1ubuntu3_amd64.deb a icedtea-netx-common_1.6.2-3.1ubuntu3_all.deb
    • pre 32-bit systém: icedtea-netx_1.6.2-3.1ubuntu3_i386.deb a icedtea-netx-common_1.6.2-3.1ubuntu3_all.deb
  3. Nainštalovať oba balíky buď package managerom ktorý je súčasťou mnohých Linux distribúcií alebo pomocou príkazov:
    a. sudo dpkg -i icedtea-netx-common_1.6.2-3.1ubuntu3_all.deb
    b. sudo dpkg -i icedtea-netx_1.6.2-3.1ubuntu3_amd64.deb
    i. v prípade 32-bit systému sudo dpkg -i icedtea-netx_1.6.2-3.1ubuntu3_i386.deb
    Systém by si mal pri inštalácii sám dotiahnuť javu 1.8 ktorú icedtea-netx 1.6.2 potrebuje pre správne fungovanie

Tiez zafungovalo.

1 Like

Super, tak sa ucia a zobrali si informacie co som im napisal. Lebo mne posielali este iny “navod”:

Pre vyriešenie Vašej požiadavky ohľadom elektronického podpisovania Vás poprosíme o zaslanie výpisu z príkazového riadku:

1 - java -version
2 - javac -version
3 - javaws
4 - itweb-settings

Alebo môžete postupovať nasledovne:
1 - pomocou alternatives --config java nastaviť primárne /usr/java/jdk1.8.0_191/jre/bin/java
2 - pomocou alternatives --config javaws nastaviť primárne /usr/java/jdk1.8.0_191/jre/bin/javaws
3 - pomocou alternatives --config libjavaplugin.so.x86_64 (v prípade (64-bit)) primárne /usr/java/jdk1.8.0_191/jre/lib/amd64/libnpjp2.so
4 - pomocou alternatives --config libjavaplugin.so (v prípade (32-bit)) primárne /usr/java/jdk1.8.0_191/jre/lib/i386/libnpjp2.so

3 - odinštalovanie Oracle JDK (nahradiť version s číslom verzie ktorú používate napr.jdk1.8.0_191)

1 - $ sudo update-alternatives --remove “java” “/usr/lib/jvm/jdk[version]/bin/java”
2 - $ sudo update-alternatives --remove “javac” “/usr/lib/jvm/jdk[version]/bin/javac”
3 - $ sudo update-alternatives --remove “javaws” “/usr/lib/jvm/jdk[version]/jre/bin/javaws”

4 - odinštalovanie Openjdk

1 - $ sudo apt-get remove openjdk*
2 - $ sudo apt-get purge openjdk*

5 - odinštalovanie Openjdk (ak chcete odstrániť odstrániť závislosti a konfiguračné súbory )

1 - $ sudo apt-get purge --auto-remove openjdk*
2 - $ sudo apt-get remove --auto-remove openjdk*

6 - nainštalovanie Oracle Java, ktoré odporúčame používať namiesto OpenJDK

1 - $ sudo apt install oracle-java8-installer
2 - $ sudo apt install oracle-java8-set-default

2 Likes

Doležité

  • Nie je potrebné inštalovať Oracle JDK
  • Nie je potrebné inštalovať starý icedtea
  • Musí byť nainštalovaný openjdk-8-jdk
  • Môžu byť prítomné aj iné verzie JDK, ale má byť vytvorený nasledujúci súbor:
    ~/.config/icedtea-web/deployment.properties:
deployment.log=true
deployment.plugin.jvm.arguments=--add-exports\=java.base/jdk.internal.util.jar\=ALL-UNNAMED -jar /usr/share/java/jaxb-api.jar -jar /usr/share/java/jaxb-core.jar
 -jar /usr/share/java/jaxb-impl.jar -jar /usr/share/java/jaxb-runtime.jar --add-modules java.xml.bind --add-exports\=java.xml.bind/javax.xml.bind\=ALL-UNNAMED -
-add-exports\=javax.xml.bind/javax.xml.bind\=ALL-UNNAMED
deployment.log.file=true
deployment.security.level=ASK_UNSIGNED
deployment.jre.dir=/usr/lib/jvm/java-8-openjdk-amd64

Je možné, že argumentý v druhom riadku nie sú povinné, len teraz to neviem overiť, keďže som skúšal rôzne verzie JDK. Log file je užitočné vytvárať, aby sa dalo riešiť problémy, keby niečo.

7 Likes

super, pekne omnoho elegantnejsie riesenie ako moje

Toto funguje aj mne na Zorin OS. Parada, diky :wink: Som s tym bojoval tiez hodnu chvilu

S vyssie uvedenym postupom sa este stale nebude dat podpisovat XML subory. Na to treba JFX, ktore nie je sucastou OpenJDK 8. Takze su opat dve moznosti:

  1. nainstalovat este aj OpenJFX 8
    sudo apt install openjfx=8u161-b12-1ubuntu2 libopenjfx-java=8u161-b12-1ubuntu2 libopenjfx-jni=8u161-b12-1ubuntu2 openjfx-source=8u161-b12-1ubuntu2
  2. nainstalovat nejake ine JDK, ktoreho je JFX sucastou. Najlepsie fakt Oracle JDK. Potom netreba ani icedtea instalovat, lebo javaws je tiez jeho sucastou
2 Likes

Dobry den,
zaujal ma tento postup. Pouzivam Linux Mint 19.3 a nefunguje mi elektronicky podpis (KEP) po opatovnej instalacii linuxu. Uz som mal raz vsetko nainstalovane a vsetko fungovalo. Teraz si s tym neviem pomoct a rady zo slovensko.sk som nebol schopny aplikovat, resp. nic nepomohlo. Mozete upresnit konkretnym prikazom ako vytvorit subor
~/.config/icedtea-web/deployment.properties
resp. ak je toto prikaz pre terminal, tak mne to nefunguje. Prosim o co najjednoduchsi postup, som len bezny uzivatel linuxu, nemam s programovanim ziadne skusenosti.
Dakujem.

Zdravim,

je to jednoduche, spustite si terminal
cd ~/.config
mkdir icedtea-web

potom treba otvorit lubovolny textovy editor (v Mint je to tusim xed)
a tam napisat:

deployment.log=true
deployment.plugin.jvm.arguments=–add-exports=java.base/jdk.internal.util.jar=ALL-UNNAMED -jar /usr/share/java/jaxb-api.jar -jar /usr/share/java/jaxb-core.jar
-jar /usr/share/java/jaxb-impl.jar -jar /usr/share/java/jaxb-runtime.jar --add-modules java.xml.bind --add-exports=java.xml.bind/javax.xml.bind=ALL-UNNAMED -
-add-exports=javax.xml.bind/javax.xml.bind=ALL-UNNAMED
deployment.log.file=true
deployment.security.level=ASK_UNSIGNED
deployment.jre.dir=/usr/lib/jvm/java-8-openjdk-amd64

a dat Ulozit ako
~/.config/icedtea-web/deployment.properties

tento postup by mal vytvorit dane deployments

ps. predpokladam ze vsetky tie potrebne balicky mate nainstalovane

3 Likes

Zdravim,

ktore XML subory sa nebudu dat podpisat? Ja bezne podavam DPHcku a tam podpisujem aj XML subor ci sa niekde seredne mylim ?

Prosím neodporučajte nikomu Oracle JDK, nie je to podporované, licencia nedovoluje biznis, komerčné alebo akékoľvek produkčné použitie a navyše OpenJDK je štandard, nie Oracle JDK.

Ďalšia vec je, že vôbec nie je potrebné tieto presné verzie, mne to funguje s 11.*.

1 Like

Presiel som si topic, ale nevidim tam doporucovanie Oracle SDK, teda okrem “navodu” ktory mi prisiel priamo od supportu na slovensko.sk

No mne neslo podpisat danove priznanie k dani z nehnutelnosti v Presove. Hlavne som bojoval s tym, ze na vizualizaciu toho XML v podpisovom okne potrebuje JavaFX. JavaFX uz nie je sucastou OpenJDK od verzie 8. Preto treba doinstaloval OpenJFX. A preto som aj odporucal Oracle JDK. Ospravedlnujem sa, nestudoval som detajlne licenciu. Fakt je, ze Oracle JDK obsahuje aj Java WS aj JFX a podpisovaci workflow je podstatne rychlejsi. IcedTea startuje neskutocne dlho.

Dakujem. Po zadani prvych prikazov do terminalu bola takato odpoved:
:~/.config$ mkdir .icedtea-web
mkdir: nie je možné vytvoriť adresár `.icedtea-web’: Súbor existuje

Tento subor som nasledne vytvoril v textovom editore a ulozil s tymto nazvom: ~/.config/icedtea-web/deployment.properties
Pri ukladani bolo upozornenie, ze sa zmena prepise v IcedTea.

Nasledne som skusil odoslat doklad s podpisanim. Dostal som sa dalej, ale len po vysledok v prilozenom obrazku.

pred icedtea-web mate bodku. Pozeram, ze ja som mal ten preklep v mojom poste. Ospravedlnujem sa za chybu.
Je zaujimave ze tam mate subor “.icedtea-web”, lebo neviem co tam moze byt.
Cize nasledne ked ste chceli ulozit subor, tak priznam neviem kde sa ulozil.
Opravujem moj post

Neviem ako sa tam dostala bodka, ale tu je pokus druhy (vypis z terminalu), vysledok rovnaky:

~/.config$ mkdir icedtea-web
mkdir: nie je možné vytvoriť adresár `icedtea-web’: Súbor existuje

OK. Info aj pre ostatných: Urobil som chybu pri vytváraní súboru v textovom editore. Po oprave to funguje. Je možné odoslať správu podpísanú prostredníctvom KEP na stránke slovensko.sk, alebo financnasprava.sk

Funguje to aj s verziou javy, ktorá sa inštaluje automaticky, teda momentálne openjdk 11. Tiež som totiž na základe doporučení menil verziu javy na iné, ktoré údajne mali fungovať.

Moja otázka ešte je, či nebude problém v budúcnosti pri automatických aktualizáciách linuxu a súvisiacich programov, keďže ako laik netuším aký to bol vlastne zásah a či to budem musieť urobiť odteraz vždy pri preinštalovaní linuxu až dokedy nebude vytvorený modernejší spôsob podpisovania dokumentov na slovensko.sk ?

Ahojte, na service desk Slovensko.Digital lepsiesluzby.sk nam prisiel takyto podnet: https://lepsiesluzby.sk/jira/browse/SDM-100

"Na linuxe nejde korektne D.Signer - pri podpisovani cez financnasprava.sk sa sice spusti D.Launcher, nasledne java cez IcedTea, ale po stiahnuti D.Signer cez javu sa uz podpisove okno nikdy neobjavi.

Problem pretrvava uz niekolko mesiacov a podpora Ministerstva Vnutra je protivna, lebo sa vyhovaraju, ze je to produkt tretej strany a posielaju ma od certa k diablovi, ze nech si to riesim s Ditecom.

Frustrated…"

viete prosim niekto poradit.
Dakujem.

nuz, nech si pozrie debatu vyssie. Nepise o aky linux sa jedna, ake verzie atd.