Вопрос или проблема
Хранилище сертификатов на моем компьютере с Win7 постоянно зависает. Наблюдайте:
C:\>1.cmd C:\>certutil -? | findstr /i ping -ping -- Пинг интерфейса запросов служб сертификатов Active Directory -pingadmin -- Пинг интерфейса администрирования служб сертификатов Active Directory C:\>set PROMPT=$P($t)$G C:\(13:04:28.57)>certutil -ping CertUtil: команда -ping завершилась неудачно: 0x80070002 (WIN32: 2) CertUtil: Указанный файл не найден. C:\(13:04:58.68)>certutil -pingadmin CertUtil: команда -pingadmin завершилась неудачно: 0x80070002 (WIN32: 2) CertUtil: Указанный файл не найден. C:\(13:05:28.79)>set PROMPT=$P$G C:\>
Пояснения:
- Первая команда показывает, что у certutil есть параметры
–ping
и–pingadmin
- Попытка использования любого параметра ping завершается с таймаутом в 30 секунд (текущее время видно в приглашении)
Это серьезная проблема. Она мешает всей защищенной связи в моем приложении. Если кто-то знает, как это можно исправить – пожалуйста, поделитесь.
Спасибо.
П.С.
1.cmd – это просто пакет этих команд:
certutil -? | findstr /i ping
set PROMPT=$P($t)$G
certutil -ping
certutil -pingadmin
set PROMPT=$P$G
EDIT1
Мне удалось установить единственный API Windows, который вызывает проблему – DsGetDcName
Согласно windbg, команда certutil -ping вызывает ее так:
PDOMAIN_CONTROLLER_INFO pdci;
DWORD ret = ::DsGetDcName(NULL, NULL, NULL, NULL, DS_DIRECTORY_SERVICE_PREFERRED, &pdci);
На моей рабочей станции это приводит к таймауту в 30 секунд, после чего возвращается код ошибки 1355, который является ERROR_NO_SUCH_DOMAIN
Нет доступного контроллера домена для указанного домена или домен не существует.
На другом компьютере, который случайно является Windows Server 2003, он возвращает почти мгновенно с правильным именем контроллера домена внутри возвращенной структуры DOMAIN_CONTROLLER_INFO
.
Теперь вопрос: что не хватает на моей рабочей станции, чтобы этот API мог найти правильный контроллер домена?
Пожалуйста, проверьте следующее:
-
Можете ли вы выполнить
certutil -ping -config "cadnsname\CA логическое имя"
с пострадавших хостов? -
Кто имеет разрешения на запрос сертификатов в CA (изменил ли кто-то “Authenticated Users” на “Domain Users”)?
-
Посмотрите на разрешения DCOM, чтобы убедиться, что “Authenticated Users” имеют правильные разрешения на CA. Разрешения DCOM на CA для группы доступа DCOM служб сертификатов:
Уровень разрешений доступа -> Локальный доступ – Разрешить, Удаленный доступ – Разрешить
Уровень разрешений запуска и активации -> Удаленный запуск – Разрешить, Удаленная активация – Разрешить
Для получения дополнительных сведений вы можете обратиться к указанному ниже URL для устранения неполадок.
Ответ или решение
С учетом проблемы, которую вы испытываете с командой certutil -ping
, причин, по которым ошибка возникает, может быть несколько. При использовании certutil -ping
и certutil -pingadmin
, вы получаете ошибку 0x80070002
, что указывает на то, что система не может найти указанный файл. Это, вероятно, связано с проблемами в конфигурации Active Directory или с неправильными правами доступа к службам CA. Ваша ситуация указывает на то, что функция DsGetDcName
, которая должна находить контроллер домена, не может это сделать, что может быть вызвано различными факторами.
Вот несколько шагов, которые могут помочь в решении этой проблемы:
-
Проверка доступности контроллера домена:
Убедитесь, что ваш компьютер может достучаться до контроллера домена. Попробуйте выполнить командуping имя_контроллера_домена
илиnslookup имя_контроллера_домена
и проверьте, есть ли ответ. Возможно, ваш компьютер не сможет найти контроллер домена из-за сетевых проблем. -
Убедитесь, что компьютер в домене:
Убедитесь, что ваш компьютер правильно присоединен к домену. Используйте командуwhoami /fqdn
для проверки статуса. -
Проверка сетевых настроек:
Проверьте настройки DNS на вашем компьютере. Убедитесь, что DNS-серверы, указанные в свойствах сети, являются правильными и работают. Важно, чтобы они могли разрешать имена контроллеров домена. -
Используйте указание CA:
Попробуйте выполнить команду в следующем формате:certutil -ping -config "cadnsname\CA logical name"
Это укажет командной утилите конкретный CA, к которому она должна обращаться, а не полагаться на автоматическое обнаружение.
-
Проверка разрешений на выпуск сертификатов:
Убедитесь, что у пользователей, которые запрашивают сертификаты, есть соответствующие разрешения. Проверьте настройки на вашем CA и убедитесь, что группа "Authenticated Users" имеет разрешения для запроса сертификатов. -
Настройка прав DCOM:
Проверьте права DCOM на вашем сервере сертификатов. Убедитесь, что группы пользователей, которые могут запрашивать сертификаты, имеют разрешения на удаленный доступ и активацию. Настройте их следующим образом:- Local Access – Разрешить
- Remote Access – Разрешить
- Remote Launch – Разрешить
- Remote Activation – Разрешить
-
Логи и события:
Проверьте журналы событий на вашем компьютере и на сервере CA. Обратите внимание на ошибки, связанные с доступом к домену и с требованием сертификатов. -
Обновление Windows и компонентов:
Убедитесь, что ваша операционная система Windows 7 обновлена до последней версии с последними патчами и исправлениями. Иногда проблемы могут быть связаны с устаревшими компонентами.
Если после выполнения всех этих шагов проблема все еще сохраняется, рассмотрите возможность обращения в 지원 сервис или использование инструментов для диагностики сети и домена, таких как dcdiag
и nltest
.
Для дополнительной информации по этой проблеме вы можете ознакомиться с материалами по устранению неполадок сертификационной службы по следующему адресу: Technet Blog.
Если у вас будут дополнительные вопросы или потребуется дальнейшая помощь, пожалуйста, дайте знать!