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 в расширении.