MjSIP/AsteriskNOW 403 запрещено - неверный пароль

Я борюсь с MjSip, и сейчас у меня проблема с регистрацией sip-клиента в sip-регистраторе (AsteriskNOW distro: FreePBX + Asterisk + CentOS).

Для выполнения транзакции REGISTER я использовал класс ExtendedInviteDialog и интерфейс ExtendedInviteDialogListener, отправляю первое сообщение с помощью request() и определяю ответ сервера с помощью onDlgAltResponse() и, наконец, отвечаю обратно с помощью ackWithAnswer(). Вот исходный код onDlgAltResponse(InviteDialog arg0, String arg1, int код, String arg3, String arg4, Сообщение соответственно):

if (code==401){  
  if (resp.hasWwwAuthenticateHeader())
            {        
                nonce = resp.getWwwAuthenticateHeader().getNonceParam();
                realm = resp.getWwwAuthenticateHeader().getRealmParam();
                AuthorizationHeader ah = new AuthorizationHeader("Digest");
                message.setCSeqHeader(message.getCSeqHeader().incSequenceNumber());
                ViaHeader vh=message.getViaHeader();
                String newbranch = SipProvider.pickBranch();
                vh.setBranch(newbranch);
                message.removeViaHeader();
                message.addViaHeader(vh);
                ah.addUsernameParam(username);
                ah.addAlgorithParam("MD5");
                ah.addRealmParam(realm);
                ah.addNonceParam(nonce);
                ah.addUriParam(uri);
               // String qop_options = resp.getWwwAuthenticateHeader().getQopOptionsParam();
               // qop = (qop_options != null) ? "auth" : null;
               // ah.addQopParam(qop);
               DigestAuthentication x=new DigestAuthentication(resp.getTransactionMethod(),
                        ah, null, passwd);

                String response = x.getResponse();

                ah.addResponseParam(response);
                if (x.checkResponse()) Log.d("MYSIP","check");
                message.setAuthorizationHeader(ah);

                arg0.ackWithAnswer(message);                    
          }
      }

И отладочное сообщение:

NOTICE[1595]chan_sip.c27725 handle_request_register : Registration from 'x' failed for 'y' - Wrong password

checkResponse() не возвращает TRUE после генерации ответа с параметром nonce и заданным паролем! Я уверен, что комбинация имени пользователя и секрета является правильной из CLI звездочки. Секрет MD5 не активирован: секрет по-прежнему хранится в виде простого текста в sip.conf. Это проблема с MD5 или с расширением сервера? Должен ли я вручную изменить файл sip.conf? Нужно ли создавать сип ствол?

2 ответа

Надеемся, что это поможет кому-то с Asterisk 403 Forbidden chan_sip.c:27829 ошибочных паролей.

Я установил свой Asterisk 11.4.0 на Linux Mint, используя несколько устаревших шагов с сайта FreePBX. Все прошло хорошо, за исключением того, что я не смог подключить всех своих клиентов, которые работали нормально с версией Raspberry Pi IncrediblePBX. Я продолжал менять все, что мог придумать, используя веб-интерфейс и просматривая ужасные следы SIP.

Наконец я решил проверить на уровне CLI

пользователи SIP-шоу

там ничего не было, нада. Все изменения, которые FreePBX вносил в некоторые фиктивные файлы конфигурации. Я скопировал свои данные Asterisk и сразу начал работать.

Вам нужно правильно установить nat=yes или nat=no в расширении.

Другие вопросы по тегам