image LibreOffice — мощный офисный пакет. LibreOffice бесплатен и имеет открытый исходный код.

Офисный пакет содержит в себе текстовый и табличный процессор, программу для подготовки и просмотра презентаций, векторный графический редактор, систему управления базами данных и редактор формул:

image

Более того, проводимая политика импортозамещения, когда на столах чиновников вместо MS Windows все чаще появляются отечественные форки Linux, способствует широкому распространению пакета LibreOffice и в органах государственного управления.

LibreOffice интенсивно развивается и с момента своего появления вобрал в себя множество дополнительных возможностей. Одной из таких возможностей является электронная подпись (цифровая подпись в терминологии LibreOffice) документа. Для формирования электронной подписи (Файл > Цифровые подписи > Цифровые подписи … > Подписать документ) используются личные сертификаты:

image

Глядя на картинку, у неискушенного пользователя (а тем более у чиновника) возникает глубокое чувство непонимания: что за файл собирается открываться, что за пароль должен вводиться!

Следует отметить, что это не очень удачный перевод разработчиков LibreOffice. Речь идет не о файле, а о токене/смарткарте PKCS#11, и не о пароле, а о пользовательском PIN-коде для токена. Должно быть что-то следующего вида:

image

Тут мы подошли к главному вопросу: где и как хранятся сертификаты, которые LibreOffice использует для формирования электронной подписи документов?

В качестве хранилища сертификатов LibreOffice использует, как правило, хранилища сертификатов, создаваемых и поддерживаемых продуктами Mozilla (Firefox, Thunderbird, SeaMonkey). По умолчанию это хранилище сертификатов почтового клиента Thunderbird (Сервис > Параметры… > Безопасность > Сертификат…):

image

Хранилища сертификатов для продуктов Mozilla создаются средствами пакета NSS (Network Security Services). С помощью утилит командной строки можно создать и свое хранилище сертификатов, например:

bash-4.3$ cd /home/a513/tmp 
bash-4.3$ mkdir db_for_libre 
bash-4.3$ modutil -create -dbdir /home/a513/tmp/db_for_libre 
WARNING: Performing this operation while the browser is running could cause 
corruption of your security databases. If the browser is currently running, 
you should exit browser before continuing this operation. Type  
'q <enter>' to abort, or <enter> to continue:  
bash-4.3$ ls -l db_for_libre 
итого 60 
-rw------- 1 a513 a513 65536 авг 31 16:49 cert8.db 
-rw------- 1 a513 a513 16384 авг 31 16:49 key3.db 
-rw------- 1 a513 a513 16384 авг 31 16:49 secmod.db 
bash-4.3$

Созданное хранилище сертификатов в каталоге /home/a513/tmp/db_for_libre содержит три базы данных, а именно cert8.db, key3.db и secmod.db. Для их создания используется старая версия базы данных Berkeley (обычно она описывается в документах NSS как« DBM ») в отличие от хранилища сертификатов, скажем, в google-chrome, для создания и поддержки которого также используется пакет NSS, но для поддержки баз данных (cert9.db, key4.db и pkcs11.txt) в хранилище используется механизм SQLite3. Для работы и с тем и другим хранилищем используются одни и те же утилиты NSS, просто в параметре –d (каталог хранилища) перед путем к хранилищу, если вы собираетесь работать с новым форматом (SQLite3) хранилища, достаточно указать префикс: -d sql:<путь к хранилищу>.

Более того, также просто из хранилища сертификатов старого формата (cert8.db, key3.db и secmod.db) создается и хранилище в новом формате (cert9.db, key4.db и pkcs11.txt). Для этого достаточно выполнить утилиту работы с сертификатами certutil в режиме просмотра ключей (-K) или сертификатов (-L) с параметром –X:

bash-4.3$ ls -l /home/a513/tmp/db_for_libre/ 
итого 60 
-rw------- 1 a513 a513 65536 авг 31 17:56 cert8.db 
-rw------- 1 a513 a513 16384 авг 31 17:56 key3.db 
-rw------- 1 a513 a513 16384 авг 31 16:49 secmod.db 
bash-4.3$ certutil -L -d sql:/home/a513/tmp/db_for_libre -X  
Certificate Nickname             Trust Attributes   SSL,S/MIME, JAR/XPI 
bash-4.3$ ls -l /home/a513/tmp/db_for_libre/                
итого 120 
-rw------- 1 a513 a513 65536 авг 31 17:56 cert8.db 
-rw------- 1 a513 a513 28672 авг 31 17:56 cert9.db 
-rw------- 1 a513 a513 16384 авг 31 17:56 key3.db 
-rw------- 1 a513 a513 28672 авг 31 17:56 key4.db 
-rw------- 1 a513 a513   440 авг 31 17:56 pkcs11.txt 
-rw------- 1 a513 a513 16384 авг 31 16:49 secmod.db 
bash-4.3$

Как видим, теперь в хранилище есть базы данных как в старом, так и новом форматах.
К сожалению, обратное преобразование мне неизвестно и поэтому новые хранилища сертификатов, например, google-chrome (~/.pki) в LibreOffice недоступны.

Пакет NSS поддерживает работу с токенами/смарткартами PKCS#11, на которых, как правило, и хранят свои личные сертификаты с закрытыми ключами пользователи. Отметим, что личные сертификаты сегодня получают в удостоверяющих центрах .

Итак, мы остановились на том, что у нас был запрошен PIN-код к токену. Подключить токены/смарткарты PKCS#11 можно как через Firefox, Thunderbir, Seamonkey, так и утилитой modutil. Например, для подключения облачного токена достаточно выполнить команду:

$modutil –add LS11CLOUD2016 –libfile libls11cloud.so –dbdir /home/a513/tmp/db_for_libre 
$

Именно к этому токену LibreOffice и запросил пароль:

image

После ввода пароля будет доступен список личных сертификатов, которые можно использовать для формирования подписи. Здесь также можно просмотреть содержимое сертификатов:

image

Как только будет выбран сертификат, произойдет формирование электронной подписи:

image

Теперь, когда документ будет заново открыт для работы с ним, то по наличию корректной подписи можно быть уверенным, что документ никем не правился. В противном случае доверия к документу нет.

В заключение еще несколько слов о работе с хранилищем сертификатов. Если пользователь решил создавать свое хранилище отличное от продуктов Mozilla и для этого использовать утилиты командной строки NSS, то удобно воспользоваться графической оболочкой GUINSS, которую можно скачать здесь.

Данная утилита позволяет подключать токены/смарткарты, импортировать корневые сертификаты и сертификаты из защищенного контейнераPKCS#12. Позволяет также создавать запросы (CSR) на сертификаты в формате PKCS#10:

image

Сформированный запрос на сертификат может быть отправлен в УЦ для получения сертификата:

image

Созданное хранилище может найти применение и за рамками LibreOffice.

Комментарии (7)


  1. Denkenmacht
    01.09.2017 03:46
    +3

    GUI для NSS выглядит омерзительно.


    1. vip1953
      01.09.2017 07:17
      +1

      Комментарий так себе. А что лучше?


      1. Denkenmacht
        01.09.2017 07:49

        Раз уж в конце статьи дается ненавязчивая реклама одного удостоверяющего центра, то она должна быть красивой, а не вырвиглазной.
        Достаточно было сделать два выпадающих меню — функции и типы сертификатов, а также не использовать набор цветов как для слабовидящих.


        1. saipr Автор
          01.09.2017 08:55

          Реклама УЦ? Где вы ее увидели. Это скриншот с ТЕСТОВОГО УЦ, куда можно отправить CSR в формате PKCS#10. Его рекламируй не рекламируй толку нет. А вот для тестовых целей кто-нибудь и сможет использовать абсолютно свободно!!! Какие типы сертификатов, — он один x509 v.3. А если вы имеете ввиду для физических лиц, юридических лиц, индивидульных предпринимателей, да еще квалифицированный, то это все расписано и Законе и требованиях ФСБ. Может вы имели ввиду этот УЦ? Но про него нет ни слова


    1. AntonAlekseevich
      01.09.2017 07:38
      +1

      GUI для NSS выглядит омерзительно.

      Вам никто не мешает сделать его лучше.


    1. saipr Автор
      02.09.2017 17:06

      А теперь?


  1. sim53
    01.09.2017 07:38

    А по мне так миленько