<< Click to Display Table of Contents >> Что нового в Directum RX > Версия для локальной установки > Развитие подписания документов Новый механизм усовершенствования подписей |
![]() ![]() |
Чтобы подтвердить юридическую значимость документов в течение всего срока хранения, в Directum RX можно усовершенствовать электронные подписи до форматов СAdES-T, CAdES-XL или CAdES-A. Каждый последующий формат включает в себя предыдущий и расширяет его возможности.
С версии 4.11 для всех форматов подписей используется новый общий механизм, в котором:
•усовершенствование выполняется только асинхронно в фоновом режиме. Благодаря этому снижается нагрузка на систему и упрощается ее настройка;
•появился новый асинхронный обработчик, и для управления им добавлен фоновый процесс «Поэтапное усовершенствование подписей»;
•усовершенствование до формата CAdES-A теперь настраивается средствами платформы с возможностью управления через настройку или разработку;
•учтены особенности поэтапного формирования CAdES-A: сначала добавляется архивный штамп времени, а потом его доказательства достоверности;
•добавлена поддержка актуальной версии формата CAdES-A – AtsHashIndexV3;
•расширены возможности настройки усовершенствования подписей до формата CAdES-XL, а также изменилась логика получения OCSP-ответа и списка отозванных сертификатов (CRL);
•теперь можно программно определить формат подписей для конкретного документа и усовершенствовать уже существующие подписи в системе;
•улучшено логирование сообщений об усовершенствовании.
Схема усовершенствования подписей
По умолчанию в Directum RX уже поддерживается работа с электронными подписями в формате CAdES-BES. Усовершенствование до следующих форматов СAdES-T, CAdES-XL и CAdES-A выполняется поэтапно на сервисе асинхронных событий (Worker):
1.В системе каждую минуту запускается фоновый процесс «Поэтапное усовершенствование подписей» (IncrementalImproveSignaturesManager):
•за один раз он запрашивает из базы данных 10 000 идентификаторов подписей, готовых к следующему этапу усовершенствования;
•группирует подписи порциями по 100 штук и через очередь сообщений RabbitMQ передает их в асинхронный обработчик.
2.Новый асинхронный обработчик IncrementalImproveSignaturesWorker усовершенствует каждую полученную подпись до следующего формата:
•к подписи формата CAdES-BES добавляется штамп времени, и она усовершенствуется до СAdES-T;
•если усовершенствуется подпись формата СAdES-T, то сначала запускается сбор доказательств достоверности сертификата подписания. Для их получения может потребоваться время, тогда в базу данных записывается дата следующей публикации OCSP-ответа или списка отозванных сертификатов (CRL). К этому времени фоновый процесс снова отправляет подпись в очередь на усовершенствование. Когда доказательства получены, подпись усовершенствуется до формата CAdES-XL.
3.После каждого усовершенствования проверяется, является ли формат целевым. Если это СAdES-T или СAdES-XL и формат достигнут, то усовершенствование завершается. Если формат еще не целевой, то в базу данных записывается дата и время следующего усовершенствования. Подпись снова отправляется в очередь сообщений.
4.Подпись формата CAdES-A усовершенствуется поэтапно. Сначала в нее добавляется архивный штамп времени. При следующем вызове асинхронного обработчика добавляются доказательства достоверности архивного штампа времени. Для их сбора также может потребоваться время. Тогда усовершенствование откладывается.
После добавления доказательств дата следующего усовершенствования записывается в базу данных. За 6 месяцев до истечения срока действия сертификата, которым подписан архивный штамп времени, фоновый процесс снова отправляет подпись на усовершенствование. Если к этой дате сертификат не обновится, то усовершенствование при каждом вызове будет откладываться на неделю.
Для управления усовершенствованием используется таблица базы данных Sungero_Core_Sign. В нее записывается информация о дате следующего этапа усовершенствования, необходимый формат подписи и другие данные.
Дополнительно в новом механизме:
•добавлена защита от переполнения очередей. В системе проверяется, что общее количество подписей, отправленных на усовершенствование, меньше 100 000. Если их больше, то фоновый процесс не отправляет новые порции в асинхронный обработчик;
•увеличивается счетчик итераций в базе данных, когда возникает исключение и усовершенствование подписи откладывается. При достижении 30 итераций подпись больше не усовершенствуется;
•больше не используется синхронная установка штампа времени. Фоновый процесс выполняется каждую минуту, поэтому время между созданием подписи и установкой на нее штампа времени сокращено до минимума;
•поддерживается совместимость со старыми настройками и стартованными асинхронными обработчиками AddTimestampToSignature и ImproveSignatureToCadesXL. После обновления на новую версию Directum RX рекомендуется перенастроить усовершенствование на новый механизм работы.
Новые настройки усовершенствования
Для настройки усовершенствования подписей в конфигуратор Directum Launcher добавлены параметры:
•ADVANCED_SIGNATURE_AUTO_IMPROVE_ENABLED – включить автоматическое усовершенствование подписей. Значение по умолчанию false;
•ADVANCED_SIGNATURE_AUTO_IMPROVE_DEFAULT_TARGET_FORMAT – целевой формат автоматического усовершенствования подписи. Возможные значения: None – нет усовершенствования; CadesT, CadesXL, CadesA – соответствующий формат подписи. Значение по умолчанию None.
После включения настроек новые усиленные подписи в системе автоматически усовершенствуются до указанного формата. Если нужно усовершенствовать уже существующие подписи или задать другой формат для конкретных документов, используйте новые возможности для разработчика.
Усовершенствование подписей теперь всегда выполняется на сервисе асинхронных событий (Worker), поэтому параметр ADVANCED_SIGNATURE_TIMESTAMP_AUTO_ADD_MODE с выбором синхронного или асинхронного режима добавления штампа времени больше не используется.
Новая логика получения OCSP-ответа и списка отозванных сертификатов CRL
Формат CAdES-XL добавляет к электронной подписи доказательства достоверности сертификата подписанта и штампа времени. Благодаря этому обеспечивается офлайн-доступ к информации, необходимой для проверки подписи, и предотвращается возможность ее утери.
В новой версии пересмотрен порядок получения OCSP-ответа и списка CRL для сбора доказательств достоверности:|
1.Проверяется, указан ли в сертификате адрес службы OCSP.
2.Если адрес указан, то система отправляет запрос на сервер OCSP. Когда ответ с доказательствами достоверности получен, подпись усовершенствуется.
3.Если в сертификате нет адреса OCSP или ответ не получен, то доказательства достоверности проверяются по списку отозванных сертификатов (CRL).
4.При этом в системе теперь можно задать список отпечатков промежуточных сертификатов удостоверяющих центров (УЦ), для которых всегда требуется только OCSP-ответ. Для этого добавлен новый параметр ADVANCED_SIGNATURE_THUMBPRINTS_IA_CERTIFICATE_THAT_REQUIRE_OCSP_RESPONSE_FOR_SIGNATORY_CERTIFICATE. В этом случае CRL не проверяется. Если OCSP-ответ не получен, то система записывает исключение в лог-файл сервиса асинхронных событий, и усовершенствование откладывается до получения следующего ответа.
5.Для получения списка отозванных сертификатов система скачивает CRL по адресу, указанному в сертификате. Чтобы не нагружать базу данных, для этого списка в системе теперь задается максимально допустимый размер. Значение указывается в параметре ADVANCED_SIGNATURE_MAX_CRL_SIZE_KB. По умолчанию 512 КБ. Значение параметра не рекомендуется увеличивать, так как это влияет на скорость усовершенствования подписей и дальнейшую работу с ними.
При получении OCSP-ответов или списков CRL система проверяет, что доказательства достоверности изданы после доверенного времени, которое указано в штампе времени. Если проверка завершилась успешно, подпись усовершенствуется.
Также теперь можно указать список URL-адресов, которые не нужно проверять для получения OCSP-ответа и списка отозванных сертификатов (CRL). Для этого используется новый параметр ADVANCED_SIGNATURE_OCSP_AND_CRL_URL_BLACK_LIST. Например, если в сертификате указан некорректный адрес или нет доступа в интернет и внешний адрес недоступен, то в параметре можно указать эти адреса. Они будут пропускаться при проверке. Это позволяет ускорить получение ответа и усовершенствование подписи.
Кроме того, в конфигураторе Directum Launcher удалены параметры:
•ADVANCED_SIGNATURE_REQUIRE_OCSP_RESPONSE_FOR_SIGNATORY_CERTIFICATE – признак того, что нужно требовать OCSP-ответ для доказательства достоверности сертификата. Если параметр включали, то ответ запрашивался для всех сертификатов, даже если это не нужно. После обновления на новую версию достаточно указать список отпечатков промежуточных сертификатов удостоверяющих центров в новом параметре ADVANCED_SIGNATURE_THUMBPRINTS_IA_CERTIFICATE_THAT_REQUIRE_OCSP_RESPONSE_FOR_SIGNATORY_CERTIFICATE;
•ADVANCED_SIGNATURE_WAIT_CRL_REPUBLISH_FOR_INTERMEDIATE_CA – перепубликация списка отозванных промежуточных сертификатов. Эта настройка теперь избыточная.
Для программной настройки усовершенствования подписей в среде разработки теперь можно:
•определить формат подписей для конкретного документа. Например, в системе настроено усовершенствование всех подписей до формата СAdES-T, а для подписей кадровых документов необходим другой формат – СAdES-A. Достаточно переопределить событие типа документа До подписания (BeforeSigning) и в новом аргументе e.SignatureTargetFormat указать целевой формат усовершенствования подписи:
public override void BeforeSigning(Sungero.Domain.BeforeSigningEventArgs e)
{
SignatureTargetFormat = SignatureAutoImproveTargetFormat.CadesA;
}
•усовершенствовать уже существующие подписи. Например, подписи всех кадровых документов в системе. Для этого с помощью перегрузок нового метода Signatures.RequestImprovement() можно передать на усовершенствование список подписей или их идентификаторов, а также конкретную подпись. Затем задать формат, до которого эти подписи нужно усовершенствовать.
Кроме того, в методе ImproveToCadesA() учтены особенности поэтапного формирования подписи CAdES-A. Для этого в перегрузку метода добавлены параметры:
•needAddArchiveTimestamp – признак того, что в подпись необходимо добавить архивный штамп времени;
•needAddArchiveTimestampEvidence – признак того, что в подпись необходимо добавить доказательства достоверности архивного штампа времени.
Во все сообщения об усовершенствовании подписей, которые записываются в лог-файлы сервиса асинхронных событий, добавлена расширенная структурированная информация:
{
"t":"2024-09-17 06:17:07.068+04:00",
"pid":"1+83",
"tr":"js-0c0cb926-4e8a8d00a0",
"l":"Info",
"lg":"SignatureImprovement",
"mt":"Will try to improve signature to {targetFormat} later {nextUpdateUtc}. Attempt - {iteration} of {improveSignatureMaxRetriesCount}.",
"args":{
"targetFormat":"CadesA",
"nextUpdateUtc":"2024-09-17T05:30:00Z",
"iteration":1,
"improveSignatureMaxRetriesCount":30},
"cust":{
"signatureId":250214,
"entityId":611562,
"currentFormat":"CadesT"},
"un":"ServiceUser",
}
Благодаря этому теперь легче анализировать ошибки. По записи в лог-файле можно узнать:
•целевой и текущий формат подписи;
•идентификатор документа и подписи;
•дату следующего усовершенствования;
•количество итераций – неудачных попыток усовершенствования.
Кроме того, в историю работы с документом теперь записывается информация о добавлении архивного штампа времени и его доказательств. Также для всех действий с подписями в столбец Комментарий добавляется идентификатор подписи.
© Компания Directum, 2024 |