Skip to content

By Тодор in Linux

Според издателя на квалифицирания електронен подпис, инсталацията му в линукс е предизвикателство от различно ниво. Приемам, че подписа е коректно инсталиран според заводската му документация, и че плъгина на Firefox работи.

Това е достатъчно, за да се влезе в почти всеки сайт искащ удостоверяване с КЕП. Включително и в портала с електронни услуги, предоставяни от Националната Агенция по Приходите (НАП).

За да свършим някаква работа в този портал, обаче, само удостоверяването при влизане не е достатъчно. Всичко, което се попълва и изпраща, трябва да е допълнително подписано. А това става с… Java приложение разбира се 🙂

В Linux Mint 19.03 е необходимо да се инсталира icedtea-netx:

sudo apt install icedtea-netx

След това вече jnlp-то може да се изпълни, за да видим това:

StampIT LocalServices cannot start: access denied (“java.util.PropertyPermission” “com.sun.net.httpserver.HttpserverProvider” “read”)

И тук приказквата свършва.

Всичкото търсене води до стари документи обясняващи как да ползваме вече не съществуващи плъгини и методи. Firefox ликвидира Java плъгина преди време, защото е твърде голяма дупка.

Необходимо е да се инсталира “оригиналният” пакет Oracle Java.

Изтегляме актуалната Жава от https://java.com/en/download/linux_manual.jsp

След, като се разкомпресира пакета, се мести на подходящо място:

sudo mkdir -p -v /opt/java/64
sudo mv -v jre1.* /opt/java/64

Правим новото JRE по подразбиране:

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/64/jre1.8.0_241/bin/java" 1
sudo update-alternatives --set java /opt/java/64/jre1.8.0_241/bin/java

Добра идея е да ограничим размера на дисковия кеш след това:

/opt/java/64/jre1.8.0_241/bin/ControlPanel

 

И сега, най-ключовия момент – да кажем на icedtea да ползва новата Жава, вместо вградената:

Това е всичко.

Приятно подаване и подписване!

Tags: , , , , , , , , , , ,

Comment Feed

12 Responses

  1. Алекс01.04.2020 @ 1:43 pm

    Здрасти, колега!
    И аз като теб боря тъмната материя на НАП и Митницата. И аз стигнах до момента с изпълнението на JNLP файла. Първоначално пробвах с icedtea, после се сетих, че javaws има във всеки пакет на java-та, просто трябва да се укаже в свойствата на JNLP файла да се изпълнява чрез даден javaws (ако имаш инсталирани повече Java-и),
    За съжаление при мен при опит за подписване се стартира приложението StampIT Local Services, но натам – нищо. Това под Linux Mint 19.1
    Иначе, с Win го нагласих и там работи – стартира се приложението за подпис и т.н.
    МД, за работа с митниците е необходима Java v.7, докато за НАП трябва v.8 – идиотщина някаква.
    Ако имаш някаква идея какво може да се чупи, помагай!

  2. StampIT приложението като се стартира трябва да заеме порт tcp/8090, на който очаква заявки за подписване. Провери дали това се случва или дали порта не е зает от нещо друго:
    netstat -nalp | grep 8090

  3. Алекс02.04.2020 @ 1:47 pm

    То приложението се стартира на порт 8090, проблемът е, че след това не се продължава.
    Под Windows, обаче, слухти на порт 8089. И като заговорихме за портове, се сетих да видя какви заявки има към това приложение. Пуснах един tcpdump и ето резИлтата:

    13:16:33.251551 IP 127.0.0.1.34352 > 127.0.0.1.8089: Flags [S], seq 3899605630, win 65495, options [mss 65495,sackOK,TS val 1239497822 ecr 0,nop,wscale 7], length 0
    13:16:33.251559 IP 127.0.0.1.8089 > 127.0.0.1.34352: Flags [R.], seq 0, ack 3899605631, win 0, length 0
    13:16:33.251897 IP 127.0.0.1.34354 > 127.0.0.1.8089: Flags [S], seq 3609303835, win 65495, options [mss 65495,sackOK,TS val 1239497823 ecr 0,nop,wscale 7], length 0
    13:16:33.251902 IP 127.0.0.1.8089 > 127.0.0.1.34354: Flags [R.], seq 0, ack 3609303836, win 0, length 0

    Нещо прави два опита за връзка на порт 8089 (Flags [S], т.е. SYN-пакет), но тъй като там няма никой, на следващите редове ОС-а връща RESET-и (Flags [R.]). Т.е., възниква въпроса защо под Win StampIT приложението слуша на порт 8089, а под Linux – на порт 8090. А, да – към порт 8090 няма и счупен пакет.

  4. Алекс02.04.2020 @ 10:24 pm

    Да завърша епопеята: днес се свързах с човек, който се занимава професионално с тези неща, беше изключително отзивчив, даже конфигурира лаптопа ми през anydesk.
    Та с две думи – последният Firefox + последната Java и всичко е ОК.
    Голямо благодарско на Елин.

  5. Мариан11.04.2020 @ 3:48 pm

    Аз сложих Oracle-ската JAVA 11 и пак не сработи. Продължавам да получавам същата грешка, която е описана по-горе.

  6. Мариан11.04.2020 @ 5:16 pm

    След известно мъчение го подкарах.
    Сложих jdk1.8.0_241 от Oracle, и копирах файла rt.jar от /lib/jre/rt.jar в /lib/rt.jar, тъй като след-като променях JVM Setting-a на IcedTea излизаше warning относно този файл.
    След това успях да стартирам stampitls-vat.jnlp използвайки javaws.
    javaws stampitls-vat.jnlp

  7. @Мариан, на каква дистрибуция се получава така?

  8. leon11.09.2020 @ 1:56 pm

    Благодаря! Много полезна статия.

  9. victor09.01.2021 @ 2:39 am

    Благодаря и аз! Всичко си тръгна като последвах съветите и копирах rt.jar Статията е светъл лъч в тъмните дебри на вечно недоузрелите неща около подписите, браузърите, Линукс и родните държавни системи. Айде със здраве!

  10. JULIAN22.03.2021 @ 11:31 pm

    Много ми помогна и на мен статията и коментарите.
    В крайна сметка мога да съмъризирам какво направих в Ubuntu 20.04 LTS за да подкарам b-trust подписване:

    Инсталиране на необходимите библиотеки + JRE
    $ sudo apt install openjdk-8-jre-headless libpcsclite-dev libpcsclite1 pcscd icedtea-netx

    Версията, която има нужда BISS приложението за локално подписване е 1.8:
    $ java -version
    openjdk version “1.8.0_282”

    Стартирате десктоп приложението IcedTea Web Control Panel

    и в JVM Settings в полето за “Set JVM for IcedTea-Web”:
    записвате резултата от командата изпълнена в терминала:
    $ update-java-alternatives -l| awk ‘BEGIN { FS = ” ” } ; {print $3}’ |grep 1.8

    при мен това е: /usr/lib/jvm/java-1.8.0-openjdk-amd64
    който се ползва и в следващата команда по-долу.

    Проблема, който се вижда, че неоткрива rt.jar се решава със симлинк:

    $ sudo ln -s /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

    От сайта на b-trust се дърпат:
    B-Trust-Gemalto-Linux-2020-05-28.tar (това е за моя модел usb e-sign drive)
    и
    B-TrustBISS.tar
    Разархивират се в отделни папки и се инсталират от двете папки съответните 2 deb пакета:
    Gemalto_Ubuntu_x64bit_18_04.deb
    btrustbiss.deb

    Последния изисква Java 8, заради JavaFX

    Това работи за мен – като специално сложих Ubuntu 20.04 + Firefox на един usb flash drive единствено за нуждите на електронното подписване, като изрично посочени и поддържани от b-trust (с огромни уговорки и компромиси).

  11. JULIAN22.03.2021 @ 11:55 pm

    Трябва да се инсталират разбира се и:
    Базови удостоверения и Оперативни удостоверения
    https://www.b-trust.bg/services/certification-chains-installation
    Които импортнах в самия Firefox -> Preferences -> Certificates -> View.. -> Import

  12. Много благодаря за RTFM-то! 😀
    Всичко работи на max. Инструкциите са тествани с:
    – Linux Mint 19.2
    – КЕП на stampit
    – Firefox 89.0

    Единствената промяна в синтаксиса беше версията “jre1.8.0_291” (вместо 241).
    Поздрави!



Some HTML is OK

or, reply to this post via trackback.