Как подписать документ электронной подписью в libreoffice
ищем Digital Signature in help:
Getting a Certificate
You can get a certificate from a certification authority, which may be a private company or a governmental institution. Some certification authorities want money for their service, for example when they certify your identity. Other certificates are free of costs, for example those offered by some e-mail providers, which certify your e-mail address. A few of the companies that offer certificates to private persons are listed in the following, in alphabetical order: GlobalSign, Verisign.
Managing your Certificates
If you are using Microsoft Windows, you can manage your certificates from the Control Panel applet "Internet Options" on the "Contents" tab page.
Import your new root certificate into the Trusted Root Certification Authorities list.
Signing a document
1. Choose File - Digital Signatures.
2. A message box advises you to save the document. Click Yes to save the file.
3. After saving, you see the Digital Signatures dialog. Click Add to add a public key to the document.
4. In the Select Certificate dialog, select your certificate and click OK.
5. You see again the Digital Signatures dialog, where you can add more certificates if you want. Click OK to add the public key to the saved file.
A signed document shows an icon in the status bar. You can double-click the icon in the status bar to view the certificate.
The result of the signature validation is displayed in the status bar and within the Digital Signature dialog. Several documents and macro signatures can exist inside an ODF document. If there is a problem with one signature, then the validation result of that one signature is assumed for all signatures. That is, if there are ten valid signatures and one invalid signature, then the status bar and the status field in the dialog will flag the signature as invalid.
Signing the macros inside a document
Normally, macros are part of a document. If you sign a document, the macros inside the document are signed automatically. If you want to sign only the macros, but not the document, proceed as follows:
1. Choose Tools - Macros - Digital Signature.
2. Apply the signature as described above for documents.
When you open the Basic IDE that contains signed macros, you see an icon in the status bar. You can double-click the icon in the status bar to view the certificate.
Добавлено:
я буду экпериментировать с двумя сертификатами: первым это CryptoPro CSP, полученным мною на УЭК. Правда не сразу, нужно еще перезаписать его, т.к мне в него не включили поддержку электронной почты, но для подписи документов Open Office это роли не играет
И вот, выполнив свой гражданский долг, я решил еще раз проверить работу электронной подписи в офисном пакете libreoffice.
Почему я решил это сделать? Для доступа к порталу Госуслуг я использую ОС Linux и браузер Redfox, который представляет собой доработанный с учетом поддержки российской криптографии браузер Mozilla Firefox. Как известно, офисный пакет libreoffice в качестве хранилища сертификатов также использует хранилище NSS.
Браузер Redfox-52 был установлен в папку /usr/local/lib64/firefox-52.
Для подключения библиотек пакета NSS (Network Security Services) с поддержкой ГОСТ-алгоритмов устанавливаем значение переменной LD_LIBRARY_PATH следующим образом:
В качестве хранилища сертификатов в libreoffice как правило используется хранилище сертификатов из браузера Firefox, почтового клиента Thunderbird или интегрированного пакета Seamonkey. Ничто не мешает использовать хранилище сертификатов браузеров GoogleChrome/Cromium или создать свое независмое хранилище (Сервис->Параметры->Безопасность->Сертификат):
После того как выбрано хранилище, подключены библиотеки, запускаем libreoffice, создаем файл формата odt и пытаемся его подписать (Файл->Цифровые подписи->Цифровые подписи).
Сертификаты в хранилище Firefox/NSS успешно отображаются и проверяются:
Однако, подпись после выбора сертификата и нажатия кнопки «ОК» не формируется:
Похоже libreoffice не хочет понимать российские криптоалгоритмы, несмотря на то, что используется NSS из браузера Redfox, который понимает ГОСТ-овые алгоритмы, что подтверждается успешной проверкой сертификатов.
Делаем вторую попытку: на этот раз попытаемся подписать PDF-файл. Для этого подготовленный документ экспортируем в PDF-формат. Для подписания PDF-файла его, естественно, необходимо загрузить (Файл->Цифровые подписи->Подписать PDF). После его загрузки пытаемся его подписать (Файл->Цифровые подписи->Цифровые подписи) (см.выше, выбираем сертификат, прописываем, например, цель подписания документа):
И подпись формируется. Мы видим, что подпись, сформирования на базе сертификата «Test 12 512» с ключом ГОСТ Р 34.10-2012 512 бит. Подпись верна.
Выходим из libreoffice. Снова запускаем libreoffice, загружаем подписанный pdf-файл, проверяем подписи. Все ОК. Просматривает сертификаты подписантов. Все ОК. Чудеса! Подпись PDF-файлов работает. Ставим вторую, третью подпись… Все работает. Но что-то не дает покоя. Делаем дополнительную проверку.
Открываем подписанный PDF-файл (я использовал встроенный редактор от mc – Midnight Commander — консольный файловый менеджер для Linux). Находим электронную подпись (/Type/Sig/ ):
Как видим, подпись хранится в символьном шестнадцатеричном виде. Копируем ее и сохраняем в файле. Для конвертации файла в бинарный вид (DER-кодировка) воспользуемся утилитой xxd:
И тут стало понятно, что не все так хорошо. Да, алгоритм подписи Digest Encryption Algorithm: GOST R 34.10-2012 Key 512 в соответствии с выбранным для подписи сертификатом, но подпись формируется от хэша, посчитанному по алгоритму SHA-256 (Digest Algorithm (1): SHA-256). А это неправильно с точки: хэш для GOST R 34.10-2012 Key 512 должен считаться по алгоритму ГОСТ Р 34.11-2012-512.
Приступаем а анализу исходного кода libreoffice: не так страшен черт как его малюют. В данной статье мы рассматриваем использование пакета NSS для формирования электронной подписи. Если кто предпочитает на платформе MS Windows, использовать CryptoAPI (и, соответственно, ГОСТ-CSP), может по аналогии с данным материалом сделать соответствующую доработку.
Анилиз показал, что правки придется внести всего в два файла:
—
Эти изменения связаны с правильным выбором хэш-функции для ГОСТ-овых сертификатов. Выбор хэш-функции будем определять в зависимости от типа ключа сертификата. Выбор хэш-алгоритма, например, в PDFWriter::Sign (файл pdfwriter_impl.cxx) будет выглядеть так:
Остальные изменения по логике аналогичны этим. Патч для файла
После внесения изменений проводим сборку пакета libreoffice. Внесенные изменения коснулись трех библиотек (/usr/lib64/libreoffice/program):
- libvcllo.so;
- libxmlsecurity.so;
- libxsec-xmlsec.so
После этого подписание и проверка ГОСТ-подписи в PDF-файлах прошла без сучка и задоринки. И тут на одном из сайтов попадается на глаза такая выдержка:
Заказываем, получаем и проверяем:
Стоит напомнить, что не следует забывать устанавливать в хранилище цепочку доверенных сертификатов для сертификата подписанта. Но это естественно.
Все, теперь есть возможность использования электронной подписи (одной или несколько) в PDF-файлах. Это очень удобно как при согласовании документов, так и хранении документов.
Разработка велась на Python3 и если на платформе Linux проблем не было, то на MS Windows пришлось попотеть с кодировками. Фактически это была отдельная разработка и это требует отдельной статьи. Все эти нюансы можно увидеть в исходном коде.
С помощью этой утилиты можно создать хранилище сертификатов для libreoffice, управлять сертификатами, подписывать файлы и т.д.:
Утилита также позволяет создать запрос на сертификат с генерацией ключевой пары, который затем можно передать в удостоверяющий центр, а полученный сертификат установить в хранилище:
И вот если производители отечественных форков Linux доработали различные пакеты (NSS, Firefox, Thunderbiird, GnuPG/SMIME, SSH, KMail, Kleopatra, LibreOffice, OpenSSL, и т.д и т.п.) для работы с российской криптографией, то тогда можно было бы говорить об импортозамещении в области криптографии.
Libreoffice — это многофункциональный офисный пакет для настольных компьютерных систем с открытым программным обеспечением. С его помощью можно создавать текстовые документы, таблицы, презентации, векторную графику, системы баз данных и математические формулы.
Программа использует OpenDocument Format(ODF) — файл в XML-формате. Стандарт этого файла разработан некоммерческой организацией по стандартизации — OASIS. Цель создания — разработка независимого формата, который читается в любом текстовом редакторе, без привязки к определённому программному обеспечению и работает на любой операционной системе.
Принят 1 мая 2006 года независимым комитетом по стандартам как международный стандарт ISO/IEC 26300. В июле 2015 года стандартизован ODF версии 1.2 (ISO/IEC 26300-1:2015).
Политика разработчиков предусматривает бесплатное скачивание, установку и свободное распространение LibreOffice без нарушения авторского права. Это способствует популярности программного обеспечения в органах государственного управления.
Благодаря поддержке более 40 языков и открытому формату файла, пользователи со всего мира модифицируют, тестируют новые версии и предлагают свои идеи касательно развития проекта, учитывая актуальные тенденции, применяемые к электронным документам. Одна из таких тенденций электронная цифровая подпись (ЭЦП).
Как подписать документ в libreoffice
Для подписания документов в программе вам понадобится ПО КриптоАРМ (для локальной подписи и шифрования файлов) и ЭЦП. Всё необходимое для работы с электронной подписью вы можете приобрести в нашем УЦ «Астрал-М» по выгодной цене, заполнив форму обратной связи.
Типы файлов и расширения
Mime-типы и расширения файлов, которые можно подписать с помощью LibreOffice и СКЗИ КриптоПро:
Подписание ODF документов
Для примера будет использоваться ПО "Текст LibreOffice"
- Запустить текстовый редактор LibreOffice:
- "Пуск" — "Офис" — "Текст LibreOffice"
- Открыть нужный *.odt документ
- перейти в меню
- "Файл" — "Цифровые подписи" — "Цифровые подписи. "
- Нажать кнопку «Подписать документ. »;
- В открывшемся окне следует выбрать нужный сертификат и нажать кнопку «Подписать»;
Подпись макросов в документе
Подпись макросов в документе происходит автоматически. Для того чтобы подписать только макросы, необходимо выбрать команду «Сервис» - «Макросы» - «Цифровые подписи», далее действия, описанные выше.
Подпись и проверка подписи opendocument форматов файлов на алгоритмах ГОСТ 2001-го и 2012-го годов (последний -- в исполнении с ключами длиной 256 бит) поддерживаются в:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с установленным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5);
- Astra Linux Special Edition РУСБ.10015-16 исп. 1 с установленным обновлением Бюллетень Update 1 № 20201007SE16;
- Astra Linux Common Edition 2.12.
Для подписания файлов opendocument используются программы, входящие в состав LibreOffice. При стандартной установке ОС Astra Linux эти программы устанавливаются по умолчанию. Если они не были установлены, то установить их можно командой:
Для загрузки СКЗИ требуется регистрация на сайте.
Для установки ПО КриптоПРО выполнить команды
(предполагается, что дистрибутив распакован в текущем каталоге).
После выполнения второй команды запустится установщик КриптоПРО. В установщике КриптоПРО:
Нажмите меню "Пуск" → меню "Утилиты" → "Инструменты КриптоПро"
Далее в приложении следует выбрать меню "Контейнеры" , выделить нужный считыватель и нажать кнопку "Установить сертификат". После чего, приложение оповестит нас о том, что сертификат успешно установлен.
Через меню Firefox
«Настройки» → «Приватность и защита» → «Устройства защиты» → «Загрузить»добавить в список библиотеку
после чего перезапустить Firefox.
После выполнения предыдущих шагов в меню Firefox следует перейти в «Настройки» → «Приватность и защита» → «Просмотр сертификатов»
В секции "Ваши сертификаты" теперь должны отображаться сертификаты, которыми будут подписываться документы;
В секции "Центры сертификации" следует импортировать корневые сертификаты, до которых будет строиться цепочка доверия при проверке и создании подписи.
В данном примере это будут сертификаты:
Головной удостоверяющий центр
LLC «CryptoPro GOST Root CA»
Для каждого центра сертификации, которому вы хотите доверять, необходимо нажать "Изменить доверие".
В появившемся окне следует выбрать все степени доверия:
Для отображения Вашего личного сертификата в секции "Ваши сертификаты", контейнер с парой ключей и сертификатом должен быть подключен к ОС.
Mime-типы и расширения файлов, которые можно подписать с помощью LibreOffice и СКЗИ КриптоПро:
Вид документа MIME-тип Расширение Текстовый документ application/vnd.oasis.opendocument.text odt Текстовый документ, используемый как шаблон application/vnd.oasis.opendocument.text-template ott Графический документ application/vnd.oasis.opendocument.graphics odg Графический документ, используемый как шаблон application/vnd.oasis.opendocument.graphics-template otg Документ презентации application/vnd.oasis.opendocument.presentation odp Документ презентации, используемый как шаблон application/vnd.oasis.opendocument.presentation-template otp Электронная таблица application/vnd.oasis.opendocument.spreadsheet ods Электронная таблица, используемая как шаблон application/vnd.oasis.opendocument.spreadsheet-template ots Документ диаграммы application/vnd.oasis.opendocument.chart odc Документ диаграммы, используемый как шаблон application/vnd.oasis.opendocument.chart-template otc Документ изображения application/vnd.oasis.opendocument.image odi Документ изображения, используемый как шаблон application/vnd.oasis.opendocument.image-template oti Документ формулы application/vnd.oasis.opendocument.formula odf Документ формулы, используемый как шаблон application/vnd.oasis.opendocument.formula-template otf Составной текстовый документ application/vnd.oasis.opendocument.text-master odm Текстовый документ, используемый как шаблон для HTML-документов application/vnd.oasis.opendocument.text-web oth Portable Document Format PDF application/pdf pdf -
Для примера будет использоваться ПО "Текст LibreOffice"
Запустить текстовый редактор LibreOffice:
Открыть нужный *.odt документ
Нажать кнопку «Подписать документ. »;
В открывшемся окне следует выбрать нужный сертификат и нажать кнопку «Подписать»;
Нажать кнопку «Закрыть»
В случае возникновения ошибки:
a) "Подпись верна, но невозможно проверить сертификат"
Следует доустановить необходимую цепочку сертификатов (сертификаты УЦ), как описано в главе по "импорту сертификатов в firefox"
б) "Подпись была верна, но документ изменён"
Означает, что документ был изменен и нужно еще раз подписать документ. В ином случае все подписи будут удалены.
Читайте также: