Úvod
Pre úspešné implementovanie zabezpečenia TLS na protokol SIP je nutné aby pri kom-
pilácii bol zahrnutý aj modul res crypto. Práve tento modul nám zabezpečuje kryp-
tografické funkcie a metódy. Nasledovné postupy sú testované na servery asterisk 1.8.0 a
debian-like systémy. Samotné nastavenie pozostáva z 3 častí:
- Vytvorenie certifikátu
- Nastavenie asterisku na TLS
- Nastavenie samotných klientov
Vytvorenie certifikátu
Na vytvorenie certifikátu budeme potrebovať nástroj ”openssl”. Budeme používať tzv.
self-signed certifikát, teda podpíšeme si ho samy.
K vytvoreniu samotného certifikátu budeme potrebovať privátny kľúč pre náš server.
Odporúčam si v zložke /etc/asterisk vytvoriť ďalšiu zložku ”cert”, ktorá bude obsahovať
naše kľúče a samotný certifikát
- cd /etc/asterisk
- mkdir cert1
- cd /etc/asterisk/cert
Na vytvorenie daného kľúča použijeme príkaz:
- openssl genrsa -out key.pem 1024
Na terminály by sa mala objaviť správa typu ”Generating RSA private key, 1024 bit long
modulus”. Overenie, či sa daný kľúč ozaj vytvorený je možné pomocou príkazu ls, kedy
by sme mali dostať výpis podobný nasledovnému:
- -rw-r–r– 1 root root 887 2010-08-30 14:39 key.pem
Tento kľúč key.pem nie je však náš certifikát, ale je to náš serverovský kľúč. Mal by byť
v zálohovaný na CD, alebo USB disku.
Ak máme svoj vlastný kľúč môžme vytvoriť certifikačnú žiadosť príkazom:
- openssl req -new -key key.pem -out request.pem
Pre vytvorenie treba zadať nasledovné údaje:
Country Name – Dva špeciálne znaky pre danú krajinu ( napr. SK )
State or Province Name – Možnosť vložiť provinciu ( môže ostať prázdne)
Locality Name – Mesto ( napr. Zilina)
Organization Name – Meno spoločnosti ( napr. ZU FRI)
Organizational Unit Name – Oddelenie v rámci spoločnosti ( napr. KIS )
Common name – JE NUTNÉ ABY TO BOLO FQDN DANÉHO SERVERA ( asterisk.nieco.sk, IP adresa)
Email Address – e-mail
A challenge password – nie je nutné zadať
An optional company name – nie je nutné zadať
V tejto chvíli by sme mali mať vytvorený kľúč pre server a našu certifikačnú žiadosť. Po
zadaní príkazu ls by sa mali na terminály zobraziť podobné výpisy:
- -rw-r–r– 1 root root 887 2010-08-30 14:39 key.pem
- -rw-r–r– 1 root root 639 2010-08-30 14:49 request.pem
Ak by sme chceli mať náš certifikát podpísaný od skutočnej certifikačnej autority ( ďalej
len CA ), tak práve request.pem by sme poslali danej CA na podpísanie. My však použí-
vame self-signed a preto si ho podpíšeme samy nasledovným príkazom:
- openssl x509 -req -days 3650 -in request.pem -signkey key.pem -out certificate.pem
Práve týmto príkazom sme vytvorili certifikát pre náš server, ktorého platnosť vyprší za
10 rokov.
Nastavenie asterisku na TLS
Ak máme všetky potrebné kľúče ( key.pem a certificate.pem ), môžme pristúpiť ku nas-
taveniu asterisku, aby používal TLS.
Asterisk vyžaduje aby oba tieto súbory bol v jednom súbore. Pre tento účel vytvoríme
ďalší súbor asterisk.pem, ktorý bude obsahovať oba tieto súbory.
- cp certificate.pem asterisk.pem
- cat key.pem >> asterisk.pem
Na strane servera už potom stačí editovať sip.conf, ktorý sa nachádza v zložke /etc/asterisk/.
Do daného konf. súboru do sekcie ”general” stačí pridať nasledovné riadky:
tlsenable=yes ;zapnutie tls
tlsbindaddr=0.0.0.0 ;nacuvanie na all interaface
tlscertfile=/etc/asterisk/cert/asterisk.pem
tlsdontverifyserver=no ;overovanie ak asterisk vystupuje ako klient
tlscipher=DES-CBC3-SHA ;sifrovaci algoritmus
tlsclientmethod=tlsv1 ;verzia TLS/SSL
Do sekcie jednotlivých užívateľov stačí treba pridať:
transport=tls;
K overeniu môže poslúžiť príkaz sip show setting, v konzole asteriska. Avšak príkazom
netstat -ln | grep 5061 zistíme, či nám server načúva na porte 5061, teda či je pripravený
prijať tls spojenie.
Nastavenie samotných klientov
Na strane klientov je nastavenie veľmi jednoduché a grafické. Stačí transport nastaviť na tls.
Testované na klientoch sip-communicator a eyebeam. Pri klientovi eyebeam však treba certifikát
servera nahrať do dôveryhodných certifikátov. Internet explorer – nastavenia – obsah – ssl certifikáty – importovať.
Treba ho pridať ku ''Dôveryhodným koreňovým certifikátom''.
Ukážka TLS komunikácie
Nasledovné obrázky popisujú úspešné registrovanie na server prostredníctvom tls. V daných obrázkoch si môžme všimnúť najmä:
- Klasický TCP handshake pri nadviazaní spojenia
- TLS handhake pri dohadovaní parametrov TLS
- Žiadne SIP správy, sú skryté v tele TLS
ZABEZPEČENIE SIP PROTOKOLU VŠAK NECHRÁNI VOIP DÁTOVÝ TOK!!!