<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-u">
</head>
<body>
<div style="color: rgb(33, 33, 33); background-color: rgb(255, 255, 255);" dir="auto">
Hello, are u using letsencrypt?</div>
<div style="color: rgb(33, 33, 33); background-color: rgb(255, 255, 255);" dir="auto">
<br>
</div>
<div style="color: rgb(33, 33, 33); background-color: rgb(255, 255, 255);" dir="auto">
U can use a multi domain.</div>
<div style="color: rgb(33, 33, 33); background-color: rgb(255, 255, 255);" dir="auto">
<br>
</div>
<div style="color: rgb(33, 33, 33); background-color: rgb(255, 255, 255);" dir="auto">
Muti domain names in one certificate </div>
<div id="ms-outlook-mobile-signature">
<div><br>
</div>
<a href="https://aka.ms/AAb9ysg">Outlook voor Android</a> downloaden</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> sr-users <sr-users-bounces@lists.kamailio.org> on behalf of Володимир ╤ванець <volodyaivanets@gmail.com><br>
<b>Sent:</b> Thursday, July 29, 2021 4:44:16 PM<br>
<b>To:</b> Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org><br>
<b>Subject:</b> [SR-Users] Integration with multiple MS Teams instances</font>
<div> </div>
</div>
<div>
<div dir="ltr">Hello all!
<div><br>
</div>
<div>I was able to connect Kamailio with MS Teams and now trying to add one more Teams instance. It looks like I have some misconfiguration or there is a bug.</div>
<div><br>
</div>
<div>My test server has 2 domain records pointing at it (<a href="http://kamailio.domain1.com">kamailio.domain1.com</a> and
<a href="http://kamailio.domain2.com">kamailio.domain2.com</a>). My tls.cfg configuration file looks like this. As you can see the Default section is configured with a
<a href="http://kamailio.domain1.com">kamailio.domain1.com</a> sertificate:</div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i>[server:default]</i></div>
<div><i>method = TLSv1.0+</i></div>
<div><i>require_certificate = no</i></div>
<div><i>verify_certificate = no</i></div>
<div><i>private_key = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/server/key.pem">kamailio.domain1.com/server/key.pem</a></i></div>
<div><i>certificate = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/server/cert.pem">kamailio.domain1.com/server/cert.pem</a></i></div>
<div><i>ca_list = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/CA/cert.pem">kamailio.domain1.com/CA/cert.pem</a></i></div>
</blockquote>
<div><i><br>
</i></div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i>[client:default]</i></div>
<div><i>method = TLSv1.0+</i></div>
<div><i>require_certificate = no</i></div>
<div><i>verify_certificate = no</i></div>
<div><i>private_key = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/server/key.pem">kamailio.domain1.com/server/key.pem</a></i></div>
<div><i>certificate = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/server/cert.pem">kamailio.domain1.com/server/cert.pem</a></i></div>
<div><i>ca_list = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/CA/cert.pem">kamailio.domain1.com/CA/cert.pem</a></i></div>
</blockquote>
<div><i><br>
</i></div>
<div><i><br>
</i></div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i>[server:<a href="http://172.16.30.206:5062">172.16.30.206:5062</a>]</i></div>
<div><i>method = TLSv1.0+</i></div>
<div><i>require_certificate = no</i></div>
<div><i>verify_certificate = no</i></div>
<div><i>private_key = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/server/key.pem">kamailio.domain1.com/server/key.pem</a></i></div>
<div><i>certificate = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/server/cert.pem">kamailio.domain1.com/server/cert.pem</a></i></div>
<div><i>ca_list = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/CA/cert.pem">kamailio.domain1.com/CA/cert.pem</a></i></div>
<div><i>server_name = "<a href="http://kamailio.domain1.com">kamailio.domain1.com</a>"</i></div>
<div><i>server_id = "</i><i>"<a href="http://kamailio.domain1.com">kamailio.domain1.com</a>"</i><i><br>
</i></div>
</blockquote>
<div><i><br>
</i></div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i>[client:<a href="http://172.16.30.206:5062">172.16.30.206:5062</a>]</i></div>
<div><i>method = TLSv1.0+</i></div>
<div><i>require_certificate = no</i></div>
<div><i>verify_certificate = no</i></div>
<div><i>private_key = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/server/key.pem">kamailio.domain1.com/server/key.pem</a></i></div>
<div><i>certificate = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/server/cert.pem">kamailio.domain1.com/server/cert.pem</a></i></div>
<div><i>ca_list = /var/kamailio/certificates/<a href="http://kamailio.domain1.com/CA/cert.pem">kamailio.domain1.com/CA/cert.pem</a></i></div>
</blockquote>
<div><i><br>
<br>
</i></div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i>[server:<a href="http://172.16.30.206:5063">172.16.30.206:5063</a>]</i></div>
<div><i>method = TLSv1.0+</i></div>
<div><i>require_certificate = no</i></div>
<div><i>verify_certificate = no</i></div>
<div><i>private_key = /var/kamailio/certificates/<a href="http://kamailio.domain2.com/server/key.pem">kamailio.domain2.com/server/key.pem</a></i></div>
<div><i>certificate = /var/kamailio/certificates/<a href="http://kamailio.domain2.com/server/cert.pem">kamailio.domain2.com/server/cert.pem</a></i></div>
<div><i>ca_list = /var/kamailio/certificates/<a href="http://kamailio.domain2.com/CA/cert.pem">kamailio.domain2.com/CA/cert.pem</a></i></div>
<div><i>server_name = "<a href="http://kamailio.domain2.com">kamailio.domain2.com</a>"</i></div>
</blockquote>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i>server_id = "</i><i>"<a href="http://kamailio.domain2.com">kamailio.domain2.com</a>"</i></div>
</blockquote>
<div><i><br>
</i></div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i>[client:<a href="http://172.16.30.206:5063">172.16.30.206:5063</a>]</i></div>
<div><i>method = TLSv1.0+</i></div>
<div><i>require_certificate = no</i></div>
<div><i>verify_certificate = no</i></div>
<div><i>private_key = /var/kamailio/certificates/<a href="http://kamailio.domain2.com/server/key.pem">kamailio.domain2.com/server/key.pem</a></i></div>
<div><i>certificate = /var/kamailio/certificates/<a href="http://kamailio.domain2.com/server/cert.pem">kamailio.domain2.com/server/cert.pem</a></i></div>
<div><i>ca_list = /var/kamailio/certificates/<a href="http://kamailio.domain2.com/CA/cert.pem">kamailio.domain2.com/CA/cert.pem</a></i></div>
</blockquote>
<div><br>
</div>
<div>The dispatcher configuration table looks like this:</div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><font face="monospace">+----+-------+----------------------------------------------+-------+----------+--------------------------------------------------------------------+-------------+</font></div>
<div><font face="monospace">| id | setid | destination                                  | flags | priority | attrs                                                              | description |</font></div>
<div><font face="monospace">+----+-------+----------------------------------------------+-------+----------+--------------------------------------------------------------------+-------------+</font></div>
<div><font face="monospace">|  1 |     1 | sip:<a href="http://sip.pstnhub.microsoft.com">sip.pstnhub.microsoft.com</a>;transport=tls  |     0 |        3 | socket=tls:172.16.30.206:5062;ping_from=sip:<a href="http://kamailio.domain1.com">kamailio.domain1.com</a>   |
 MS Teams 1  |</font></div>
<div><font face="monospace">|  2 |     2 | sip:<a href="http://sip.pstnhub.microsoft.com">sip.pstnhub.microsoft.com</a>;transport=tls  |     0 |        3 | socket=tls:172.16.30.206:5063;ping_from=sip:<a href="http://kamailio.domain2.com">kamailio.domain2.com</a>   |
 MS Teams 2  |</font></div>
<div><font face="monospace">+----+-------+----------------------------------------------+-------+----------+--------------------------------------------------------------------+-------------+</font></div>
</blockquote>
<div><br>
</div>
<div><br>
</div>
<div>When Kamailio is started only connection with the first trunk is established:</div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i># kamcmd tls.list</i></div>
<div><i>{</i></div>
<div><i>        id: 1</i></div>
<div><i>        timeout: 0</i></div>
<div><i>        src_ip: 52.114.75.24</i></div>
<div><i>        src_port: 5061</i></div>
<div><i>        dst_ip: 172.16.30.206</i></div>
<div><i>        dst_port: 0</i></div>
<div><i>        cipher: ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD</i></div>
<div><i>        ct_wq_size: 0</i></div>
<div><i>        enc_rd_buf: 0</i></div>
<div><i>        flags: 2</i></div>
<div><i>        state: established</i></div>
<div><i>}</i></div>
<div><i>{</i></div>
<div><i>        id: 2</i></div>
<div><i>        timeout: 0</i></div>
<div><i>        src_ip: 52.114.75.24</i></div>
<div><i>        src_port: 7810</i></div>
<div><i>        dst_ip: 172.16.30.206</i></div>
<div><i>        dst_port: 5062</i></div>
<div><i>        cipher: AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD</i></div>
<div><i>        ct_wq_size: 0</i></div>
<div><i>        enc_rd_buf: 0</i></div>
<div><i>        flags: 2</i></div>
<div><i>        state: established</i></div>
<div><i>}</i></div>
<div><i>{</i></div>
<div><i>        id: 3</i></div>
<div><i>        timeout: 596</i></div>
<div><i>        src_ip: 52.114.75.24</i></div>
<div><i>        src_port: 7811</i></div>
<div><i>        dst_ip: 172.16.30.206</i></div>
<div><i>        dst_port: 5062</i></div>
<div><i>        cipher: AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD</i></div>
<div><i>        ct_wq_size: 0</i></div>
<div><i>        enc_rd_buf: 0</i></div>
<div><i>        flags: 2</i></div>
<div><i>        state: established</i></div>
<div><i>}</i></div>
</blockquote>
<div><br>
</div>
<div>Here is what I can see in Kamailio log file when it sends an OPTIONS request to the second trunk. Kamailio uses Default tls configuration and MS Teams don't accept it:</div>
<blockquote style="margin:0 0 0 40px; border:none; padding:0px">
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: ALERT: <script>: == TRACE. tm:local-request. fs is tls:<a href="http://172.16.30.206:5063">172.16.30.206:5063</a></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: tm [uac.c:352]: t_run_local_req(): apply new updates without Via to sip msg</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/msg_translator.c:1796]: check_boundaries(): no multi-part body</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:610]: parse_msg(): SIP Request:</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:612]: parse_msg():  method:  <OPTIONS></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:614]: parse_msg():  uri:     <sip:<a href="http://sip.pstnhub.microsoft.com">sip.pstnhub.microsoft.com</a>;transport=tls></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:616]: parse_msg():  version: <SIP/2.0></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/parse_via.c:1303]: parse_via_param(): Found param type 232, <branch> = <z9hG4bK169b.6411b4c3000000000000000000000000.0>; state=16</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/parse_via.c:2639]: parse_via(): end of header reached, state=5</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:498]: parse_headers(): Via found, flags=2</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:500]: parse_headers(): this is the first via</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/parse_addr_spec.c:864]: parse_addr_spec(): end of header reached, state=10</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:171]: get_hdr_field(): <To> [47]; uri=[sip:<a href="http://sip.pstnhub.microsoft.com">sip.pstnhub.microsoft.com</a>;transport=tls]</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:174]: get_hdr_field(): to body (47)[<sip:<a href="http://sip.pstnhub.microsoft.com">sip.pstnhub.microsoft.com</a>;transport=tls>^M</i></div>
<div><i>], to tag (0)[]</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:152]: get_hdr_field(): cseq <CSeq>: <10> <OPTIONS></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:185]: get_hdr_field(): content_length=0</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:89]: get_hdr_field(): found end of header</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:610]: parse_msg(): SIP Request:</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:612]: parse_msg():  method:  <OPTIONS></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:614]: parse_msg():  uri:     <sip:<a href="http://sip.pstnhub.microsoft.com">sip.pstnhub.microsoft.com</a>;transport=tls></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:616]: parse_msg():  version: <SIP/2.0></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/parse_via.c:1303]: parse_via_param(): Found param type 232, <branch> = <z9hG4bK169b.6411b4c3000000000000000000000000.0>; state=16</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/parse_via.c:2639]: parse_via(): end of header reached, state=5</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:498]: parse_headers(): Via found, flags=2</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:500]: parse_headers(): this is the first via</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/parse_addr_spec.c:864]: parse_addr_spec(): end of header reached, state=10</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:171]: get_hdr_field(): <To> [47]; uri=[sip:<a href="http://sip.pstnhub.microsoft.com">sip.pstnhub.microsoft.com</a>;transport=tls]</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:174]: get_hdr_field(): to body (47)[<sip:<a href="http://sip.pstnhub.microsoft.com">sip.pstnhub.microsoft.com</a>;transport=tls>^M</i></div>
<div><i>], to tag (0)[]</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/parser/msg_parser.c:152]: get_hdr_field(): cseq <CSeq>: <10> <OPTIONS></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: tm [uac.c:189]: uac_refresh_hdr_shortcuts(): cseq: [CSeq: 10]</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/tcp_main.c:1993]: tcp_send(): no open tcp connection found, opening new one</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/ip_addr.c:229]: print_ip(): tcpconn_new: new tcp connection: 52.114.75.24</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/tcp_main.c:1175]: tcpconn_new(): on port 5061, type 3, socket -1</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: <core> [core/tcp_main.c:1498]: tcpconn_add(): hashes: 2831:67:0, 1</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: tls [tls_server.c:199]: tls_complete_init(): completing tls connection initialization</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: tls [tls_server.c:162]: tls_get_connect_server_name():
<b>xavp with outbound server name not found</b></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: tls [tls_server.c:142]: tls_get_connect_server_id():
<b>xavp with outbound server id not found</b></i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: tls [tls_server.c:228]: tls_complete_init():
<b>Using initial TLS domain TLSc<default></b> (dom 0x7f35509da688 ctx 0x7f3550b7a568 sn [])</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: tls [tls_domain.c:1177]: tls_lookup_private_key(): Private key lookup for SSL_CTX-0x7f3550b7a568: (nil)</i></div>
<div><i>Jul 29 16:46:14 kamailio /usr/sbin/kamailio[11809]: DEBUG: tls [tls_domain.c:747]: sr_ssl_ctx_info_callback(): SSL handshake started</i></div>
<div><i>...</i></div>
</blockquote>
<div><br>
</div>
<div>If I change the Default configuration to use <a href="http://kamailio.domain2.com">
kamailio.domain2.com</a> certificate, the second trunk will connect but the first one will fail.</div>
<div>I tried to set "$xavp(tls=>server_name)" and "$xavp(tls[0]=>server_id)" variables to the event_route[tm:local-request] section but log still stated that server Name and ID were not found.</div>
<div><br>
</div>
<div>Can someone please point me in the right direction, how can I make Kamailio use the correct certificates when establishing multiple TLS connections?</div>
<div><br>
</div>
<div>Thanks a lot!</div>
<div><br>
</div>
<div>Regards, Volodymyr Ivanets</div>
</div>
</div>
</body>
</html>