Меню

Ошибка 513 capi2 windows 10

Обновлено 13.08.2020

error logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT порталов Pyatilistnik.org. В прошлый раз мы с вами успешно устраняли ошибки на сервере и одной из самых распространенных была ID 10016, которая есть практически на любом компьютере. Сегодня я хочу пополнить мою коллекцию решений по ошибкам Windows и мы разберем вот такую «ID 513 CAPI2 -Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object«. Мы рассмотрим на сколько она критичная для системы, посмотрим ее источник зарождения и сделаем логи еще чище и красивее.

Описание и причины ошибки ID 513

Делая ревизию серверов на базе Windows Server 2019, я обнаружил ошибку, ее содержимое было вот таким:

ID 513 CAPI2 — Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object. Details: AddLegacyDriverFiles: Unable to back up image of binary Microsoft Link-Layer Discovery Protocol. System Error: Access is denied.

Найти все это можно в журнале «Приложения (Application)».

ID 513 CAPI2 -Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object

Если обратиться по данной ошибке на Microsoft, то там дано вот такое пояснение причины:

Эта проблема возникает во время запуска резервного копирования системы, использующего VSS. Это часто приводит к зависанию процесса резервного копирования на длительный период времени или сбою. 

Во время резервного копирования процесс VSS, запущенный под учетной записью NETWORKSERVICE, вызывает cryptcatsvc!CSystemWriter::AddLegacyDriverFiles(), который перечисляет все записи драйверов в базе данных Service Control Manager и пытается открыть каждую из них. Функция не имеет прав на запись драйвера Microsoft Link-Layer Discovery Protocol (Mslldp.dll) и падает с ошибкой «Доступ запрещен». Оказалось, что разрешения безопасности драйвера MSLLDP не позволяют NETWORKSERVICE получить доступ к записи драйвера.

Как устранить ошибку ID 513 CAPI2

Логично предположить, что нам нужно добавить прав, в этом нам с вами помогут две утилиты sc и accesschk64. Для начала давайте проверим. что не хватает прав у учетной записи NT AUTHORITYSERVICE, для этого вам нужно скачать утилиту accesschk64, которая входит в состав пакета SysinternalsДля начала мы с помощью данной утилиты посмотрим текущие разрешения для двух библиотек и сравним их:

  • mslldp
  • mup

Для этого нам потребуется запустить командную строку из папки, где у вас лежит утилита accesschk64 и выполнить вот такие команды:

accesschk64 -c mslldp

accesschk64 -c mup

Как можете заметить тут разница состоит в том, что у библиотеки mup , учетная запись NT AUTHORITYSERVICE имеет права на чтение (R), именно их нам и нужно добавить для mslldp.

Просмотр прав на библиотеках dll

Следующим шагом нам нужно внести изменения в список доступа на библиотеке mslldp. Для этого нам нужно воспользоваться утилитой SC и посмотреть правильное значение. Находясь в командной строке введите команду:

Я выделил желтым значение (A;;CCLCSWLOCRRC;;;SU) именно оно и дает права чтения для NT AUTHORITYSERVICE. Убедитесь, что в библиотеке mslldp, данное значение отсутствует:

Предоставление прав учетной записи NT AUTHORITYSERVICE на библиотеку dll

Далее нам нужно добавить значение (A;;CCLCSWLOCRRC;;;SU) в список доступа, для этого скопируйте всю строчку с выводом для библиотеки mslldp и добавьте в самом конце недостающее значение. После чего выполните команду:

sc sdset MSLLDP D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;;CCLCSWLOCRRC;;;SU)

Исправление ошибки ID 513 CAPI

Теперь снова проверим права на доступ к библиотекеmslldp.dll

Как видно на представленном скриншоте ниже, у нас успешно добавилась учетная запись NT AUTHORITYSERVICE. Теперь ваши логи Windows (Журналы событий), не будут забиты ошибкой «ID 513 CAPI2 — Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object. Details: AddLegacyDriverFiles: Unable to back up image of binary Microsoft Link-Layer Discovery Protocol. System Error: Access is denied». Чем меньше красноты тем лучше, кстати легко отслеживать ошибки Windows вы можете через Windows Admin Center, поверьте очень удобно.

id 513

На этом у меня все, если у вас остались вопросы или пожелания, то я ожидаю их в комментариях. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Seems we finally have a solution thanks to user szz743 in
the other forum

Here goes:

«Microsoft Link-Layer Discovery Protocol» binary is Windowssystem32DRIVERSmslldp.sys
Its config registry key is HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMsLldp

 
During backup a VSS process running under NETWORK_SERVICE account calls cryptcatsvc!CSystemWriter::AddLegacyDriverFiles(), which enumerates all the drivers and tries opening each one of them. , The function fails on MSLLDP driver with «Access Denied»
error.

 
Turned out it fails because MSLLDP driver’s security permissions do not allow NETWORK_SERVICE to access the driver.

 
The binary security descriptor for the driver is located here:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMsLldpSecurity

 
It should be modified, I used SC.EXE and Sysinternals’ ACCESSCHK.EXE to fix it.

 
The original security descriptor looked like below:

 
>accesschk.exe -c mslldp
mslldp
  RW NT AUTHORITYSYSTEM
  RW BUILTINAdministrators
  RW S-1-5-32-549       <- these are server operators
  R  NT SERVICENlaSvc

 
No service account is allowed to access MSLLDP driver

 
The security descriptor for the drivers that were processed successfully looked this way:

 
>accesschk.exe -c mup
mup
  RW NT AUTHORITYSYSTEM
  RW BUILTINAdministrators
  R  NT AUTHORITYINTERACTIVE
  R  NT AUTHORITYSERVICE  <- this gives access to services

 
How to add access rights for NT AUTHORITYSERVICE to MSLLDP service:

 
1. Run: SC sdshow MSLLDP
You’ll get something like below (SDDL language is documented on MSDN):

 
D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

 
2. Run: SC sdshow MUP
You’ll get:

 
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

********* IMPORTANT *********************************************************

Make sure all Command Parameters are in one line without Carriage Returns and Line Feeds as opposed to the way you see them in these instructions! (i.e. switch off word wrapping etc. when you copy and paste through your editor)

****************************************************************************

3. Take NT AUTHORITY SERVICE entry, which is (A;;CCLCSWLOCRRC;;;SU) and add it to the original MSLLDP security descriptor properly, right before the last S:(AU… group.

 
4. Apply the new security descriptor to MSLLDP service (make sure command is in one line!!!):

 
sc sdset MSLLDP D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

5. Check the result:

 
>accesschk.exe -c mslldp
mslldp
  RW NT AUTHORITYSYSTEM
  RW BUILTINAdministrators
  RW S-1-5-32-549
  R  NT SERVICENlaSvc
  R  NT AUTHORITYSERVICE

 
6. Run you backup app, the error is gone for my Home Server backup.
!!! Do not forget to use your security descriptor for MSLLDP driver since I guess there can be some rare cases when its different for your machine. Do not copy my SDDL descriptions, just in case. And backup the old descriptor just in case !!!

Seems we finally have a solution thanks to user szz743 in
the other forum

Here goes:

«Microsoft Link-Layer Discovery Protocol» binary is Windowssystem32DRIVERSmslldp.sys
Its config registry key is HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMsLldp

 
During backup a VSS process running under NETWORK_SERVICE account calls cryptcatsvc!CSystemWriter::AddLegacyDriverFiles(), which enumerates all the drivers and tries opening each one of them. , The function fails on MSLLDP driver with «Access Denied»
error.

 
Turned out it fails because MSLLDP driver’s security permissions do not allow NETWORK_SERVICE to access the driver.

 
The binary security descriptor for the driver is located here:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMsLldpSecurity

 
It should be modified, I used SC.EXE and Sysinternals’ ACCESSCHK.EXE to fix it.

 
The original security descriptor looked like below:

 
>accesschk.exe -c mslldp
mslldp
  RW NT AUTHORITYSYSTEM
  RW BUILTINAdministrators
  RW S-1-5-32-549       <- these are server operators
  R  NT SERVICENlaSvc

 
No service account is allowed to access MSLLDP driver

 
The security descriptor for the drivers that were processed successfully looked this way:

 
>accesschk.exe -c mup
mup
  RW NT AUTHORITYSYSTEM
  RW BUILTINAdministrators
  R  NT AUTHORITYINTERACTIVE
  R  NT AUTHORITYSERVICE  <- this gives access to services

 
How to add access rights for NT AUTHORITYSERVICE to MSLLDP service:

 
1. Run: SC sdshow MSLLDP
You’ll get something like below (SDDL language is documented on MSDN):

 
D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

 
2. Run: SC sdshow MUP
You’ll get:

 
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

********* IMPORTANT *********************************************************

Make sure all Command Parameters are in one line without Carriage Returns and Line Feeds as opposed to the way you see them in these instructions! (i.e. switch off word wrapping etc. when you copy and paste through your editor)

****************************************************************************

3. Take NT AUTHORITY SERVICE entry, which is (A;;CCLCSWLOCRRC;;;SU) and add it to the original MSLLDP security descriptor properly, right before the last S:(AU… group.

 
4. Apply the new security descriptor to MSLLDP service (make sure command is in one line!!!):

 
sc sdset MSLLDP D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

5. Check the result:

 
>accesschk.exe -c mslldp
mslldp
  RW NT AUTHORITYSYSTEM
  RW BUILTINAdministrators
  RW S-1-5-32-549
  R  NT SERVICENlaSvc
  R  NT AUTHORITYSERVICE

 
6. Run you backup app, the error is gone for my Home Server backup.
!!! Do not forget to use your security descriptor for MSLLDP driver since I guess there can be some rare cases when its different for your machine. Do not copy my SDDL descriptions, just in case. And backup the old descriptor just in case !!!

При просмотре серверов на базе Windows Server 2019 я обнаружил ошибку, ее содержание было таким:

ID 513 CAPI2 – Сбой криптографических служб при обработке вызова OnIdentity () для объекта System Writer. Подробности: AddLegacyDriverFiles: не удалось создать резервную копию двоичного образа протокола обнаружения канального уровня Microsoft. Системная ошибка: доступ запрещен.

Все это можно найти в журнале приложения)”.

ID 513 CAPI2 - Сбой криптографических служб при обработке вызова OnIdentity () для объекта системного писателя

Если вы обратитесь в Microsoft по поводу этой ошибки, вам будет предоставлено следующее объяснение причин:

Эта проблема возникает при выполнении резервного копирования системы, использующего VSS. Это часто приводит к зависанию или остановке процесса резервного копирования на длительный период времени. 

Во время резервного копирования процесс VSS, запущенный под учетной записью NETWORK SERVICE, вызывает cryptcatsvc! CSystemWriter :: AddLegacyDriverFiles (), который перечисляет все записи драйверов в базе данных Service Control Manager и пытается открыть их все. У функции нет разрешения на запись драйвера протокола обнаружения канального уровня Microsoft (Mslldp.dll), и она завершается с ошибкой «Доступ запрещен». Обнаружены разрешения безопасности драйвера MSLLDP для предотвращения доступа NETWORK SERVICE к записи драйвера.

Как устранить ошибку ID 513 CAPI2

логично предположить, что нам нужно добавить права, в этом вам помогут две утилиты нс а также accesschk64. Сначала проверяем, что учетная запись NT AUTHORITY SERVICE не имеет прав, для этого необходимо скачать утилиту accesschk64, входящую в пакет Sysinternals. Для начала воспользуемся этой утилитой, чтобы увидеть текущие разрешения для двух библиотек и сравнить их:

  • mslldp
  • мужик

Для этого нам нужно запустить командную строку из папки, в которой находится утилита accesschk64 и выполните следующие команды:

accesschk64 -c mslldp

accesschk64 -c mup

Как вы можете видеть здесь, разница в том, что в библиотеке mup учетная запись NT AUTHORITY SERVICE имеет разрешения на чтение (R), и это то, что нам нужно добавить для mslldp.

Просмотр разрешений на библиотеки DLL

Следующим шагом является внесение изменений в список доступа в библиотеке mslldp. Для этого нам нужно воспользоваться утилитой SC и увидеть правильное значение. В командной строке введите команду:

SC sdshow MUP

Я выделил значение желтым цветом (A ;; CCLCSWLOCRRC ;;; SU) это то, что предоставляет права чтения для NT AUTHORITY SERVICE. Убедитесь, что в библиотеке mslldp нет этого значения:

SC sdshow MSLLDP

Предоставление прав учетной записи NT AUTHORITY  SERVICE для DLL

Затем нам нужно добавить значение (A ;; CCLCSWLOCRRC ;;; SU)  в список доступа, для этого скопируйте всю строку с выводом для библиотеки mslldp и добавьте недостающее значение в конце. Затем запустите команду:

sc sdset MSLLDP D: (D ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BG) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; SY) (A ;; CCDCLCSWRPDTLOCRSDRCWDWO; 80-572-801-701 ;;) (A ;; CCLCSWLOCRRC ;;; SU)

Исправление ошибки ID 513 CAPI

А теперь еще раз проверим права доступа к библиотеке mslldp.dll

accesschk64 -c mslldp

Как вы можете видеть на скриншоте ниже, мы успешно добавили учетную запись NT СЕРВИСНЫЙ ОРГАН. Теперь ваши журналы Windows (журналы событий) не будут забиты ошибкой «ID 513 CAPI2 – Сбой криптографических служб при обработке вызова OnIdentity () в объекте System Writer». Подробности: AddLegacyDriverFiles: Не удалось выполнить резервное копирование протокола обнаружения изображений двоичного уровня Microsoft Binary Link Layer. Системная ошибка: доступ запрещен ». Чем меньше покраснений, тем лучше, кстати, вы можете легко отслеживать ошибки Windows через Windows Admin Center, поверьте мне, это очень удобно.

iD 513

Profile picture for user Олег

Windows Server

На сервере с операционной системой Windows Server 2016 словил ошибку event id 513. Ошибка древняя и лечится просто.

CAPI2 -Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object

error

Я сразу заметил что баг появился сразу после настройки и запуска резервного копирования.

error

Во время резервного копирования процесс VSS выполняется от имени пользователя NETWORK_SERVICE. Он вызывает функцию cryptcatsvc!CSystemWriter::AddLegacyDriverFiles(), которая бегает по дискам и открывает их. Функция падает на драйвере MSLLDP (Microsoft Link-Layer Discovery Protocol) с ошибкой «Access Denied». Настройки безопасности MSLLDP не позволяют пользователю NETWORK_SERVICE получить доступ к дискам. Нужно немного изменить их.

Выполняем:

SC sdshow MUP

Результат:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Копируем отсюда кусок, который даёт доступ пользователю NETWORK_SERVICE:

(A;;CCLCSWLOCRRC;;;SU)

Выполняем:

SC sdshow MSLLDP

Результат:

D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)

Берём эту строку и вставляем перед «S:(» скопированный кусок. У меня S:(» отсутствует, добавляю просто в конец. Выполняю:

sc sdset MSLLDP D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;;CCLCSWLOCRRC;;;SU)

У вас свои настройки, не копируйте мой текст!

error

После повторного запуска резервного копирования ошибка не повторилась.

Update: March 2016.
Commenters have noted this same fix appears to work correctly on Windows 10 as well

A semi-common error seen on various Windows 8.1 and 2012/R2 systems is the following during the start of system backups that use VSS (i.e. most backups).  This often causes the backup process to hang for a long period of time, or fail.

Application Event Log:
Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object.

Details:
AddLegacyDriverFiles: Unable to back up image of binary Microsoft Link-Layer Discovery Protocol.

System Error:
Access is denied.

Much digging through forums has found what appears to be the cause.

During backup a VSS process running under NETWORK_SERVICE account calls cryptcatsvc!CSystemWriter::AddLegacyDriverFiles(), which enumerates all the drivers records in Service Control Manager database and tries opening each one of them. , The function fails on MSLLDP record with «Access Denied» error.

Turned out it fails because MSLLDP driver’s security permissions do not allow NETWORK_SERVICE to access the driver record.

What causes this to have incorrect permissions in the first place is unclear, but a fairly simple fix exists.  We’ve tested this on several systems without issue, but your mileage may vary.

It can be fixed by correcting the Security Description on the MSLLDP service, using the built-in command line utility SC.exe

Open an Administrative Command Prompt (NOT PowerShell) and execute the following.  This must all be one long command without carriage returns

sc sdset MSLLDP D:(D;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BG)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SO)(A;;LCRPWP;;;S-1-5-80-3141615172-2057878085-1754447212-2405740020-3916490453)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

You should receive a successful result of

[SC] SetServiceObjectSecurity SUCCESS

If so, the problem is resolved, and there’s no reboot required.  The next backup should complete successfully.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка 52 сканера hp laserjet m1522n
  • Ошибка 5123 принтер hp