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 »