راه اندازی ترانک SRTP و TLS بین سیموتل و استریسک در سه بخش موارد لازم را شرح خواهیم داد.
۱− نصب libsrtp :
در هر دو سرور استریسک و سیموتل کتابخانه libSRTP با استفاده از دستورالعمل های زیر در مسیر usr/src نصب می کنیم.
cd /usr/src/
اول این کتابخانه دانلود می کنیم.
wget https://github.com/cisco/libsrtp/archive/refs/tags/v2.5.0.tar.gz
سپس آنرا استخراج می کنیم.
tar zxvf v2.5.0.tar.gz
سپس دستور های زیر را به ترتیب برای نصب وارد می کنیم.
cd libsrtp-2.5.0/
./configure
make
make runtest
make install
cd /usr/src/asterisk-18.14.0.s.2/
./configure --with-crypto --with-ssl --with-srtp=/usr/local/lib
make
make install
سپس خط زیر را در فایل modules.conf در مسیر etc/asterisk/modules.conf اضافه می کنیم.
load => res_crypto.so
2− ایجاد سرتیفیکیت:
در سیموتل:
در مسیر etc/simotel/ یک فولدر با نام keys می سازیم.
mkdir /etc/simotel/keys
سپس اسکریپت simo_tls_cert در مسیر /usr/src/ قرار دهید.
جهت ایجاد دسترسی لازم از دستور زیر استفاده کنید.
chmod 755 simo_tls_cert
و یک مجوز certificate self-signed و همچنین یک simotel certificate ایجاد کنید.
استفاده از گواهینامه ها یا Certificate ها یکی از راه های تامین امنیت و رمزنگاری ارتباطات است. گواهی self-signed یک گواهی TLS/SSL است که توسط شخصی که آن را ایجاد کرده است بهجای یک CA قابلاعتماد امضاشده است.
گواهیهای خود-امضا، ارتباط بین سرور و کلاینتها را رمزنگاری میکنند. با این حال از آنجا که این ارتباط از سوی هیچ مرجع تأیید مورد اعتماد از سوی مرورگرهای وب تأیید نشده است، کاربران نمیتوانند از این گواهی برای اعتبارسنجی خودکار سرور شما استفاده کنند.
./simo_tls_cert -O “simotel” -d /etc/simotel/keys -b 2048
آپشن های دستور بالا :
آپشن O- : نام سازمانی مان را مشخص میکند.
آپشن d- : برای مشخص کردن مسیر قرار گرفتن key ها مورد استفاده قرار میگیرد.
آپشن b- : اندازه فایل کلید خصوصی را مشخص می کند
فایل پیکربندی etc/simotel/keys/tmp.cfg را ایجاد می کند.
میتوانید از این فایل پیکربندی برای ایجاد گواهیهای اضافی بدون وارد کردن مجدد اطلاعات فیلدهای گواهی استفاده کنید.
از شما خواسته میشود تا برای/etc/simotel/keys/ca.key یک پسورد وارد کنید که باید پسوردی انتخاب کنید که بعدا آن را به خاطر بیاورید.
فایل/etc/simotel/keys/ca.crt ایجاد خواهد شد.
مجددا از شما خواسته میشود که پسورد وارد کنید و سپس فایل /etc/simotel/keys/simotel.key ایجاد خواهد شد.
فایل /etc/simotel/keys/simotel.crt به صورت اتوماتیک ایجاد میشود.
برای بار سوم از شما خواسته میشود تا پسورد را وارد کنید و فایل /etc/simotel/keys/simotel.pem ایجاد خواهد شد که ترکیبی از فایل های simotel.key و simotel.crt می باشد.
اگر محتویات پوشه را با دستور زیر بررسی کنیم :
/ls /etc/simotel/keys
فایل های زیر موجود است.
ca.cfg ca.crt ca.key simotel.crt simotel.csr simotel.key simotel.pem tmp.cfg
در استریسک :
اگر در مسیر etc/asterisk/ فولدری با نام keys وجود نداشت آن را به شکل زیر می سازیم.
mkdir /etc/asterisk/keys
سپس اسکریپت ast_tls_cert در مسیر /usr/src/ قرار دهید.
جهت ایجاد دسترسی لازم از دستور زیر استفاده کنید.
chmod 755 ast_tls_cert
همانند قسمت سیموتل یک مجوز certificate self-signed و همچنین یک asterisk certificate ایجاد کنید.
./ast_tls_cert -O “asterisk” -d /etc/asterisk/keys -b 2048
فایل پیکربندی etc/asterisk/keys/tmp.cfg/ را ایجاد می کند.
میتوانید از این فایل پیکربندی برای ایجاد گواهیهای اضافی بدون وارد کردن مجدد اطلاعات فیلدهای گواهی استفاده کنید.
از شما خواسته میشود تا برای etc/asterisk/keys/ca.key/ یک پسورد وارد کنید که باید پسوردی انتخاب کنید که بعدا آن را به خاطر بیاورید.
فایل etc/asterisk/keys/ca.crt/ ایجاد خواهد شد.
مجددا از شما خواسته میشود که پسورد وارد کنید و سپس فایل etc/asterisk/keys/asterisk.key/ ایجاد خواهد شد.
فایل etc/simotel/keys/asterisk.crt/ به صورت اتوماتیک ایجاد میشود.
برای بار سوم از شما خواسته میشود تا پسورد را وارد کنید و فایل etc/asterisk/keys/asterisk.pem/ ایجاد خواهد شد که ترکیبی از فایل های asterisk.key و asterisk.crt میباشد.
اگر محتویات پوشه را با دستور زیر بررسی کنیم.
/ls /etc/asterisk/keys
فایل های زیر موجود است.
asterisk.crt asterisk.key asterisk.csr asterisk.pem ca.cfg ca.key ca.crt tmp.cfg
سپس در هر یک از سرور ها به صورت زیر عمل می کنیم.
در سیموتل
scp /etc/simotel/keys/ca.crt devel@192.168.35.61:/home/devel/ca-simotel.crt
در استریسک
scp /etc/asterisk/keys/ca.crt devel@192.168.35.138:/home/devel/ca-asterisk.crt
سپس
در سیموتل
/cp /home/devel/ca-asterisk.crt /etc/simotel/keys
در استریسک
/cp /home/devel/ca-simotel.crt /etc/asterisk/keys
حال باید در فایل های keys در هر سرور CA سرور مقابل با پسوند نام آن سرور موجود باشد.
در سیموتل
/ls /etc/asterisk/keys
ca.cfg ca.crt ca.key simotel.crt simotel.csr simotel.key simotel.pem tmp.cfg ca-asterisk.crt
در استریسک
/ls /etc/asterisk/keys
asterisk.crt asterisk.key asterisk.csr asterisk.pem ca.crt ca.cfg ca.key tmp.cfg ca-simotel.crt
۳− کانفیگ sip.conf و ترانک ها:
در سیموتل:
فایل etc/asterisk/sip.conf/ را به شکل زیر ویرایش می کنیم
[general]
tlsenable=yes
tlsbindaddr=0.0.0.0:5061
tlscertfile=/etc/simotel/keys/simotel.crt
tlsprivatekey=/etc/simotel/keys/simotel.key
tlsclientmethod=tlsv1_2
در پنل وب سیموتل از بخش PBX => trunk ترانک مدنظر را ویرایش کرده و در بخش More Options مقادیر زیر را اضافه می کنیم.
transport=tls
encryption=yes
tlscafile=/etc/simotel/keys/ca-asterisk.crt
سپس با دستور زیر سرویس استریسک ری استارت می کنیم.
service asterisk restart
در نهایت آرایش تماس را در قسمت دایل پلن وب سیموتل به نحو دلخواه به سمت ترانک استریسک ایجاد می کنیم.
در استریسک
فایل etc/asterisk/sip.conf/ را به شکل زیر ویرایش می کنیم.
[general]
tlsenable=yes
tlsbindaddr=0.0.0.0:5061
tlscertfile=/etc/asterisk/keys/asterisk.crt
tlsprivatekey=/etc/asterisk/keys/asterisk.key
tlsclientmethod=tlsv1_2
سپس یک ترانک برای ارتباط با سیموتل ایجاد می کنیم.
[simotel]
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
dtmfmode=rfc2833
canreinvite=no
directmedia=no
context=from-pstn
host=192.168.35.138
type=friend
nat=force_rport,comedia
qualify=yes
insecure=port,invite
disallow=all
allow=ulaw,alaw
transport=tls
tlscafile=/etc/asterisk/keys/ca-simotel.crt
encryption=yes
و برای نمونه میتوان دایل پلن زیر را برای ایجاد ارتباط بین سیموتل و استریسک در مسیرزیر ایجاد کرد.
etc/asterisk/extensions.conf/
برای تماس ورودی از ترانک
[from-pstn]
()exten => _X.,1,NoOp
()exten => 300,1,NoOp
(exten => 300,2,Dial(SIP/${EXTEN},60,rTtKk
()same => n(hangup),Hangup
برای تماس خروجی از داخلی به سمت ترانک
[main_routing]
({exten => _X.,1,Dial(sip/simotel/${EXTEN
()same => n(hangup),Hangup
نمونه کانفیگ یک داخلی در استریسک که میتوان در فایل sip.conf آن را قرار داد.
[300]
secret=Aa@300
context=main_routing
deny=0.0.0.0/0.0.0.0
dtmfmode=rfc2833
canreinvite=no
directmedia=no
host=dynamic
type=friend
nat=force_rport,comedia
port=5060
qualify=yes
callgroup=1
pickupgroup=1
permit=0.0.0.0/0.0.0.0
callcounter=yes
faxdetect=no