certutil -ping не удается с таймаутом в 30 секунд – что делать?

Вопрос или проблема

Хранилище сертификатов на моем компьютере с 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 мог найти правильный контроллер домена?

Пожалуйста, проверьте следующее:

  1. Можете ли вы выполнить certutil -ping -config "cadnsname\CA логическое имя" с пострадавших хостов?

  2. Кто имеет разрешения на запрос сертификатов в CA (изменил ли кто-то “Authenticated Users” на “Domain Users”)?

  3. Посмотрите на разрешения DCOM, чтобы убедиться, что “Authenticated Users” имеют правильные разрешения на CA. Разрешения DCOM на CA для группы доступа DCOM служб сертификатов:

    Уровень разрешений доступа -> Локальный доступ – Разрешить, Удаленный доступ – Разрешить
    Уровень разрешений запуска и активации -> Удаленный запуск – Разрешить, Удаленная активация – Разрешить

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

http://blogs.technet.com/b/askds/archive/2007/11/06/how-to-troubleshoot-certificate-enrollment-in-the-mmc-certificate-snap-in.aspx

Ответ или решение

С учетом проблемы, которую вы испытываете с командой certutil -ping, причин, по которым ошибка возникает, может быть несколько. При использовании certutil -ping и certutil -pingadmin, вы получаете ошибку 0x80070002, что указывает на то, что система не может найти указанный файл. Это, вероятно, связано с проблемами в конфигурации Active Directory или с неправильными правами доступа к службам CA. Ваша ситуация указывает на то, что функция DsGetDcName, которая должна находить контроллер домена, не может это сделать, что может быть вызвано различными факторами.

Вот несколько шагов, которые могут помочь в решении этой проблемы:

  1. Проверка доступности контроллера домена:
    Убедитесь, что ваш компьютер может достучаться до контроллера домена. Попробуйте выполнить команду ping имя_контроллера_домена или nslookup имя_контроллера_домена и проверьте, есть ли ответ. Возможно, ваш компьютер не сможет найти контроллер домена из-за сетевых проблем.

  2. Убедитесь, что компьютер в домене:
    Убедитесь, что ваш компьютер правильно присоединен к домену. Используйте команду whoami /fqdn для проверки статуса.

  3. Проверка сетевых настроек:
    Проверьте настройки DNS на вашем компьютере. Убедитесь, что DNS-серверы, указанные в свойствах сети, являются правильными и работают. Важно, чтобы они могли разрешать имена контроллеров домена.

  4. Используйте указание CA:
    Попробуйте выполнить команду в следующем формате:

    certutil -ping -config "cadnsname\CA logical name"

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

  5. Проверка разрешений на выпуск сертификатов:
    Убедитесь, что у пользователей, которые запрашивают сертификаты, есть соответствующие разрешения. Проверьте настройки на вашем CA и убедитесь, что группа "Authenticated Users" имеет разрешения для запроса сертификатов.

  6. Настройка прав DCOM:
    Проверьте права DCOM на вашем сервере сертификатов. Убедитесь, что группы пользователей, которые могут запрашивать сертификаты, имеют разрешения на удаленный доступ и активацию. Настройте их следующим образом:

    • Local Access – Разрешить
    • Remote Access – Разрешить
    • Remote Launch – Разрешить
    • Remote Activation – Разрешить
  7. Логи и события:
    Проверьте журналы событий на вашем компьютере и на сервере CA. Обратите внимание на ошибки, связанные с доступом к домену и с требованием сертификатов.

  8. Обновление Windows и компонентов:
    Убедитесь, что ваша операционная система Windows 7 обновлена до последней версии с последними патчами и исправлениями. Иногда проблемы могут быть связаны с устаревшими компонентами.

Если после выполнения всех этих шагов проблема все еще сохраняется, рассмотрите возможность обращения в 지원 сервис или использование инструментов для диагностики сети и домена, таких как dcdiag и nltest.

Для дополнительной информации по этой проблеме вы можете ознакомиться с материалами по устранению неполадок сертификационной службы по следующему адресу: Technet Blog.

Если у вас будут дополнительные вопросы или потребуется дальнейшая помощь, пожалуйста, дайте знать!

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

Капча загружается...