- Remove From My Forums
-
Общие обсуждения
-
Добрый день. Помогите с решением следующей проблемы:
Есть несколько серверов (2012 R2), распределенных территориально, имеющих свои домены AD.
На основном сервере в главном офисе пытаюсь добавить все сервера в одну консоль «Диспетчер Серверов». Те сервера, которые находятся в том же домене что и основной — добавляются без проблем, но вот сервера имеющие
свои Ad -нет. Выдает следующую ошибку — Ошибка проверки подлинности Kerberos.Служба WINRM — работает на всех серверах.
-
Изменено
6 июня 2014 г. 7:06
-
Изменен тип
Petko KrushevMicrosoft contingent staff, Moderator
11 июня 2014 г. 11:06
-
Изменено
Just set up a new WS2012 Enterprise CA. Server Manager run on the new CA works normally against local and remote WS2012 servers. But when I add the server to other servers’ Server Manager, «All Servers» displays «Kerberos security error»
and this event is logged:
Log Name: Microsoft-Windows-ServerManager-MultiMachine/Operational Source: Microsoft-Windows-ServerManager-MultiMachine Date: 7/27/2015 9:34:09 AM Event ID: 216 Task Category: Node access. Level: Error Keywords: User: DOMAINUsername Computer: LOCALCOMPUTER.DOMAIN.local Description: Invoke method error. Server: REMOTECOMPUTER.DOMAIN.local, Namespace: rootmicrosoftwindowsservermanager, Class: MSFT_ServerManagerTasks, Method: GetServerInventory, Error: The metadata failed to be retrieved from the server, due to the following error: WinRM cannot process the request. The following error with errorcode 0x80090322 occurred while using Kerberos authentication: An unknown security error occurred. Possible causes are: -The user name or password specified are invalid. -Kerberos is used when no authentication method and no user name are specified. -Kerberos accepts domain user names, but not local user names. -The Service Principal Name (SPN) for the remote computer name and port does not exist. -The client and remote computers are in different domains and there is no trust between the two domains. After checking for the above issues, try the following: -Check the Event Viewer for events related to authentication. -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport. Note that computers in the TrustedHosts list might not be authenticated. -For more information about WinRM configuration, run the following command: winrm help config.
All servers are in the same domain, I’m logged on as a Domain Admin, no SPNs have been manually added or deleted. Also tried with the firewall (just Windows firewall) turned off. I don’t find any auth errors in the Security log on either the problem machine
or the remote machines.
SETSPN -L run on the problem server returns this, which looks normal to me:
C:Windowssystem32>SETSPN -L COMPUTERNAME Registered ServicePrincipalNames for CN=COMPUTERNAME,OU=OUName,OU=OUName,DC=DOMAIN,DC=local: WSMAN/COMPUTERNAME.DOMAIN.local TERMSRV/COMPUTERNAME.DOMAIN.local RestrictedKrbHost/COMPUTERNAME.DOMAIN.local HOST/COMPUTERNAME.DOMAIN.local WSMAN/COMPUTERNAME TERMSRV/COMPUTERNAME RestrictedKrbHost/COMPUTERNAME HOST/COMPUTERNAME
Ideas?
[edit]
Found this relevant Event in the System log of the remote Server Manager trying to connect to the problem server:
Log Name: System Source: Microsoft-Windows-Security-Kerberos Date: 7/27/2015 2:33:36 PM Event ID: 4 Task Category: None Level: Error Keywords: Classic User: N/A Computer: COMPUTER.DOMAIN.local Description: The Kerberos client received a KRB_AP_ERR_MODIFIED error from the server REMOTECOMPUTER$. The target name used was HTTP/REMOTECOMPUTER.DOMAIN.local. This indicates that the target server failed to decrypt the ticket provided by the client. This can occur when the target server principal name (SPN) is registered on an account other than the account the target service is using. Ensure that the target SPN is only registered on the account used by the server. This error can also happen if the target service account password is different than what is configured on the Kerberos Key Distribution Center for that target service. Ensure that the service on the server and the KDC are both configured to use the same password. If the server name is not fully qualified, and the target domain (DOMAIN.LOCAL) is different from the client domain (DOMAIN.LOCAL), check if there are identically named server accounts in these two domains, or use the fully-qualified name to identify the server.
…but I don’t know what I need to do about it.
There are no duplicate DNS entries, no duplicate computer entries in AD, no user accounts with the same name, no clustering, all users and computers are in the same domain and forest.
-
Edited by
Monday, July 27, 2015 8:22 PM
- Remove From My Forums
-
Общие обсуждения
-
Добрый день. Помогите с решением следующей проблемы:
Есть несколько серверов (2012 R2), распределенных территориально, имеющих свои домены AD.
На основном сервере в главном офисе пытаюсь добавить все сервера в одну консоль «Диспетчер Серверов». Те сервера, которые находятся в том же домене что и основной — добавляются без проблем, но вот сервера имеющие
свои Ad -нет. Выдает следующую ошибку — Ошибка проверки подлинности Kerberos.Служба WINRM — работает на всех серверах.
- Изменено
6 июня 2014 г. 7:06
- Изменен тип
Petko KrushevMicrosoft contingent staff, Moderator
11 июня 2014 г. 11:06
- Изменено
I have been running Windows Server 2012 R2 Essentials as a VM on Hyper-V Server 2012 R2 (Server Core) for several months.
In the past 2-3 weeks I’ve been having problems. One symptom is that from Server Manager (on my Windows 8.1 client) I get a «Kerberos authentication error» when trying to connect to the Hyper-V server or Essentials.
I have setup the Hyper-V Server and Windows 8.1 clients in my home network to all use Domain logons.
I’ve also noticed that once this error occurs another symptom is that from the Windows 8.1 client (Domain logged on) when I try and logoff it hangs with the message «Signing Out» for 5-10 minutes (or perhaps longer). The logout eventually
completes, but it is abnormally long. When the Kerberos problem is not happening it takes about 2 seconds for the Windows 8.1 logout to complete.
During this time I am able to use Remote Desktop and logon to my Hyper-V server and everything seems to be working normally, i.e., it is not running slow.
It may be a coincidence, but I believe about 2-3 weeks ago was the last time I updated Essentials and Windows 8.1 and picked up all the available OS patches? It may be that one of those patches has a problem?
When I checked the Event Log on Essentials I don’t see any messages that look liked they’d explain what is causing these problems. I did see these two alerts, but I think that these are symptoms of the same problem that is causing the Windows 8.1 logoff
to be slow and not the root problem?
The winlogon notification subscriber <GPClient> took 120 second(s) to handle the notification event (CreateSession).
The winlogon notification subscriber <GPClient> is taking long time to handle the notification event (CreateSession).
Thanks for any assistance in resolving my problems.
Theokrat
- Edited by
Saturday, March 21, 2015 10:01 PM
Typo
I have been running Windows Server 2012 R2 Essentials as a VM on Hyper-V Server 2012 R2 (Server Core) for several months.
In the past 2-3 weeks I’ve been having problems. One symptom is that from Server Manager (on my Windows 8.1 client) I get a «Kerberos authentication error» when trying to connect to the Hyper-V server or Essentials.
I have setup the Hyper-V Server and Windows 8.1 clients in my home network to all use Domain logons.
I’ve also noticed that once this error occurs another symptom is that from the Windows 8.1 client (Domain logged on) when I try and logoff it hangs with the message «Signing Out» for 5-10 minutes (or perhaps longer). The logout eventually
completes, but it is abnormally long. When the Kerberos problem is not happening it takes about 2 seconds for the Windows 8.1 logout to complete.
During this time I am able to use Remote Desktop and logon to my Hyper-V server and everything seems to be working normally, i.e., it is not running slow.
It may be a coincidence, but I believe about 2-3 weeks ago was the last time I updated Essentials and Windows 8.1 and picked up all the available OS patches? It may be that one of those patches has a problem?
When I checked the Event Log on Essentials I don’t see any messages that look liked they’d explain what is causing these problems. I did see these two alerts, but I think that these are symptoms of the same problem that is causing the Windows 8.1 logoff
to be slow and not the root problem?
The winlogon notification subscriber <GPClient> took 120 second(s) to handle the notification event (CreateSession).
The winlogon notification subscriber <GPClient> is taking long time to handle the notification event (CreateSession).
Thanks for any assistance in resolving my problems.
Theokrat
- Edited by
Saturday, March 21, 2015 10:01 PM
Typo
- Remove From My Forums
-
Вопрос
-
Доброго времени суток. Получаю данное сообщение, когда пытаюсь удаленно выполнить команду, типа icm -computername pc1 -scriptblock {Test-Path c:windows} и получаю это:
[pc1] Сбой подключения к удаленному серверу pc1. Сообщение об ошибке: WinRM не удается обработать запрос. П
ри использовании проверки подлинности Kerberos возникла следующая ошибка с кодом ошибки 0x80090322: Произошла неизвестн
ая ошибка безопасности.
Возможные причины:
— Указаны неверные имя пользователя или пароль.
— Используется проверка подлинности Kerberos без указания способа проверки подлинности и имени пользователя.
— Kerberos принимает имена пользователей домена, но не принимает имена локальных пользователей.
— Имя субъекта-службы (SPN) для имени и порта удаленного компьютера не существует.
— Клиентский и удаленный компьютеры находятся в разных доменах, между которыми отсутствует доверительное отношение.
После проверки указанных выше проблем попробуйте выполнить следующее:
— Просмотрите в средстве «Просмотр событий» события, относящиеся к проверке подлинности.
— Измените способ проверки подлинности, добавьте конечный компьютер в конфигурацию TrustedHosts для WinRM либо воспол
ьзуйтесь транспортом HTTPS.
Помните о том, что компьютеры в списке TrustedHosts могут не проходить проверку подлинности.
— Для получения дополнительных сведений о конфигурации WinRM выполните следующую команду: winrm help config. Подробн
ости см. в разделе справки «about_Remote_Troubleshooting».
+ CategoryInfo : OpenError: (pc1:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : -2144108387,PSSessionStateBrokenОС ХР, локально и удаленно на 5985 заходит нормально. На комп захожу с правами админа. А вот icm и new-psession, тоже локально и удаленно, нет. Хотелось бы узнать что это ошибка значит и как ее решить? Вывод setspn -L pc1:
Зарегистрирован ServicePrincipalNames для CN=pc1,DC=com:
HTTP/pc1.com
HTTP/pc.1
WSMAN/pc1
WSMAN/pc1.com
HOST/pc1
HOST/pc1.com
По IP адресу отрабатывает норм, т.е. dir 10.1.1.1c$ выполняется нормально.- Изменено
8 июня 2015 г. 7:39
- Изменено
Ответы
-
Весьма подозрительное сообщение. Проверьте — с помощью ping, nslookup, nbtstat -a/nbtstat -c (если NetBIOS включен) — не разрешается ли имя PC1 случайно в адрес для PC2?
Слава России!
- Помечено в качестве ответа
Net Ranger
9 июня 2015 г. 5:37
- Помечено в качестве ответа
Обновлено 03.08.2017
Добрый день уважаемые читатели, не так давно у меня на работе была задача по настройке групп доступности SQL на Windows кластере, там клиентам сделали красивый веб-инструментарий, все замечательно, теперь клиент ждет следующего развития ситуации, а именно настройка и внедрение механизма Single Sign-On (SSO) или по русски единая точка аутентификация, мы с вами уже с ней знакомились при настройке Vmware vCenter Server. Данный механизм работает на протоколе шифрования kerberos, о котором мы и поговорим. Мы рассмотрим как происходит проверка подлинности kerberos в Active Directory, так как понимание принципов работы, поможет вам в реализации единой точки аутентификации.
Идентификация и доступ в Active Directory
Доменные службы Active Directory (Active Directory Domain Services, AD DS ) обеспечивают идентификацию и доступ (Identity and Access, IDA ) для корпоративных сетей. Давайте посмотрим каким требованиям и критериям должна соответствовать структура IDA:
- Она должна хранить информацию, о всех объектах Active Directory, среди которых: пользователи, группы безопасности, компьютеры, принтеры и другие объекты идентификации. Под объектом идентификации (identity) подразумевается, некое представление сущности, в задачи которой входит выполнение каких-либо действий в корпоративной сети. Простой пример, есть пользователь Вася и он работает с документами в общей папке на сервере. Эти документы имеют защиту на доступ, который определяет список контроля доступа (Access Contro l List, ACL). Доступом у нужным файлам, управляет подсистема безопасности сервера, где лежит папка, и при обращении к ней он производит сравнение объекта идентификации пользователя с теми объектами, которые присутствуют в его списке ACL, и уже на основании этого, он принимает решение предоставить или запретить пользователю доступ. Так как службы, компьютеры, группы и другие объекты выполняют определенные вещи в локальной сети, то у каждого из них есть свой объект идентификации. Данный объект содержит много информации, уникальной для каждого из них, например, имя пользователя, его идентификатор безопасности (Security Identifier, SID), пароль. Так, что хранилище объектов идентификации, является неотъемлемой частью Identity and Access. Все данные в Active Directory, располагаются в каталоге AD, которым управляет контроллер домена.
- Проверка подлинности объекта идентификации. Тут общий принцип такой, когда пользователь обращается к документу, то сервер его ему не покажет, пока тот, не подтвердит подлинность объекта идентификации, который фигурирует в запросе. Чтобы все это сделать, у пользователя есть некая секретная информация, которая известна ему и инфраструктуре IDA, вот эти данные как раз и сравниваются с теми, что есть в хранилище объектов идентификации в момент проверки подлинности.
Чем хороша операционная система Windows, так это тем, что она очень унифицированная, за счет интерфейса SSPI (Security Support Provider Interface). SSPI — это механизм операционной системы Windows в задачи которого идет, предоставление приложениям не зависеть от различных решений протоколов аутентификации, позволяя работать абсолютно с любыми из них, если перефразировать, то любое приложение может использовать любой протокол аутентификации. Еще очень большой плюс интерфейса SSPI, то что он позволяет изолировать сетевой транспорт от протоколов аутентификации, если по простому, то эти протоколы становятся независимыми от протоколов передачи данных по сети, и приложению вообще до лампочки, какой из них использовать.
Именно за счет провайдеров Security Support Provider (SSP) сделан механизм аутентификации. Операционная система Windows уже имеет встроенные модули, но никто не мешает программистам, взять и написать свой и подключить его к SSPI
Протокол аутентификации kerberos пришел на смену устаревшему и уже с точки зрения не безопасному, протоколу NTLM, он был основным до Windows 2000. Протокол Kerberos всегда используется в построении механизмов Single Sign-On. В его основе лежит такой принцип, что если двум участникам известен некий ключ и у них есть возможность подтвердить это, то они смогут однозначно идентифицировать друг друга.
Пользовательский ключ — когда системный администратор заводит новую учетную запись пользователя, значение его пароля используется при создании ключа, он хранится рядом с самим объектом пользователя AD. И как написано выше, это ключ знают контроллер домена и пользователь, две стороны.
Системный ключ — в момент ввода компьютера в домен Active Directory он так же получает свой уникальный пароль, на его основании и создается ключ, все как у пользователя. Еще отмечу, что данный пароль каждый месяц автоматически меняется, поэтому старые компьютеры, которые долго не были включены, не могут пройти аутентификацию в домене, так как потеряны доверительные отношения.
Ключ службы (service key) — тут все просто, очень часто системные администраторы для запуска службы создают отдельного доменного пользователя, в следствии чего служба получит его ключ, но если она запускается под учетной записью системы (LocalSystem), то получит ключ компьютера.
Междоменный ключ (inter-realm key). Этот ключ обеспечивает междоменную аутентификацию и используется для обеспечения доверительных отношений в среде Aсtive Directory.
- Давайте рассматривать каким образом происходит проверка подлинности Kerberos в домене Active Directory. И так пользователь или же компьютер, пытаются войти в локальную сеть домена, именно протокол Kerberos удостоверяется в подлинности указанных реквизитов, в следствии чего выдает пакет данных, а точнее билет или тикет (Ticket), по правильному он называется TGT (Ticket Granting Ticket).
Ticket (билет) является зашифрованным пакетом данных, который выдается доверенным центром аутентификации, в терминах протокола Kerberos — Key Distribution Center (KDC, центр распределения ключей). TGT шифруется при помощи ключа, общего для служб KDC, то есть клиент не может прочитать информацию из своего билета. Этот билет используется клиентом для получения других билетов.
- Теперь когда у пользователя или компьютера есть билет TGT, он может его предоставлять любому сервису или ресурсу. В дальнейшем, при обращении к отдельным ресурсам сети, пользователь, предъявляя TGT, получает от KDC удостоверение для доступа к конкретному сетевому ресурсу — Service Ticket (TGS). Данный билет будет идентифицировать прошедшего проверку подлинности пользователя на сервере. Пользователь предоставит TGS билет для доступа к серверу, он его примет и подтвердит прохождение проверки подлинности. Вот тут Kerberos и показывает все свои достоинства, ему требуется лишь один сетевой вход и после получения им билета TGT он проходит проверку подлинности для всего домена целиком, что дает ему возможность получать идентификационные билеты на доступ к службам, не вводя ни каких учетных данных, все эти операции осуществляются за счет встроенных клиентов и служб Kerberos в Kerberos.
Сам Ticket-Granting Service состоит из двух вещей, первая это копия сессионного ключа и информация о клиенте. Все эти данные зашифрованы ключом, общим между сервисом к которому идет обращение и KDC. Это означает, что пользователь не сможет посмотреть эти данные, а вот служба или сервер к которому идет обращение да.
За счет высокого уровня безопасности протокола Kerberos, при передаче данных вы не увидите пароли или значения хэш в открытом виде. Еще одним требованием к работе с данным протоколом, выступает системное время, которое не может расходится с временем на контроллере домена более чем 5 минут
Еще очень важным моментом, является тот фактор, что служба KDC, должна точно знать к какому именно сервису идет обращение и каким ключом шифрования производить обработку. Для этого есть такой механизм, как Service Principal Names, по сути это уникальный идентификатор службы, который будет прописан в вашей базе Active Directory. Из требований к нему, он должен быть уникален в рамках леса. Каждая служба, которая будет использовать Kerberos, должна иметь зарегистрированный SPN. Без правильно настроенного идентификатора протокол для этой службы или сервера работать не будет.
Сам SPN будет хранится в атрибуте Service-Principal-Name, у той учетной записи к которой он привязан и под которым стартует служба. Таким образом, SPN связывает воедино все части процесса. Клиент знает, к какой службе он хочет получить доступ. И при запросе ключа он строит строку SPN, к примеру, при помощи функции DsMakeSpn. Сервер KDC, получив эти данные, может найти учетную запись, под которой стартует эта служба, и, используя ключ этой учетной записи из Active Directory, создать билет доступа к службе и зашифровать его этим ключом.
Как производится настройка SPN мною уже была описана в одной из статей.
Детальная проверка kerberos от начала логирования
Давайте еще в картинках я расскажу более детально как происходит проверка подлинности kerberos, от момента ввода пароля пользователем. И так:
- Человек видит поля ввода логина и пароля у себя на компьютере
- Компьютер получив от пользователя первичные данные делает запрос к контроллеру домена, а точнее к службе Key Distribution Center, где передает KDC имя пользователя в открытом виде, имя домена и текущее время на рабочей станции, еще раз напоминаю, что оно не должно отличаться от времени на контроллере домена более ,чем на 5 минут. Значение текущего времени передается в зашифрованном виде, и будет выступать аутентификатором. Напоминаю, что ключ шифрования (пользовательский ключ) формируется из пароля пользователя, как результат хеширования.
- Служба KDC видит обращение с компьютера и начинает поиск пользователя в Active Directory, проверяет его пользовательский ключ и расшифровывает аутентификатор, если по русски она получает время отправления запроса. После чего Key Distribution Center создает два тикета. Первый это сессионный ключ, он нужен для шифрования данных между клиентом и KDC. Второй тикет, это билет на получение билета (Ticket-Granting Ticket (TGT)), как только он появился у пользователя, тот сможет запрашивать тикеты для сервисов и серверов. Сам TGT билет состоит из таких частей: копия ключа сессии, время окончания жизни билета и имя пользователя. TGT шифруется с использованием мастер ключа самой службы Key Distribution Center, поэтому пользователь не может его расшифровать.
- Как только эти билеты сформированы Key Distribution Center шифрует аутентификатор пользователя (time stamp) и сессионный ключ, с помощью пользовательского ключа и спокойно передает их пользователю.
- Так как у пользователя есть его, пользовательский ключ, он спокойно расшифровывает билеты от Key Distribution Center и проверяет аутентификатор. В итоге он теперь обладает и ключем сессии и TGT ключом, теперь первый этап Kerberos закончен и пользователю больше не нужно в этой сессии заказывать эти билеты.
- Далее клиент хочет получить доступ на сервис, так как у него уже есть ключ на получение других ключей (TGT), для доступа к сервису он предоставляет KDC, свой Ticket-Granting Ticket и штамп времени, которые шифрует сессионным ключом.
- KDC получает этот запрос и билеты, расшифровывает их используя свой ключ. Контроллер домена подтверждает, что запрос поступил именно от нужного пользователя.
- Следующим шагом Key Distribution Center, генерирует два тикета (Service Ticket (TGS)), один для обратившегося клиента, а второй для сервиса, к которому клиент обращается. Каждый из тикетов, будет содержать имя пользователя, кто просит доступ, кто должен получить запрос, штамп времени, рассказывающий, когда создан тикет, и срок его жизни, а так же новый ключ Kcs. Kcs — это ключ для сервиса и клиента, в задачи которого входит обеспечение безопасного взаимодействия между ними. Далее KDC шифрует билет сервиса, используя для этого системный ключ сервера и вкладывает этот билет внутрь билета клиента, у которого так же есть свой Kcs ключ.
- Теперь все это дело шифруется сессионным ключом и передается клиенту.
- Клиент получает билет, расшифровывает его с помощью сессионного ключа и видит свой TGS тикет, и Kcs сервиса, клиент не может прочитать Kcs предназначенный для сервиса
- Теперь клиент формирует штамп времени и шифрует его Kcs ключом, отправляет его вместе с билетом, TGS предназначенным для него.
- Когда сервер с сервисом, получает эту информацию, он сразу видит пакет от KDC предназначенный для него с ключом TGS (Kcs). Он расшифровывает им штамп времени от клиента.
- Так как у обоих участников есть TGS ключ, они могут быть обо уверены, что клиент правильно идентифицирован, т. к. для шифрования маркера времени был использован Kcs . В случае необходимости ответа сервера клиенту, сервер воспользуется ключом Kcs . Клиент будет знать, что сервер правильно идентифицирован, поскольку сервер должен использовать, чтобы получить Kcs.
IIS 6.0
В следующем техническом документе описывается настройка делегирования в Microsoft Windows Server 2003. В документе имеются специальные сведения для балансировки сетевой нагрузки (NLB), но включает прекрасным подробные сведения о настройке делегированные сценарий без использования балансировки сетевой Нагрузки. Чтобы просмотреть этот документ, посетите следующий веб-узел корпорации Майкрософт:
Примечание. Использование имен HTTP участника-службы (SPN), особенно при использовании балансировки сетевой Нагрузки.
Другой популярный Kerberos проблема недавно была необходимость обеспечить для нескольких пулов приложений использовать то же имя DNS. К сожалению при использовании Kerberos для делегирования учетных данных в разных пулах приложений нельзя привязать же имя участника службы (SPN). Это невозможно из-за структуры Kerberos. Протокол Kerberos требует нескольких общих секретов для правильной работы протокола. С помощью того же имени участника-службы для различных пулов приложений, мы исключить один из этих общих секретов.В службе каталогов Active Directory не поддерживает такую настройку протокола Kerberos из-за проблемы безопасности.
Настройка SPN таким образом вызывает сбой проверки подлинности Kerberos. Возможным способом решения этой проблемы может быть использование протоколов. Первоначальная проверка подлинности между клиентом и сервером под управлением IIS будет обрабатываться с помощью протокола проверки подлинности NTLM. Kerberos будет обрабатывать проверки подлинности между сервером IIS и ресурсов сервера базы данных.
Microsoft Internet Explorer 6 или более поздней версии
Обозреватель клиента могут возникнуть проблемы, например получение повторного входа запрашивает учетные данные или сообщения об ошибке «401 Access Denied» на сервере под управлением служб IIS. Мы нашли следующие две проблемы, которые могут способствовать решению этих проблем:
- Убедитесь, что в свойствах обозревателя установлен флажок Включить интегрированную проверку подлинности Windows . Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
299838 не удается согласовать проверку подлинности Kerberos после обновления до Internet Explorer 6
- Если конфигурация усиленной безопасности Internet Explorer включен в Установка и удаление программ, необходимо добавить узел, использующий делегирования в список надежных узлов . Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
815141 конфигурация усиленной безопасности Internet Explorer изменяет работу в Интернете
IIS 5.0 и IIS 6.0
После обновления IIS 4.0 до IIS 5.0 или IIS 6.0 делегирования может работать неправильно, или возможно кто-то или приложения был изменен свойство метабазы NTAuthenticationProviders. Дополнительные сведения о том, как устранить эту проблему, щелкните следующий номер статьи базы знаний Майкрософт:
248350 сбой проверки подлинности Kerberos после обновления IIS 4.0 до IIS 5.0
Определенной области проблем может возникнуть при задании имени участника службы
Определение имени сервера
Определите ли вы подключаетесь к веб-узлу, фактические NetBIOS-имя сервера или псевдоним, например имя DNS (например, www.microsoft.com). Если вы обращаетесь к веб-серверу по имени, фактическое имя сервера, новое имя участника службы (SPN) необходимо зарегистрировать с помощью средства Setspn из состава Windows 2000 Server Resource Kit. Поскольку это имя службы неизвестно службе каталогов Active Directory, службы предоставления билетов (TGS) не выдает билет для проверки подлинности пользователя. Это вынуждает клиента используйте следующий метод проверки подлинности, который используется NTLM для повторного согласования. Если веб-сервер отвечает на DNS-имя www.microsoft.com, но сервер с именем webserver1.development.microsoft.com, необходимо зарегистрировать www.microsoft.com в Active Directory на сервере, на котором выполняется под управлением служб IIS. Для этого необходимо загрузить средство Setspn и установить его на сервере, на котором выполняется IIS.
При использовании Windows Server 2003 и IIS 6 средства Setspn для Microsoft Windows Server 2003 можно загрузить из следующей папки:
Чтобы определить ли вы подключаетесь с помощью фактическое имя, попытайтесь подключиться к серверу с помощью фактическое имя сервера, а не DNS-имя. Если не удается подключиться к серверу, обратитесь к разделу «Проверьте компьютер доверенным для делегирования».
Если можно подключиться к серверу, выполните следующие действия, чтобы назначить имя SPN для имени DNS, который используется для подключения к серверу.
- Установите средство Setspn.
- На сервере под управлением служб IIS откройте окно командной строки и откройте папку C:Program FilesResource комплект.
- Выполните следующую команду, чтобы добавить это новое имя участника службы (www.microsoft.com) в Active Directory для сервера:
Setspn — HTTP/www.microsoft.com WebServer1
Примечание. В этой команде WebServer1 представляет NetBIOS-имя сервера.
Появится сообщение, подобное приведенному ниже:
Registering ServicePrincipalNames for CN=webserver1,OU=Domain Controllers,DC=microsoft,DC=com HTTP/www.microsoft.com Updated object
Чтобы просмотреть список имен SPN на сервере, чтобы видеть это новое значение, введите следующую команду на сервере под управлением служб IIS:
-L Setspn имя_веб-сервера
Обратите внимание, что нет необходимости регистрировать все службы. Многие типы служб, например HTTP, W3SVC, WWW, RPC, CIFS (доступ к файлам), WINS и источники бесперебойного питания (ИБП), укажите сопоставляются с типом службы по умолчанию с именем узла. Например если клиентское программное обеспечение использует имя SPN HTTP/webserver1.microsoft.com, чтобы создать подключение HTTP к веб-серверу на сервере webserver1.microsoft.com, но это имя участника службы не зарегистрирован на сервере, контроллере домена Windows 2000 будут автоматически сопоставляться подключение HOST/webserver1.microsoft.com. Это сопоставление применяется только в том случае, если веб-служба выполняется под локальной системной учетной записью.
Убедитесь, что компьютер является доверенным для делегирования
Если этот сервер IIS входит в состав домена, но не является контроллером домена, компьютер должен быть доверенным для делегирования Kerberos для правильной работы. Чтобы сделать это, выполните следующие действия.
- На контроллере домена нажмите кнопку Пуск, выделите пункт Настройкаи выберите пункт Панель управления.
- На панели управления откройте Администрирование.
- Дважды щелкните Active Directory-пользователи и компьютеры.
- Под именем своего домена щелкните компьютеры.
- В списке найдите сервер IIS, щелкните правой кнопкой мыши имя сервера и выберите пункт Свойства.
- Перейдите на вкладку Общие , установите флажок « Делегирование разрешено » и нажмите кнопку ОК.
Обратите внимание, что при достижении нескольких веб-сайтов по URL-адреса, но другие порты делегирование работать не будет. Чтобы добиться этого, необходимо использовать различные имена узлов и различные имена участников-служб. Когда Internet Explorer запрашивает либо http://www. мой_веб.com или http://www. мой_веб.com:81, Internet Explorer запрашивает билет для SPN HTTP/www.mywebsite.com. Internet Explorer не добавить порт или vdir запрос на имя участника-службы. Данное поведение является одинаковым для http://www. .com/app1мой_вебили http://www. мой_веб.com/app2. В этом случае Internet Explorer запрашивает билет для SPN http://www. .com мой_вебиз центра распространения ключей (KDC). Каждое имя участника-службы могут быть объявлены только для одного идентификатора. Таким образом будет также появляется сообщение об ошибке KRB_DUPLICATE_SPN при попытке объявить это имя участника службы для каждого удостоверения.
Делегирование и Microsoft ASP.NET
Дополнительные сведения о конфигурации для делегирования учетных данных при использовании приложения ASP.NET щелкните следующий номер статьи базы знаний Майкрософт:
Как 810572 настроить приложение ASP.NET для делегирования
Олицетворение и делегирование двумя способами сервер для проверки подлинности от имени клиента. Решение, какие из этих методов для использования и их реализация может привести к путанице. Необходимо просмотреть различия между этими двумя методами и проверьте, какой из этих методов, вы можете использовать для вашего приложения. Мои рекомендации, можно прочитать в следующем техническом документе, для получения дополнительной информации:
После установки обновления KB4103718 на моем компьютере с Windows 7 я не могу удаленно подключится к серверу c Windows Server 2012 R2 через удаленный рабочий стол RDP. После того, как я указываю адрес RDP сервера в окне клиента mstsc.exe и нажимаю «Подключить», появляется ошибка:
Подключение к удаленному рабочему столу
Произошла ошибка проверки подлинности.
Указанная функция не поддерживается.
Удаленный компьютер: computername
После того, как я удалил обновление KB4103718 и перезагрузил компьютер, RDP подключение стало работать нормально. Если я правильно понимаю, это только временное обходное решение, в следующем месяце приедет новый кумулятивный пакет обновлений и ошибка вернется? Можете что-нибудь посоветовать?
Ответ
Вы абсолютно правы в том, что бессмысленно решать проблему удалением обновлений Windows, ведь вы тем самым подвергаете свой компьютер риску эксплуатации различных уязвимостей, которые закрывают патчи в данном обновлении.
В своей проблеме вы не одиноки. Данная ошибка может появится в любой операционной системе Windows или Windows Server (не только Windows 7). У пользователей английской версии Windows 10 при попытке подключится к RDP/RDS серверу аналогичная ошибка выглядит так:
An authentication error has occurred.
The function requested is not supported.
Remote computer: computername
Ошибка RDP “An authentication error has occurred” может появляться и при попытке запуска RemoteApp приложений.
Почему это происходит? Дело в том, что на вашем компьютере установлены актуальные обновления безопасности (выпущенные после мая 2018 года), в которых исправляется серьёзная уязвимость в протоколе CredSSP (Credential Security Support Provider), использующегося для аутентификации на RDP серверах (CVE-2018-0886) (рекомендую познакомится со статьей Ошибка RDP подключения: CredSSP encryption oracle remediation). При этом на стороне RDP / RDS сервера, к которому вы подключаетесь со своего компьютера, эти обновления не установлены и при этом для RDP доступа включен протокол NLA (Network Level Authentication / Проверку подлинности на уровне сети). Протокол NLA использует механизмы CredSSP для пре-аутентификация пользователей через TLS/SSL или Kerberos. Ваш компьютер из-за новых настроек безопасности, которые выставило установленное у вас обновление, просто блокирует подключение к удаленному компьютеру, который использует уязвимую версию CredSSP.
Что можно сделать для исправления эту ошибки и подключиться к вашему RDP серверу?
- Самый правильный способ решения проблемы – установка последних кумулятивных обновлений безопасности Windows на компьютере / сервере, к которому вы подключаетесь по RDP;
- Временный способ 1. Можно отключить проверку подлинности на уровне сети (NLA) на стороне RDP сервера (описано ниже);
- Временный способ 2. Вы можете на стороне клиента разрешить подключение к RDP серверам с небезопасной версией CredSSP, как описано в статье по ссылке выше. Для этого нужно изменить ключ реестра AllowEncryptionOracle (команда
REG ADD
HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParameters /v AllowEncryptionOracle /t REG_DWORD /d 2
) или изменить настройки локальной политики Encryption Oracle Remediation / Исправление уязвимости шифрующего оракула), установив ее значение = Vulnerable / Оставить уязвимость).Это единственный способ доступа к удаленному серверу по RDP, если у вас отсусвует возможность локального входа на сервер (через консоль ILO, виртуальной машины, облачный интерфейс и т.д.). В этом режиме вы сможете подключиться к удаленному серверу и установить обновления безопасности, таким образом перейдете к рекомендуемому 1 способу. После обновления сервера не забудьте отключить политику или вернуть значение ключа AllowEncryptionOracle = 0 :
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParameters /v AllowEncryptionOracle /t REG_DWORD /d 0
Отключение NLA для протокола RDP в Windows
Если на стороне RDP сервера, которому вы подключаетесь, включен NLA, это означает что для преаутентификации RDP пользователя используется CredSPP. Отключить Network Level Authentication можно в свойствах системы на вкладке Удаленный доступ (Remote), сняв галку «Разрешить подключения только с компьютеров, на которых работает удаленный рабочий стол с проверкой подлинности на уровне сети / Allow connection only from computers running Remote Desktop with Network Level Authentication (recommended)» (Windows 10 / Windows 8).
В Windows 7 эта опция называется по-другому. На вкладке Удаленный доступ нужно выбрать опцию «Разрешить подключения от компьютеров с любой версией удаленного рабочего стола (опасный) / Allow connections from computers running any version of Remote Desktop (less secure)».
Также можно отключить проверку подлинности на уровне сети (NLA) с помощью редактора локальной групповой политики — gpedit.msc (в Windows 10 Home редактор политик gpedit.msc можно запустить так) или с помощью консоли управления доменными политиками – GPMC.msc. Для этого перейдите в разделе Конфигурация компьютера –> Административные шаблоны –> Компоненты Windows –> Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов –> Безопасность (Computer Configuration –> Administrative Templates –> Windows Components –> Remote Desktop Services – Remote Desktop Session Host –> Security), отключите политику Требовать проверку подлинности пользователя для удаленных подключений путем проверки подлинности на уровне сети (Require user authentication for remote connections by using Network Level Authentication).
Также нужно в политике «Требовать использования специального уровня безопасности для удаленных подключений по протоколу RDP» (Require use of specific security layer for remote (RDP) connections) выбрать уровень безопасности (Security Layer) — RDP.
Для применения новых настроек RDP нужно обновить политики (gpupdate /force) или перезагрузить компьютер. После этого вы должны успешно подключиться к удаленному рабочему столу сервера.
Я настраиваю лабораторную среду Windows. Он имеет контроллер домена Win2012R2 (srv001), и я хотел бы добавить еще один сервер Win2012R2 в домен (srv003). На самом деле все идет хорошо. Я дал новому серверу статический IP-адрес в той же подсети, что и DC, указал его на правильный DNS-сервер и добавил сервер в домен.
Однако, когда я добавляю новый сервер в Диспетчер серверов, я получаю ошибку Kerberos: 0x80090322. У меня довольно длинное сообщение об ошибке, которое я опубликую ниже. Я провел некоторое тестирование и обнаружил, что на самом деле я могу настроить удаленный сеанс Powershell для сервера с использованием аутентификации Kerberos:
$s = New-PSSession -ComputerName srv003 -Authentication Kerberos
$s | Enter-PSSession
Здесь нет проблем. Я побежал Enable-PSRemoting
на удаленном сервере проблем тоже нет.
Почему диспетчеру сервера не нравится мой новый сервер? Тем более что возможно настроить удаленный Powershell с использованием того же протокола, на который жалуется Server Manager.
Сообщение об ошибке, которое принадлежит к коду ошибки 0x80090322:
Не удалось обновить конфигурацию со следующей ошибкой: не удалось получить метаданные с сервера из-за следующей ошибки: WinRM не может обработать запрос. При использовании проверки подлинности Kerberos произошла следующая ошибка с кодом ошибки 0x80090322: Произошла неизвестная ошибка безопасности. Возможные причины:
- Имя пользователя или пароль указаны неверно.
- Kerberos используется, когда не указан метод аутентификации и имя пользователя.
- Kerberos принимает доменные имена пользователей, но не локальные имена пользователей.
- Имя участника службы (SPN) для имени и порта удаленного компьютера не существует.
- Клиентский и удаленный компьютеры находятся в разных доменах, и между двумя доменами нет доверия.
После проверки вышеуказанных проблем попробуйте следующее:
- Проверьте Event Viewer для событий, связанных с аутентификацией.
- Изменить метод аутентификации; добавьте конечный компьютер к параметру конфигурации WinRM TrustedHosts или используйте транспорт HTTPS. Обратите внимание, что компьютеры в списке TrustedHosts могут не проходить проверку подлинности.
- Для получения дополнительной информации о конфигурации WinRM выполните следующую команду: winrm help config.
Чтобы вернуться к пронумерованным пунктам в сообщении об ошибке:
- Я использую учетную запись администратора домена, чтобы сделать это.
- Не уверен, как это изменить в диспетчере сервера, поэтому я полагаю, что по умолчанию это должно быть сделано.
- Я бегу внутри домена, запускаю Диспетчер серверов как администратор домена.
- На самом деле на сервере есть следующие имена участников-служб, которых я не коснулся:
- DFSR-12F9A27C-BF97-4787-9364-D31B6C55EB04 / srv003.rwwilden01.local
- TERMSRV / SRV003
- TERMSRV / srv003.rwwilden01.local
- WSMAN / srv003
- WSMAN / srv003.rwwilden01.local
- RestrictedKrbHost / SRV003
- HOST / SRV003
- RestrictedKrbHost / srv003.rwwilden01.local
- HOST / srv003.rwwilden01.local
- Оба компьютера находятся в одном домене.
- Нет событий на клиентском компьютере.
- В этом не должно быть необходимости.
2014-03-07 06:50
5
ответов
Решение
Хорошо, я наконец понял это. Я еще раз внимательно посмотрел журнал событий удаленного сервера. Он содержал ошибку со следующим текстом ошибки:
Клиент Kerberos получил ошибку KRB_AP_ERR_MODIFIED с сервера srv003. В качестве целевого имени использовался HTTP/srv003.rwwilden01.local. Это означает, что целевому серверу не удалось расшифровать билет, предоставленный клиентом. Это может произойти, когда имя участника целевого сервера (SPN) зарегистрировано в учетной записи, отличной от учетной записи, используемой целевой службой. Убедитесь, что целевой SPN зарегистрирован только для учетной записи, используемой сервером. Эта ошибка также может произойти, если пароль целевой учетной записи службы отличается от пароля, настроенного в центре распространения ключей Kerberos для этой целевой службы. Убедитесь, что служба на сервере и KDC настроены на использование одного и того же пароля. Если имя сервера не полностью определено, а целевой домен (RWWILDEN01.LOCAL) отличается от клиентского домена (RWWILDEN01.LOCAL), проверьте, есть ли в этих двух доменах учетные записи с одинаковыми именами, или используйте полное имя идентифицировать сервер.
Оказалось, что я добавил управляемую служебную учетную запись неделей ранее с SPN HTTP/srv003.rwwilden.local
, Я не уверен, почему Server Manager сначала пытается использовать это целевое имя, но, очевидно, это не работает. Имеет смысл, поскольку этот SPN имеет мало общего с реальным сервером.
После того, как я удалил служебную учетную запись, все стало работать так, как я хотел.
rwwilden
07 мар ’14 в 06:50
2014-03-07 06:50
2014-03-07 06:50
Была та же ошибка и пробовал много разных решений. Помогло использование явного адреса IPv4 вместо имени домена.
2015-10-08 11:33
Я не мог добавить комментарий (Новая работа, новая учетная запись, без баллов) к сообщению, которое я хотел, поэтому я отвечаю. Причина, по которой использование IP-адреса помогает / решает проблему, заключается в том, что при использовании IP-адреса Kerberos не используется. Ограничение предпринимается только при использовании полного доменного имени (или имени NBT, но это только потому, что оно добавляет имя домена, что в любом случае делает его fqdn). Вообще говоря, большинство ошибок Kerberos вызвано либо именованием, либо ИД SPN, либо неправильно установленным, либо для требуемой службы. Cnames не работают между прочим, если вы не отключите строгую проверку имени и даже тогда не будут работать при некоторых обстоятельствах, поэтому я советую вам избегать их хотя бы во время диагностики. Но, честно говоря… ЛУЧШИЙ подход к выяснению подобного рода вещей (поскольку журналы Windows и Curb не очень полезны) — это использовать Wireshark. вы увидите согласование, и вы поймете, почему он терпит неудачу, что он пытается, и т. д. Кроме того, если вы включите «аналитические и отладочные» журналы в средстве просмотра событий, вы получите дополнительные журналы отладки для Curb, которые вы можете включить, которые немного более полезны., Тем не менее… Wireshark всегда твой друг imho!
K3nnyg
29 дек ’16 в 19:55
2016-12-29 19:55
2016-12-29 19:55
В моем случае у меня был зарегистрирован HTTP/ SPN для объекта, который принадлежал НЕ серверу. Однако я не смог найти, кому он принадлежит, потому что инструмент SETSPN.exe не показывает, какой контейнер (или объект) владеет SPN. Я использовал следующий сценарий PowerShell, чтобы найти владельца SPN. После того, как я удалил SPN и воссоздал его с сервером в качестве владельца (с помощью инструмента SETSPN.exe), я ждал 30 минут, пока все контроллеры домена синхронизируются, и затем все заработало.
# Source / credit:
# https://social.technet.microsoft.com/wiki/contents/articles/18996.active-directory-powershell-script-to-list-all-spns-used.aspx
Clear-Host
$Search = New-Object DirectoryServices.DirectorySearcher([ADSI]"")
$Search.Filter="(servicePrincipalName=*)"
## You can use this to filter for OU's:
## $Results = $Search.FindAll() | ?{ $_.Path -like '*OU=whatever,DC=whatever,DC=whatever*' }
$Results=$Search.FindAll()
foreach($Result in $Results ) {
$UserEntry=$Result.GetDirectoryEntry()
Write-Host "Object Name = " $UserEntry.name -BackgroundColor "yellow" -ForegroundColor "black"
Write-Host "DN = " $UserEntry.distinguishedName
Write-Host "Object Cat. = " $UserEntry.objectCategory
Write-Host "servicePrincipalNames"
$i=1
foreach($SPN in $UserEntry.servicePrincipalName ) {
Write-host "SPN(" $i ") = " $SPN
$i++
}
Write-Host ""
}
2020-02-13 19:09
Это может произойти, когда есть дубликаты ServicePrincipalNames, что является допустимым сценарием, но, к сожалению, сбивает с толку WinRM.
Например, рассмотрим учетную запись службы appPoolAccount и сервер myWebServer. Оба объекта в Active Directory будут иметь свойство ServicePrincipalName, содержащее одну и ту же строку «HTTP / myWebServer». ServicePrincipalName на myWebServer будет немного отличаться, потому что это будет HTTP/myWebServer:5985
Наличие (почти) дубликата ServicePrincipalNames приведет к сбою WinRM с ошибкой Kerberos в вопросе.
Чтобы обойти эту проблему, вы можете указать Invoke-Command включить порт при поиске ServicePrincipalName, например так:
### Tell WinRM to include the port in the SPN
Invoke-Command -ComputerName myWebServer -ScriptBlock {Get-Process} -SessionOption (New-PSSessionOption -IncludePortInSPN)
2019-07-27 01:19
У меня была проблема с Kerberos. Оказалось, что нарушены доверительные отношения между доменом и сервером. Как только я исправил это с PowerShell, все снова было хорошо.
2017-12-20 12:48
Ошибка предварительной проверки подлинности Kerberos означает, что пользователь не может войти в Windows или любой другой сетевой ресурс. Эта ошибка возникает при возникновении проблемы с процессом предварительной проверки подлинности Kerberos.
Это может произойти, если вы используете неправильное имя пользователя или пароль, если ваш компьютер находится в автономном режиме или не подключен к сети, или если возникает ошибка при подключении к контроллеру домена.
Почему я получаю сообщение об ошибке Event ID 4771?
Эта ошибка означает, что вы пытались подключиться к серверу с использованием предварительной аутентификации Kerberos, но сервер не ответил на ваш запрос. В Windows предварительная аутентификация Kerberos проверяет учетные данные пользователя до того, как KDC аутентифицирует их.
Если предварительная аутентификация не удалась, пользователю будет предложено ввести пароль. Для некоторых пользователей код ошибки появился как Event ID 4771 Предварительная аутентификация Kerberos не удалась 0x18 на их ПК. Для этого кода проблема заключается в неправильном пароле. Однако для события с кодом 4771 это может произойти по нескольким причинам:
- Несоответствие часов сервера. Вероятная причина заключается в том, что часы вашего компьютера не синхронизированы с часами сервера. Это может произойти, если ваш компьютер долгое время находился в автономном режиме, а затем снова подключился к сети, но не смог синхронизировать свои часы.
- Неверный пароль. Большинство пользователей, столкнувшихся с ошибкой Event ID 4771, признались, что недавно изменили свои пароли. Однако для уникальных идентификаторов, таких как идентификатор события 4771 со статусом 0x12, это означает, что учетные данные пользователя были отозваны.
- Кэшированные учетные данные. Кэшированные учетные данные используются для сокращения времени входа в систему и повышения безопасности, поскольку они автоматически получаются с сервера каталогов. Однако когда вы меняете пароли, они могут вызывать конфликты.
- Неверный домен. Убедитесь, что вы входите в учетную запись из того же домена, что и компьютер, с которого вы подключаетесь; в противном случае Active Directory не сможет правильно проверить ваши учетные данные.
Как я могу решить ошибку Event ID 4771?
1. Включите аудит неудачных входов в систему
- Нажмите клавиши Windows + R, чтобы открыть команду «Выполнить».
- Введите secpol.msc в диалоговом окне и нажмите Enter .
- Перейдите в следующее место:
Security settings/Local Policy/Audit Policies/Audit Logon Events
- Дважды щелкните «Аудит событий входа в систему», выберите «Успешно/сбой», затем нажмите «Применить» и «ОК».
Это будет генерировать событие безопасности всякий раз, когда пользователь пытается войти на компьютер, присоединенный к домену, и терпит неудачу. Аудит неудачных входов в систему позволит вам увидеть, когда пользователи пытались войти в сеть безуспешно, и выявить любые дубликаты.
Затем вы можете переименовать учетные записи с повторяющимися именами на одном или нескольких серверах или создать для них новые учетные записи с уникальными именами.
2. Удалить кешированные пароли
- Нажмите Windows клавишу, введите cmd в строке поиска и нажмите «Открыть».
- Введите следующие команды и нажмите Enter после каждой:
psexec -i -s -d cmd.exe
rundll32 keyngr.dll KRShowKeyMgr
- Появится список сохраненных имен пользователей и паролей. Удалите их с вашего сервера и перезагрузите компьютер.
Это происходит потому, что подсистема Kerberos кэширует старый пароль в памяти. Когда вы меняете пароль, он не удаляется из памяти, пока не истечет срок его действия.
Затем клиент Kerberos пытается использовать старый кэшированный пароль, который не работает, поскольку он был изменен на контроллере домена.
3. Включите аудит входа в систему
- Нажмите Windows клавишу, введите Powershell в строке поиска и нажмите «Запуск от имени администратора».
- Введите следующую команду и нажмите Enter:
auditpol /set /subcategory:”logon” /failure:enable
Когда вы включаете аудит входа в систему, это помогает вам определить, пытается ли кто-то получить несанкционированный доступ к вашим системам, угадывая пароли или предпринимая другие попытки грубой силы.
Надеюсь, вы обошли ошибку предварительной аутентификации Kerberos с кодом события 4771 с помощью одного из этих методов.
Сообщите нам, какое решение устранило эту ошибку для вас, в разделе комментариев ниже.