[SR-Users] TLS challenge

Gertjan Wolzak g.wolzak at kazlow.nl
Tue Feb 5 11:31:16 CET 2019


Hello Kamailions,

Ive beent trying to configure a tls connection between kamailio servers, 
but looks like Im missing some knowledge.

The situation:

phone1 <> internet <> kamailio1 <internet> kamailio2<> internet <> phone2

The phones are yealink phones, they are connected using TLS v1.2, phone 
1 registers at kamailio1 and phone2 registers at kamailio2.

Both kamailio servers have an letsencrypt certificate.

When the connection between the two kamailio servers is set as sip, a 
call from a phone1 to phone2 the singnaling is forwarded and rtp flows.

When I set the connection between the two kamailio servers to tls, 
things go wrong.. or better said I go wrong.

The kamailio log on the receiving kamailio(kamailio2) shows that things 
go wrong and where, but I just cant figure out how to solve it.

The log shows that the tls connection will be handled by the TLS Default 
configuration, the CA certificate is missing, well unknown.

15(7209) DEBUG: <core> [core/ip_addr.c:229]: print_ip(): tcpconn_new: 
new tcp connection: 116.203.53.212
15(7209) DEBUG: <core> [core/tcp_main.c:999]: tcpconn_new(): on port 
44153, type 3
15(7209) DEBUG: <core> [core/tcp_main.c:1309]: tcpconn_add(): hashes: 
1805:3331:3809, 3
15(7209) DEBUG: <core> [core/io_wait.h:380]: io_watch_add(): DBG: 
io_watch_add(0xa77de0, 32, 2, 0x7ff9596d4b10), fd_no=23
15(7209) DEBUG: <core> [core/io_wait.h:602]: io_watch_del(): DBG: 
io_watch_del (0xa77de0, 32, -1, 0x0) fd_no=24 called
15(7209) DEBUG: <core> [core/tcp_main.c:4196]: handle_tcpconn_ev(): 
sending to child, events 1
15(7209) DEBUG: <core> [core/tcp_main.c:3878]: send2child(): selected 
tcp worker 1 8(7202) for activity on [tls:kamailio2:5061], 0x7ff9596d4b10
  8(7202) DEBUG: <core> [core/tcp_read.c:1759]: handle_io(): received 
n=8 con=0x7ff9596d4b10, fd=9
  8(7202) DEBUG: tls [tls_server.c:199]: tls_complete_init(): completing 
tls connection initialization
  8(7202) DEBUG: tls [tls_server.c:228]: tls_complete_init(): Using 
initial TLS domain TLSs<default> (dom 0x7ff959498600 ctx 0x7ff9594b6430 
sn [])
  8(7202) DEBUG: tls [tls_domain.c:724]: sr_ssl_ctx_info_callback(): SSL 
handshake started
  8(7202) DEBUG: <core> [core/tcp_main.c:2460]: tcpconn_do_send(): 
sending...
  8(7202) DEBUG: <core> [core/tcp_main.c:2494]: tcpconn_do_send(): after 
real write: c= 0x7ff9596d4b10 n=2637 fd=9
  8(7202) DEBUG: <core> [core/tcp_main.c:2495]: tcpconn_do_send(): buf=

  8(7202) DEBUG: <core> [core/io_wait.h:380]: io_watch_add(): DBG: 
io_watch_add(0xac78a0, 9, 2, 0x7ff9596d4b10), fd_no=1
  8(7202) ERROR: tls [tls_util.h:42]: tls_err_ret(): TLS 
accept:error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
  8(7202) ERROR: <core> [core/tcp_read.c:1505]: tcp_read_req(): ERROR: 
tcp_read_req: error reading - c: 0x7ff9596d4b10 r: 0x7ff9596d4b90 (-1)
  8(7202) DEBUG: <core> [core/io_wait.h:602]: io_watch_del(): DBG: 
io_watch_del (0xac78a0, 9, -1, 0x10) fd_no=2 called
  8(7202) DEBUG: <core> [core/tcp_read.c:1683]: release_tcpconn(): 
releasing con 0x7ff9596d4b10, state -2, fd=9, id=3 (kamailio1]:44153 -> 
[kamailio1]:5061)
  8(7202) DEBUG: <core> [core/tcp_read.c:1684]: release_tcpconn(): 
extra_data 0x7ff9596d2ab0
15(7209) DEBUG: <core> [core/tcp_main.c:3308]: handle_tcp_child(): 
reader response= 7ff9596d4b10, -2 from 1
15(7209) DEBUG: tls [tls_server.c:667]: tls_h_close(): Closing SSL 
connection 0x7ff9596d2ab0

I assume I have configured tls.cfg partially correct, as the phones 
register and can make tls calls.

What I find strange is this line:  8(7202) DEBUG: <core> 
[core/tcp_read.c:1683]: release_tcpconn(): releasing con 0x7ff9596d4b10, 
state -2, fd=9, id=3 (kamailio1]:44153 -> [kamailio1]:5061)

Would the "[kamailio1]:5061" be the client configuration?

So, what do I need to configure within the tls.cfg file so when a tls 
connection is initiated from the other server it will work.

I have tried adding the other server as server within the tls.cfg, which 
does not work as kamailio is not listening on the ip address configured.

When I add the server as a client in the tls.cfg as follows, the 
connection is handled by the default TLS configuration.

[server:default]
method = TLSv1.2
verify_certificate = no
require_certificate = no
private_key = /etc/letsencrypt/live/kamailio.kazlow.nl/privkey.pem
certificate = /etc/letsencrypt/live/kamailio.kazlow.nl/fullchain.pem
#ca_list = /etc/kamailio/tls/cacert.pem
#crl = /etc/kamailio/tls/crl.pem

[client:kamailio1:5061]
method = TLSv1.2
verify_certificate = no
require_certificate = yes
certificate = /etc/kamailio/tls/fullchain.pem
ca_list = /etc/kamailio/tls/cacert.pem


# This is the default client domain, settings
# in this domain will be used for all outgoing
# TLS connections that do not match any other
# client domain in this configuration file.
# We require that servers present valid certificate.
#
[client:default]
method = TLSv1.2
verify_certificate = no
require_certificate = no
ca_list = /etc/kamailio/tls/cacert.pem

I have tried forcing the socket on the sending kamailio, but that does 
not work.

Any feedback on what I am doing wrong or where I can find information to 
extend my knowledge would be appreciated.

Rgds,

Gertjan Wolzak




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20190205/6a5ee8a3/attachment.html>


More information about the sr-users mailing list