Auth SIP manual
How to md5 auth SIP client manually if you have access to DB with passwords:
in short words:
# How to calculate manual response to send into Authorization header
# HA1=MD5(username:realm:password)
# HA2=MD5(method:digestURI)
# response=MD5(HA1:nonce:HA2)
route[auth] {
if (!is_present_hf("Authorization")) return;
# < converts string with ',' to string with ';'
$var(raw_auth) = $hdr(Authorization);
$var(reg_input)=$var(raw_auth);
xlog("$var(reg_input) [$ci]");
$var(reg) = "/,/;/g";
$var(auth) = $(var(reg_input){re.subst,$var(reg)});
$var(reg) = "/Digest //g";
$var(auth) = $(var(auth){re.subst,$var(reg)});
xlog("$var(auth) [$ci]");
# >
$var(cl_user) = $(var(auth){param.value,username});
$var(cl_realm) = $(var(auth){param.value,realm});
$var(cl_uri) = $(var(auth){param.value,uri});
$var(cl_nonce) = $(var(auth){param.value,nonce});
$var(cl_response) = $(var(auth){param.value,response});
#ask asterisk DB for secret
avp_db_query("SELECT secret FROM ars_sip WHERE username='$fU'",
"$avp(secret)",1);
if ($avp(secret) == NULL)
exit;
# xlog("CL_CREDENTIALS: $var(cl_user) , $var(cl_realm) , $avp(secret) [$ci]");
$var(ha1) = $var(cl_user) + ":"+$var(cl_realm)+":" + $avp(secret);
# xlog("CL_CREDENTIALS: REGISTER:$var(cl_uri) [$ci]");
$var(ha2) = "REGISTER:"+ $var(cl_uri) ;
$var(response) = $(var(ha1){s.md5}) + ":" + $var(cl_nonce)+ ":" + $(var(ha2){s.md5});
$var(response_md5) = $(var(response){s.md5});
xlog("my $var(response_md5) client response is $var(cl_response)");
if ($var(response_md5) != $var(cl_response))
exit;
##############
}
15.06.2018 Добавление ssl сертификата к сайту. certbot. lets encrypt.
Добавить на сайт сертификат без лишних эмоций можно так:
Используем сервис let’s encrypt И certbot
Я буду использовать в ручном режиме, потому, что у меня сайты находятся на разных портах, например на 84, вместо 80.
-
1. Создам сертификат для нашего сайта, в чем преимущество let’s encrypt так это в том, что выдаст удостоверенный сертификат. правда бесплатно только на 3 месяца.
-
1.1. установить certbot в систему. проходим по ссылке и выбираем web сервер и OS которая стоит на сервере. там на самом сайте прекрасная, короткая инструкция.
-
2.2 воспользуемся ручным режимом, который спросит у вас имя вашего сайта, попросит внести в DNS TXT запись и выдаст сертификат:
certbot certonly --manual --preferred-challenges dns
примерно так:
—————————————————-
Please deploy a DNS TXT record under the name
_acme-challenge.yourdomain.ru with the following value:
Z9zqdbasdfasdfasdfsad1UabqXXadfasdfqwerE4oc
—————————————————-
Если всё ок, то сертификаты он сохранит в каталог /etc/letsencrypt/live/yourdomain.ru,
а сообщит он об этом примерно так:
—————————————————-
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/yourdomain.ru/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/yourdomain.ru/privkey.pem
—————————————————-
Лично использую dns сервера от yandex – работают абсолютно бесплатно, редактировать одно удовольствие.
2. Таким образом мы быстренько получили сертификаты не трогая никаких конфигураций web-сервера на самом сервере. Теперь остаётся включить ssl в apache и прописать в конфигурацию полученные сертификаты.
Ну и надо добавить обновление сертификатов в crontab чтобы не дергаться каждые три месяца на эту тему.
certbot renew --manual --preferred-challenges dns
| Posted in opensips | No Comments »