Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

SIP_AUTH_401_407_FAIL IP-Телефония и СКУД

Траблшутинг SIP Digest-аутентификации: расчет хэша Response (MD5, Nonce)

Обновлено: 24.08.2026 · Официальная документация ↗
  • Циклические ошибки 401 Unauthorized или 407 Proxy Authentication Required при правильном пароле.
  • IP-телефон отправляет повторный REGISTER, но сервер сбрасывает сессию по тайм-ауту.
  • В логах сервера фиксируется ошибка Authentication failed: wrong response / invalid realm.
  • Ошибки Stale Nonce при высокой задержке между сервером и клиентом.

1. Анализ процесса 3-Way SIP Handshake

  1. Клиент шлет REGISTER без авторизации.
  2. Сервер отвечает 401 Unauthorized (или 407) с заголовком WWW-Authenticate, содержащим realm, nonce и алгоритм.
  3. Клиент формирует заголовок Authorization с вычисленным полем response.

2. Алгоритм ручного расчета Response (MD5)

Формула согласно RFC 2617:

HA1 = MD5(username:realm:password)
HA2 = MD5(method:digestURI)
Response = MD5(HA1:nonce:HA2)

Если используется параметр qop=auth:

HA2 = MD5(method:digestURI)
Response = MD5(HA1:nonce:nc:cnonce:qop:HA2)

3. Проверка параметров в дампе Wireshark

  • username — должен точно соответствовать Auth User (логину авторизации), а не внутреннему extension.
  • realm — имя домена/IP сервера. Несоответствие realm приводит к неверному HA1.
  • nonce — уникальная строка сервера. Если пришел флаг stale=true, клиент обязан пересчитать хэш с новым nonce.

4. Диагностика в консоли Asterisk / FreeSWITCH

Включите расширенную трассировку SIP:

# Asterisk CLI
pjsip set logger on

# FreeSWITCH CLI
sofia profile internal siptrace on
💡 Практика специалистов: Если клиент находится за балансировщиком нагрузки с несколькими серверами регистрации, настройте общий кластерный Nonce (Shared Nonce Cache через Redis), иначе смена ноды вызовет циклическую ошибку 401 Stale Nonce.

Частые вопросы (FAQ)

В чем разница между ответами 401 Unauthorized и 407 Proxy Authentication Required?

Код 401 выдается оконечным сервером/регистратором (UAS) через заголовок WWW-Authenticate, а 407 — промежуточным прокси-сервером или SBC через заголовок Proxy-Authenticate.

Почему при правильном пароле аутентификация завершается ошибкой?

Частые причины: несовпадение Realm (клиент считает realm 'asterisk', а сервер ждет IP-адрес), спецсимволы в пароле, некорректно экранированные клиентом, или рассинхронизация Auth Username и SIP Extension.

Что означает параметр 'nc' (Nonce Count)?

Это 8-значный шестнадцатеричный счетчик (например, 00000001), который увеличивается клиентом при каждом последующем запросе с тем же nonce для защиты от атак повторного воспроизведения (Replay Attack).

Передается ли пароль в открытом виде при Digest-аутентификации?

Нет. Передается только односторонний MD5/SHA-256 хэш, рассчитанный с добавлением одноразовой случайной последовательности (nonce).

Полезные материалы
Рекомендуем