середа, 3 січня 2018 р.

ЕЦП PrivateSign в Linux

Пов’язане зображенняПриватбанк має свій авторизований центр сертифікації ключів (АЦСК) та пропонує своїм клієнтам безкоштовно скористатися можливістю підписувати та шифрувати документи цифровим підписом.

Ця можливість надається як користувачам Windows так і власникам Linux та MacOS. Для цього існує програмне забезпечення PrivateSign, розроблене на мові Java. Отримати його можна за адресою https://acsk.privatbank.ua/program. Там само є й інструкції по встановленню.

Та, як часто це буває, є момент, що не дозволяє скористатися цією програмою тим користувачам Linux, які не використовують файловий менеджер Nautilus. Адже програма вбудовується в контекстне меню лише цього менеджера. А окремої графічної оболонки, з-під якої можна викликати функції підпису, перевірки, шифрування-дешифрування немає.

Втім, все дуже просто і для інших менеджерів. У мене, до прикладу, Xfce з менеджером Thunar. Тому я вирішив доробити собі в контекстному меню відсутні функції цифрового підпису.

Перш за все встановлюємо PrivateSign згідно інструкції. Під час інсталяції може виникнути повідомлення "gksu... виконано неуспішно". Це не страшно. Думаю, що це просто наслідок відсутності Nautilus. Зрештою, програма успішно встановлюється в домашній каталог користувача в папку PrivateSign.

В цій папці є файл apb_lib.jar, який вміє виконувати всі необхідні функції по роботі з ЕЦП. Запуск цього файлу слід робити таким чином:

java -jar $APB_HOME/apb_lib.jar

При першому запуску відкриється вікно налаштувань. Там треба вказати шлях до ключа, проксі та решту налаштувань - все згідно інструкції з офіційного сайту програми.

Тепер перейдемо до формування контекстного меню. Перш за все зверніть увагу, що у файлі ~/PrivateSign/3.zip є скрипти для запуску всіх функцій програми. По них можна розібратися, як сформувати власні команди чи пункти контекстного меню.

Отже, запускаємо файловий менеджер, обираємо меню Зміни->Налаштувати Особливі Дії. В діалозі налаштувань особливих дій додаємо новий пункт "Підписати документ". Ось як це виглядає:



Команда для функції "Підписати документ":

java -jar $APB_HOME/apb_lib.jar -c:sign -f:%f

Команда для функції "Перевірити підпис":

java -jar $APB_HOME/apb_lib.jar -c:verify -f:%f

Команда для функції "Підписати файли в папці":

java -jar $APB_HOME/apb_lib.jar -c:signall -f:%d

Команда для функції "Зашифрувати документ":

java -jar $APB_HOME/apb_lib.jar -c:encrypt -f:%f

Команда для функції "Розшифрувати документ":

java -jar $APB_HOME/apb_lib.jar -c:decrypt -f:%f

У вкладці "Умови появи" можна визначити, для яких саме файлів показувати певні пункти контекстного меню.

Я собі додатково налаштував навіть іконку Privatbank, щоб розуміти, який АЦСК використовується для цих операцій. Зрештою вийшло щось таке:


Після цих дій можна легесенько підписувати документи і перевіряти підписи.

Зауважу, що функція працює лише за наявності доступу до інтернет для з'єднання з АСЦК. Але це і так очевидно.

Налаштування Thunar можна зробити і через файл ~/.config/Thunar/uca.xml. В нього в текстовому вигляді можна додати actions:

<action>
    <icon>/home/user/PrivateSign/privat24.png</icon>
    <name>Підписати документ</name>
    <unique-id>1515034750124984-14</unique-id>
    <command>java -jar $APB_HOME/apb_lib.jar -c:sign -f:%f</command>
    <description></description>
    <patterns>*</patterns>
    <audio-files/>
    <image-files/>
    <other-files/>
    <text-files/>
</action>
<action>
    <icon>/home/user/PrivateSign/privat24.png</icon>
    <name>Перевірити підпис</name>
    <unique-id>1515034781504507-15</unique-id>
    <command>java -jar $APB_HOME/apb_lib.jar -c:verify -f:%f</command>
    <description></description>
    <patterns>*.sig</patterns>
    <other-files/>
</action>
<action>
    <icon>/home/user/PrivateSign/privat24.png</icon>
    <name>Підписати документи в папці</name>
    <unique-id>1515034811965749-16</unique-id>
    <command>java -jar $APB_HOME/apb_lib.jar -c:signall -f:%d</command>
    <description></description>
    <patterns>*</patterns>
    <directories/>
</action>
<action>
    <icon>/home/user/PrivateSign/privat24.png</icon>
    <name>Зашифрувати документ</name>
    <unique-id>1515034915056476-18</unique-id>
    <command>java -jar $APB_HOME/apb_lib.jar -c:encrypt -f:%f</command>
    <description></description>
    <patterns>*</patterns>
    <audio-files/>
    <image-files/>
    <other-files/>
    <text-files/>
</action>
<action>
    <icon>/home/user/PrivateSign/privat24.png</icon>
    <name>Розшифрувати документ</name>
    <unique-id>1515034990664432-19</unique-id>
    <command>java -jar $APB_HOME/apb_lib.jar -c:decrypt -f:%f</command>
    <description></description>
    <patterns>*.enc</patterns>
    <other-files/>
</action>

Джерела: