Типовые ошибки при работе с сертификатом DSS

Сразу стоит обозначить, что многие из указанных ошибок отображаются в журнале администратора Сервиса Подписи. Для доступа к компоненту необходимо открыть раздел «Журналы приложений и служб», активировать раздел CryptoPro, далее выбрать категорию DSS, активировать ссылку SignServer и нажать на пункт Admin.

Группа крипто-провайдеров с ID ***** не найдена. Возможно, что все крипто-провайдеры в группе отключены

Ошибка фиксируется в журнале администратора Сервиса Подписи, код события – 4. Возможны следующие причины возникновения сбоя:

— истек срок действия используемых мастер-ключей (МК) криптопровайдеров в данной группе;
— все криптопровайдеры в указанной группе переведены режим «IsEnabled = false».

Для решения рекомендуется:

— инициировать запрос информации о провайдерах в группе с указанным идентификатором. Для этого используется конструкция вида

/

Get-DssCryptoProvider -DisplayName "Имя приложения Сервиса Подписи"|where {$_.GroupID -eq "ID группы"}

— проверить полученный отчет. Если в параметре «TypeDescription» присутствует метка «Истек срок действия закрытого ключа» и/или у всех доступных криптопровадеров есть статус IsEnabled = false, то данные криптопровайдеры нельзя использовать для процедуры обслуживания или создания новых ключей для пользователей. В этом случае рекомендуется пройти стандартную процедуру регистрации новых провайдеров для продолжения работы.

Все крипто-провайдеры группы ***** находятся в состоянии «Временно недоступен»

Отображается в журнале администратора с кодом события 4.

Обычно связана с попыткой отправить запрос на выпуск нового сертификата через криптопровайдера, для которого установлен статус «только для чтения» (Read-Only).

Для устранения ошибки рекомендуется следующий алгоритм:

— запросить данные о провайдеров в группе с указанным идентификатором

Get-DssCryptoProvider -DisplayName "Имя приложения Сервиса Подписи"|where {$_.GroupID -eq "ID группы"}

— проверить у всех криптопровайдеров параметро TypeDescription. Если есть метка «Криптопровайдер в режиме Read-Only. Создание новых ключей пользователей запрещено», значит, данная опция просто недоступна в данный момент.

Криптопровайдер перешёл в состояние Недоступен. ID *****. Win32Exception: Набор ключей не существует

Фиксация в журнале администратора, код события 510.

Возможная причина – отсутствует мастер-ключ криптопровайдера с данным идентификатором. Также сбой может возникать, если у данной учетной записи (для работы пула приложения Сервиса Подписи) в данный момент отсутствуют права доступа к МК.

Не найдена группа криптопровайдеров по переданному идентификатору.

Как и предыдущие, данная ошибка фиксируется в журнале администратора с кодом события 4.

Самая вероятная причина – при запросе на создание нового сертификата при помощи штатного API в параметре «GroupId» передана несуществующая группа криптопровайдеров.

Криптопровайдер перешел в состояние Недоступен. ID *****. Win32Exception: Отказано в доступе.

Для маркировки используется код 510.

Самая вероятная причина – учетная запись, которая используется для пула приложения Сервиса Подписи, ранее не была добавлена в группу «Привилегированные пользователи КриптоПро HSM».

Криптопровайдер перешел в состояние Недоступен. ID *****. Win32Exception: Сервер RPC недоступен.

Используется код события ошибки 510.

Вероятная причина – Не запущена системная служба Крипто Про HSM 2.0

«Импорт PFX запрещён пользователям» и «Импорт PFX запрещён операторам»

Начиная с версии КриптоПро DSS 2.0.3892 в процессе развертывания нового экземпляра Сервиса Подписи в параметрах устанавливается явный запрет на импорт ключевых данных из PFX. Это касается как операторов, так и пользователей.

При возникновении ошибки такого рода необходимо использовать отдельную команду. Если необходимо разрешить импорт ключевой информации пользователям:

Set-DssProperties -EnablePfxImportByUser 1
Restart-DssSignServerInstance #при использовании кластера необходимо выполнить на всех узлах DSS.

Разрешение импорта для операторов:

Set-DssProperties -EnablePfxImportByOperator 1
Restart-DssSignServerInstance # в кластерной версии необходимо последовательно выполнить для всех узлов DSS.

Отсутствуют данные о предподписанных хэшах документов

На этапе формирования подписи в приложении DSS SDK (DSS Client, myDSS 2.0 и других клиентах) возникает ошибка:

{
"Message": "invalid_presigned_hash_data",
"MessageDetail": "Отсутствуют данные о предподписанных хэшах документов.",
"Error": "invalid_presigned_hash_data",
"ErrorDescription": "Отсутствуют данные о предподписанных хэшах документов."
}

Основная причина возникновения – для текущего пользователя (от которого инициируется запрос на создание подписи) не активировано подтверждение запроса «Подпись документа» через DSS SDK.

Для устранения проблемы необходимо явно включить подтверждение операции «Подпись документа», нужный параметр находится в разделе настроек аутентификации пользователей, секция «Подтверждение операций». Для доступа предполагается использовать штатный веб-интерфейс. Также активировать данную опцию можно через операцию «SignDocument», используя вызов к эндпоинту /operationpolicy, но такой вариант по очевидным причинам менее удобен.

Значение параметра AuthCodeCheckInternals должно попадать в интервал от 1 до 15

Данная ошибка стала массово фиксироваться после обновления DSS до версии 2.0.3808 или выше. Чаще всего проявляется на этапе выполнения следующих действий:

— формирование нового экземпляра Сервиса MyDssServerInternal, с последующей интеграцией в существующую Базу данных Сервиса;
— обновление текущей конфигурации Сервиса MyDssServerInternal (режим Update-MyDssServerInternalInstance);
— корректировка настроек конфигурации MyDssServerInternal (функция Set-MyDssServerInternalProperties).

Для понимания природы возникновения ошибки необходимо помнить, что параметр AuthCodeCheckInternals позволяет указать значение интервала времени между проверками кода аутентификации при работе через мобильное приложение myDSS. Указывается в виде коэффициента для минимального интервала, который составляет 180 секунд.

Для устранения проблемы специалисты рекомендуют выполнить следующую последовательность команд через Powershell:

— принудительно установить нужное значение параметра

Set-MyDssServerInternalProperties -AuthCodeCheckInternals 1

— инициировать перезапуск пула приложения Сервиса MyDssServerInternal DSS

Restart-MyDssServerInternalInstance

Ошибка отправки уведомлений в сервис PushProxy HTTP 500.19

Данная ошибка возникает в процессе отправки Push-уведомлений от сервиса myDSS Internal и/или Центра Идентификации DSS. Полный текст уведомления:

 Ошибка при отправке сообщения из плагина:

Произошла ошибка при отправке Push сообщения

System.InvalidOperationException: Error sending request to PushProxy. HttpError: ‘InternalServerError’, response: ‘<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml»>
<head>
<title>500.19 — Internal Server Error</title>
</head>

</html>

Возможная причина – используемая конфигурация сервера не удовлетворяет минимальным требованиям. Практика показывает, что чаще всего отсутствует пакет .NET Core Windows Server Hosting, хотя он включен в состав дистрибутива PushProxy.

КриптоПро .NET и обновления ОС Windows май 2022 года

Данное обновление может нарушить работу пакета КриптоПро .NET.

Для платформы Windows Server 2019 это накопительное обновление с маркировкой KB5013868 (.NET Framework 3.5, 4.7.2 и 4.8). Для других ОС индекс пакета обновлений может отличаться, но в названии должно упоминаться .NET Framework и период выхода (май 2022 года).

Проявляться проблема может по-разному – блокировка отдельных модулей DSS, неработоспособность ГОСТ-криптографии и другие симптомы. В журнале Приложений при этом могут отображаться уведомления вида:

The certificate key algorithm is not supported

Для восстановления работоспособности необходимо вручную обновить КриптоПро .NET до актуальной версии.

Ошибки формата даты в DSS

Пример текста ошибки:

String was not recognized as a valid DateTime. System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.Parse

Может возникать в различных случаях:

— разные узлы DSS в рамках кластера используют разный формат языковых параметров;
— произведено добавление нового узла DSS, при этом он использует другой язык по умолчанию или формат языковых параметров.

Для решения рекомендуется использовать следующий алгоритм:

1. Определить учетную запись, в которой возникает сбой. Для этого удобнее использовать модуль Диспетчер служб IIS, открыв раздел «Пулы приложений» нужного сервера. Отобразится новая панель, в которой необходимо найти приложение, которое генерирует ошибку. Имя учетной записи отображается в столбце «Удостоверение».

Если для запуска пула приложений используется аккаунт, который входит в группу «Пользователи домена», а также имеет право входа в систему, то для дальнейшей настройки необходимо предварительно авторизоваться в системе под данной учетной записью. В других случаях это не требуется, например, при использовании записи NetworkService, ApplicationPoolIdentity и других. Это важный момент, о котором нередко забывают даже опытные специалисты.

Также стоит учитывать, что если пул DSS функционирует под учеткой, которой входит в группу gMSA, то данная инструкция не подойдет.

2. Проверить, какие языковые параметры использовались при разворачивании DSS. Для получения нужного отчета необходимо запустить консоль PowerShell и выполнить инструкцию:

(Get-DssCryptoProvider).settings

Система предоставит набор параметров, включая срок действия ключа. По формату вывода данного пункта и можно оперативно определить формат даты:

MasterKeyLifeTimeEnd 11/21/2025 11:37:27 AM – формат, используемый в США

MasterKeyLifeTimeEnd 21.11.2025 10:25:26 – международный формат даты и времени (также используется и в России)

Стоит понимать, что такая схема не гарантирует правильность определения формат языковых параметров.

3. На узлах с некорректными настройками необходимо изменить их для устранения несоответствия. Повторное создание экземпляров сервисов при этом не требуется.

— перейти в «Панель управления», далее выбрать раздел «Региональные стандарты»;
— на вкладке «Форматы» нужно выбрать подходящий стандарт отображения даты и времени, после чего применить настройки;
— далее нужно перейти на вкладку «Дополнительно» и нажать на кнопку «Копировать параметры»;
— активировать чекбоксы «Новые учетные записи» и «Экран приветствия и системные учетные записи», для сохранения необходимо нажать на «ОК»;
— перейти в консоль PowerShell и выполнить инструкцию (перезапуск IIS-сервера):

iisreset

Далее будут рассмотрены ошибки формирования подписи через веб-интерфейс

Размер переданного файла превышает максимально допустимый размер

Необходимо проверить параметры загружаемого файла и сравнить размер с указанным в сообщении.

Неперехваченное исключение: Код состояния ответа не указывает на успешное выполнение: 413 (Request entity too large)

Ошибка также может возникать, если пользователь загрузил для подписания документ, размер которого превышает лимит, указанный в настройках сервиса DSS. Для решения можно изменить параметр, указав более высокое значение.

Неперехваченное исключение: Message: invalid_certificate MessageDetail: Сертификат не найден или недействителен.

Пример уведомления:

Instance Unique Identifier: 1/signserver Source: SignDocumentRequestValidator Message: SignDocumentRequestValidator. Ошибка: invalid_certificate

Отображается в панели «Журналы приложения и служб», означает, что запрошенный сертификат в данный момент недействителен или не найден. К примеру, он ранее был отозван и не может использоваться подписантом.

Рекомендуемый алгоритм для решения:

— проверить сертификат подписанта, с которым возникли сложности. Для этого устанавливается корректная цепочка сертификатов издателей, в качестве места сохранения выбирается хранилище локального ПК сервера DSS;
— проверить сертификат подписанта на предмет отзыва. Для этого можно установить CRL в хранилище «Промежуточные центры сертификации» локальной машины;
— убедиться, что сертификат, используемый подписантом, не приостановлен и не отозван.

Произошла ошибка при получении штампа времени. Ошибка: [При попытке отправки запроса возникла ошибка HTTP]. Код: [0xc2100100]

Возникает обычно при создании подписи стандарта CAdES T/XLT1

Вероятные причины возникновения: у сервера DSS отсутствует сетевой доступ к службе TSP (штампы времени), что не позволяет завершить процедуру.

Для устранения проблемы необходимо обеспечить стабильный доступ к службе времени. Также рекомендуется проверить работоспособность данной службы, используя пункт 7.2 регламента «ЖТЯИ.00094-01 91 02 Службы УЦ 2.0. КриптоПро TSP Server. Руководство администратора».

Произошла ошибка при получении OCSP-ответа. Ошибка: [При попытке отправки запроса возникла ошибка HTTP]. Код: [0xc2110100]

Также возникает при создании подписи CAdES XLT1

Исключение может возникать по причине отсутствия доступа к службе OCSP (проверка статусов сертификатов). Напомним, нужный адрес указывается непосредственно в сертификате подписанта (блок «Доступ к информации о центрах сертификации»).

Решение. Изменить настройки, обеспечив бесперебойный доступ к службе проверки статусов сертификатов. Далее отдельно проверить корректность работы службы, используя регламент «ЖТЯИ.00094-01 91 01 Службы УЦ 2.0. КриптоПро OCSP Server. Руководство администратора» (пункт 7.3).

Произошла ошибка при формировании CAdES подписи. Ошибка: [Группа или ресурс не находятся в нужном состоянии для выполнения требуемой операции]. Код: [0x8007139f]

На этапе формирования подписи стандарта CAdES T/XLT1

Возможная причина: служба OCSP или TSP остановлена.

Решение. Проверить текущее состояние службы на сервере КриптоПро Службы УЦ и при необходимости принудительно запустить ее. Проверить работоспособность службы штампа времени, используя инструкцию из регламента «ЖТЯИ.00094-01 91 02 Службы УЦ 2.0. КриптоПро TSP Server. Руководство администратора» (пункт 7.2). Проверить корректность работы службы проверки статусов сертификатов, используя инструкцию, которая описана в пункте 7.3 «ЖТЯИ.00094-01 91 01 Службы УЦ 2.0. КриптоПро OCSP Server. Руководство администратора».

Message: Authorization has been denied for this request

На этапе загрузки документа для подписания

Примеры:

1. Попытка получить неавторизованный доступ по пути https://testdss/documentstore/api/documents: Недостаточно прав у текущего пользователя.

2. Instance Unique Identifier: 1/documentstore] Source: Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware Message: Authentication failed

System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10505: Unable to validate signature. The ‘Delegate’ specified on TokenValidationParameters, returned a null SecurityKey

Возможные причины возникновения:

— на момент проверки истек срок действия сервисного сертификата для обработки внешних документов;
— для сервиса обработки документов не указаны параметры отношения доверия с основным центром сертификации.

Алгоритм решения:

— отправить запрос на получение сервисного сертификата:

$idp_cert = (Get-DssStsProperties).ServiceCertificate

— добавить отпечаток сервисного сертификата:

Add-DssDocumentStoreClaimsProviderTrust -IssuerName realsts -Thumbprint $idp_cert

Если при выполнении данного сценария через Powershell возникает ошибка «Доверенный издатель с именем realsts уже добавлен в коллекцию», то необходимо использовать другую команду:

Set-DssDocumentStoreClaimsProviderTrust -IssuerName realsts -NewThumbprint $idp_cert

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

Restart-DssDocumentStoreInstance
Restart-DssStsInstance

Неперехваченное исключение: Message: An error has occured

Возникает на этапе загрузки нового документа

Примеры:

CryptoPro.DSS.Common.Clients.Rest.DssClientException: Message: Authorization has been denied for this request.

Instance Unique Identifier: 1/signserver Source: Signature Message: Message: Authorization has been denied for this request.

Возможные причины:

— закончился срок действия сервисного сертификата, который используется сервисом обработки документов;
— не настроены отношения доверия с платформой подписи для сервиса обработки документов.

Решение:

— получить отпечаток сервисного сертификата через инструкцию для Powershell

$ss_cert = (Get-DssProperties).ServiceCertificate

— добавить отпечаток сертификата в настройках сервиса

Add-DssDocumentStoreClaimsProviderTrust -IssuerName signserver -Thumbprint $ss_cert

Если в ответ на вторую команду возникает ошибка «Доверенный издатель с именем signserver уже добавлен в коллекцию», то необходимо использовать конструкцию

Set-DssDocumentStoreClaimsProviderTrust -IssuerName signserver -NewThumbprint $ss_cert

— получить срок действия сертификата, при необходимости перевыпустить его и внести необходимые изменения в настройки;
— перезагрузить пулы сервиса обработки документов и сервиса подписи

Restart-DssDocumentStoreInstance
Restart-DssSignServerInstance

Ниже будут рассмотрены ошибки при создании нового запроса на сертификат через веб-интерфейс

На сервисе подписи отсутствуют доступные провайдеры

Возможная причина: нет провайдеров, которые в данный момент имеют статус «Enabled».

Решение:

— сформировать перечень зарегистрированных провайдеров

Get-DssCryptoProvider

— проверить, что в списке есть провайдеры, у которых параметр IsEnabled имеет значение «True», а также в секции AdditionalInfo отсутствует пометка «Криптопровайдер в режиме Read-Only. Создание новых ключей пользователей запрещено»;
— если нет провайдеров, которые соответствуют указанным параметрам, необходимо зарегистрировать нового провайдера, инструкция есть в 4 пункте руководства.

Message: invalid_license MessageDetail: Превышено количество пользователей, разрешенных лицензией

Пример:

CertificateRequestValidator Message: CertificateRequestValidator. Ошибка: invalid_license

Возможная причина: превышен лимит пользователей, которым разрешено формировать запросы на сертификат.

Решение:

— выполнить команду

Get-DssLicense –AssignedUsersInfo

— сравнить число пользователей, указанных в параметре TotalUsersNumberLimi (количество доступных лицензий), с реальным количеством (AssignedUsersNumber). При необходимости указать дополнительную лицензию.

Message: An error has occurred

Примеры проявления

1.

Ошибка создания объекта криптопровайдера. Крипто-провайдер [80] [Crypto-Pro GOST R 34.10-2012 HSM Svc CSP] . ID [67a81de3-126e-4c45-852a-b45583bd7653]. GroupId [6c3df86c-7be1-4fd4-bcdd-d04dc3a5802a]

System.Reflection.TargetInvocationException: Адресат вызова создал исключение.

Не удалось открыть контекст крипто-провайдера. Имя крипто-провайдера: [Crypto-Pro GOST R 34.10-2012 HSM Svc CSP]. Имя ключевого контейнера: [DSS-MK-b575e3a3-e6d2-4631-8305-09b84874ed6a]. Флаги контекста: [CRYPT_MACHINE_KEYSET]. Подробности во вложенном сообщении.

Вложение:

Win32Exception: Отказано в доступе

2.

Криптопровайдер [80] [Crypto-Pro GOST R 34.10-2012 HSM Svc CSP] перешёл в состояние Недоступен. ID [62a86de0-176e-4c45-851a-b44588bd7756].

TargetInvocationException: Адресат вызова создал исключение.DssCryptoProviderException: Криптографическая ошибка.: Не удалось открыть контекст крипто-провайдера. Имя крипто-провайдера: [Crypto-Pro GOST R 34.10-2012 HSM Svc CSP]. Имя ключевого контейнера: [DSS-MK-b673e2a9-e3d7-4321-8955-09b82877ed1a]. Флаги контекста: [CRYPT_MACHINE_KEYSET]. Подробности во вложенном сообщении.

Содержимое вложенного сообщения:

Win32Exception: Сервер RPC недоступен

3.

Криптографическая ошибка.: Не удалось открыть контекст крипто-провайдера. Имя крипто-провайдера: [Crypto-Pro GOST R 34.10-2012 HSM Svc CSP]. Имя ключевого контейнера: [DSS-62b6a45f-d1cb-45d8-9c24-34c916f45b2d]. Флаги контекста: [CRYPT_MACHINE_KEYSET]. Подробности во вложенном сообщении.

Текст вложения:

Win32Exception: Протекает наложенное событие ввода/вывода]

Вероятные причина появления ошибки:

— учетная запись пула приложений не добавлена в группу «Привилегированные пользователи КриптоПро HSM»;
— служба «Крипто Про HSM 2.0» не запущена на сервере DSS;
— просрочен сертификат, используемый для доступа к провайдеру КриптоПро HSM.

Рекомендации для устранения проблемы:

— проверить состояние службы и при необходимости запустить ее;
— убедиться, что на сервере присутствует группа «Привилегированные пользователи КриптоПро HSM». Также проверить, что учетная запись пула приложения сервиса подписи входит в ее состав;
— проверить срок действия закрытого ключа встроенными инструментами КриптоПро CSP. Если сертификат для доступа к провайдеру КриптоПро HSM истек, его необходимо перевыпустить, после чего перенести на сервер КриптоПро DSS. После завершения процедуры обязательно принудительно перезапустить службу «КриптоПро HSM 2.0»

Сервис подписи не настроен на взаимодействие ни с одним УЦ или нет ни одного обработчика УЦ, доступного через веб-интерфейс

Примеры:

Идентификатор УЦ: 1 Произошла ошибка при отправке запроса на сертификат: System.ServiceModel.FaultException: Сервер не смог обработать запрос в связи с внутренней ошибкой. Для получения дополнительных сведений об ошибке либо включите IncludeExceptionDetailInFaults (с помощью атрибута ServiceBehaviorAttribute или через поведение < serviceDebug >) на сервере для того чтобы выслать информацию об исключении назад клиенту, или включить трассировку согласно инструкции Microsoft .NET Framework SDK и проверить записи журнала трассировки клиента.

Произошла ошибка при создании экземпляра обработчика УЦ: Exception occured while creating enroll with ID 1, Name Тестовый УЦ

System.ServiceModel.Security.SecurityNegotiationException: Не удалось установить безопасный канал для SSL/TLS с полномочиями «testuc».

Идентификатор УЦ: 1 Произошла ошибка при создании экземпляра обработчика УЦ: При создании обработчика УЦ 2.0 с ID 1, именем Тестовый УЦ произошла ошибка на стороне Удостоверяющего Центра System.ServiceModel.FaultException`1[[CryptoPro.DSS.SignatureServer.Managers.ICryptoProCA20Service.errorInfo, CryptoPro.DSS.Common.Utils, Version=1.17.0.0, Culture=neutral, PublicKeyToken=cb705a801b9b3b52]]: Действие ‘ReadProperties’ над сущностью типа ‘Folder’ с идентификатором 6bdbf983-b296-4325-b043-ac5940a92796 запрещено для пользователя ‘1bd4a03e-d482-5afb-9cb6-ac5400abd4a1’.

Примеры:

Идентификатор УЦ: 1 Произошла ошибка при создании экземпляра обработчика УЦ: Exception occured while creating enroll with ID 1, Name Тестовый УЦ

System.ServiceModel.EndpointNotFoundException: Прослушивание на https://testuc/RA/RegAuthLegacyService.svc не выполняла ни одна конечная точка, которая могла бы принять сообщение. Среди прочих причин это могло быть вызвано неправильным адресом или действием SOAP. Подробнее см. в описании InnerException (если имеется).

Идентификатор УЦ: 1 Произошла ошибка при создании экземпляра обработчика УЦ: Exception occured while creating enroll with ID 1, Name Тестовый УЦ

System.InvalidOperationException: Сертификат оператора не найден в хранилище Локального компьютера либо недействителен. Отпечаток 56F8AA130B25C82173951E6F7C8C4E9B535904DB.

Возможные причины

— ранее не указаны настройки для корректного взаимодействия модулей DSS с удостоверяющим центром;
— проблемы со стороны самого УЦ;
— учетная запись приложений сервиса не имеет прав для доступа к закрытому ключу сертификата привилегированного пользователя. В данном случае имеется ввиду сертификат, указанный в параметрах обработчика УЦ;
— в параметрах обработчика удостоверяющего центра некорректно указан AuthorityName;
— в настройках обработчика удостоверяющего центра прописан отпечаток сертификата пользователя, который предварительно не был добавлен в хранилище «Личные» на сервере DSS;
— в обработчике удостоверяющего центра некорректно указан параметр CAServiceUrl (адрес ЦР) или FolderId (идентификатор папки).

Рекомендации:

— проверить корректность взаимодействия DSS с инфраструктурой удостоверяющего центра, при необходимости произвести настройку;
— установить сертификат привилегированного пользователя (указанный в параметре OperatorCertThumbprint) в хранилище «Личные» сервера DSS, привязав закрытый ключ;
— обеспечить учетной записи пула приложений права на полноценных доступ к закрытому ключу сертификата привилегированного пользователя;
— добавить в настройки обработчика удостоверяющего центра корректные credentials для подключения (FolderId, AuthorityName, CAServiceUrl, OperatorCertThumbprint). Полный перечень параметров с описанием можно найти в официальном руководстве.

Далее будут рассмотрены типовые ошибки, с которыми может столкнуться пользователь на этапе авторизации через веб-интерфейс сервиса подписи.

OpenIdConnectMessage. Error was not null, indicating an error, Error: ‘unauthorized_client’. Error_Description (may be empty): ‘The provided credentials of type ‘SharedSecret’ are invalid’. Error_uri (may be empty): ‘error_uri is null’

Пример:

Source: ClientCredentialsValidator.

The credentials of type ‘SharedSecret’ with value ‘secret_value’ is not registered for client with id ‘cryptopro.dss.frontend.frontend’

Возможная причина возникновения:

В параметрах доступа через OpenId Connect указаны параметры секрета, которые не соответствуют зарегистрированным для текущего oauth-клиента.

Рекомендации:

— вывести перечень секретов при помощи команды

Get-DssClientSecret -ClientId cryptopro.dss.frontend.frontend|fl

— указать корректное значение секрета

Set-DssFeOidcSettings –ClientSecret <значение, полученное на первом шаге>

— перезапустить пул приложения

Restart-DssFeInstance

unauthorized_client

Примеры:

Source: ClientValidator

The credentials for the client with id ‘cryptopro.dss.frontend.frontend’ of a type ‘SharedSecret’ is invalid. Error ‘unauthorized_client’. Additional info: [The provided credentials of type ‘SharedSecret’ expired at ‘expiration_date’.]

Source: AuthorizeRequestValidator

The request is invalid. The client with id ‘cryptopro.dss.frontend.frontend’ is not allowed to use ‘AuthorizationCode’ flow

Source: AuthorizeRequestValidator

The ‘client_id’ parameter in the request is invalid. No registered client with id ‘cryptopro.dss.frontend.frontends is found.’

Основные причины возникновения

— используется идентификатор клиента oauth, который ранее не был зарегистрирован в центре идентификации;
— в параметрах доступа OpenId Connect используется секрет, у которого истек срок действия;
— в списке набора сценариев для oauth-клиента нет сценария AuthorizationCode.

Рекомендуемое решение

Для проверки актуальности секретов и генерации новых:

— отобразить список доступных секретов

Get-DssClientSecret -ClientId cryptopro.dss.frontend.frontend|fl

— если все они имеют истекший срок действия, сгенерировать новый секрет

Set-DssClient -ClientId cryptopro.dss.frontend.frontend -GenerateSecret -SecretLifetime 0

— получить значение нового секрета

$secret = (Get-DssClientSecret -ClientId cryptopro.dss.frontend.frontend).value

— внести полученное значение в параметры доступа

Set-DssFeOidcSettings -ClientSecret $secret

— перезапустить пул приложения веб-интерфейса:

Restart-DssFeInstance

— перезапустить пул приложения центра идентификации:

Restart-DssStsInstance

Проверка корректности идентификатора клиента oauth

— получить актуальный идентификатор

(Get-DssFeOidcSettings).ClientId

— проверить, что клиент с полученным идентификатором зарегистрирован в центре идентификации. Для получения идентификаторов используется конструкция

(Get-DssClient).ClientId

— если данный клиент не зарегистрирован, выполнить необходимые настройки.

Добавление необходимых сценариев для oauth-клиента

— выполнить команду

Set-DssClient -ClientId ((Get-DssFeOidcSettings).ClientId) -AllowedFlow AuthorizationCode,ClientCredentials,TokenExchange

— инициировать перезапуск пула приложений центра идентификации

Restart-DssStsInstance

Страница не найдена

Пример ошибки в Web-приложении:

The controller for path ‘/DssTest/oauth/authorize’ was not found or does not implement IController.

System.Web.HttpException: The controller for path ‘/DssTest/oauth/authorize’ was not found or does not implement IController.

Вероятная причина возникновения: в параметрах доступа прописаны некорректные адреса серверов.

Для устранения проблемы необходимо изменить настройки доступа по OpenId Connect, используя официальную инструкцию.

Запрос HTTP запрещен для схемы аутентификации клиентов «Anonymous»

Примеры проявления:

В процессе работы Веб-интерфейса произошла ошибка:

Произошла ошибка во время работы контроллера CryptoPro.DSS.Web.Frontend.Admins.Controllers.CertificatesController

Действие List

System.ServiceModel.Security.MessageSecurityException: Запрос HTTP запрещен для схемы аутентификации клиентов «Anonymous».

Возможные причины:

— в расширении Extended Key Usage (EKU) сервисных сертификатов отсутствует назначение 1.3.6.1.5.5.7.3.2 (фиксирует проверку подлинности клиента);
— пулы приложений DSS не имеют доступа к закрытым ключам сервисных сертификатов DSS;
— у системы нет возможности корректно проверить сервисные сертификаты DSS на отзыв;
— в хранилище «Доверенные корневые центры сертификации» не установлены сертификаты издателей сервисных сертификатов DSS;
— в хранилище «Доверенные корневые центры сертификации» локального ПК сервера DSS есть несамоподписанные сертификаты.

Алгоритм устранения ошибки

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





— обеспечить возможность проверки сервисных сертификатов на предмет наличия отзыва. Для этого необходимо установить CRL в системное хранилище «Промежуточные центры сертификации» или гарантировать доступность CRL по ссылкам, которые указаны в расширении «Точки распространения списков отзыва».

Требуется делегирование

Пример:

Идентификатор экземпляра: 1/Frontend.

В процессе работы Веб-интерфейса произошла ошибка:

Произошла ошибка во время работы контроллера CryptoPro.DSS.Web.Frontend.Controllers.CertificatesController

Действие List

System.ServiceModel.FaultException`1[[CryptoPro.DSS.Common.Service.DssFault, CryptoPro.DSS.Common, Version=1.17.0.0, Culture=neutral, PublicKeyToken=cb703a801b9b4b55]]: Требуется делегирование.

Вероятная причина:

В пределах одной сессии обозревателя пользователь пытался сначала авторизоваться в ЛК оператора, после чего инициировать авторизацию в веб-интерфейсе сервиса подписи.

Алгоритм устранения сбоя:

— перезапустить используемый браузер и повторить процедуру авторизации через Web-интерфейс сервиса подписи;
— активировать в обозревателе новую вкладку, используя режим «Инкогнито» (поддерживается всеми современным обозревателями), после чего использовать ее для авторизации в сервисе подписи.

Message: Authorization has been denied for this request

Пример проявления:

Instance Unique Identifier: 1/signserver Source: Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware Message: Authentication failed

System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10505: Unable to validate signature. The ‘Delegate’ specified on TokenValidationParameters, returned a null SecurityKey.

Вероятные причины возникновения:

— в параметрах сервиса подписи не настроены отношения доверия с центром идентификации;
— закончился срок действия сервисного сертификата сервиса подписи.

Решение

— отправить запрос отпечатка сервисного сертификата

$idp_cert = (Get-DssStsProperties).ServiceCertificate

— добавить полученный отпечаток в настройки сервиса подписи

Add-DssClaimsProviderTrust -IssuerName realsts -Thumbprint $idp_cert

Если после запуска второй команды возникает уведомление «Доверенный издатель с именем realsts уже добавлен в коллекцию», необходимо использовать другую инструкцию

Set-DssClaimsProviderTrust -IssuerName realsts -NewThumbprint $idp_cert

— принудительно перезагрузить пулы приложений сервиса подписи и центра идентификации при помощи команд:

Restart-DssSignServerInstance
Restart-DssStsInstance
IDX10505: Unable to validate signature. The 'Delegate' specified on TokenValidationParameters, returned a null SecurityKey

Пример:

Instance Unique Identifier: 1/frontend Source: Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware Message: Authentication failed

System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10505: Unable to validate signature. The ‘Delegate’ specified on TokenValidationParameters, returned a null SecurityKey.

Причины:

— у сервисного сертификата веб-интерфейса истек срок действия;
— для веб-интерфейса не настроены отношения доверия с используемым центром идентификации.

Решение:

— получить отпечаток сервисного сертификата

$idp_cert = (Get-DssStsProperties).ServiceCertificate

— добавить полученное значение в веб-интерфейс

Add-DssFeClaimsProviderTrust -IssuerName realsts -Thumbprint $idp_cert

Если при выполнении данной конструкции возникает ошибка «Доверенный издатель с именем realsts уже добавлен в коллекцию», необходимо использовать команду

Set-DssFeClaimsProviderTrust -IssuerName realsts -NewThumbprint $idp_cert

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

Сертификат издателя с отпечатком не найден в хранилище

На этапе прохождения аутентификации в личном кабинете оператора Центра идентификации может отображаться ошибка вида:

Сертификат издателя с отпечатком ***** не найден в хранилище <название хранилища>.

Возможная причина:

В хранилище «STS Client Authentication Issuers» (оно используется по умолчанию) нет сертификатов издателя сертификата оператора.

Решение:

Установить нужные сертификаты и перезапустить пул приложений Центра идентификации.

Cannot find a sign in context

Возможные причины:

— в параметрах сервиса DSS прописаны некорректные адреса центра идентификации;
— браузер не позволяет принимать cookie со стороны интернет-страницы;
— используется некорректный URL для открытия интерфейса аутентификации.

Решение:

— проверить корректность используемой интернет-ссылки;
— через настройки браузера удалить cookie;
— добавить URL ЦИ в список надежных сайтов;
— проверить корректность адресов Центра идентификации, используя руководство администратора DSS



Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: