0

J'essaye de configurer Kamailio avec WebSocket Secure (wss) en utilisant JSSIP côté client. J'ai fait des réglages sur kamailio.cfg et tls.cfg, en plus des ports autorisés et de la redirection. Sur ma console de navigateur, je vois que: jssip-3.0.13.js:21334 WebSocket connection to 'wss://mydomain.com:4443/' failed: WebSocket opening handshake was canceledKamilio et JS SIP Websocket sécurisé

Mais, si j'utilise ws ('ws://mydomain.com:8080/') cela fonctionne.

Est-ce que quelqu'un sait comment résoudre ce problème?

J'ai généré les certificats, mais le problème persiste. J'utilise nodeJS en tant que serveur.

fichier kamailio.cfg:

/* ajouter des alias de domaine local */

alias = "mydomain.com"

= udp écoutent: private_ip: 5060 Diffusez vos annonces public_ip: 5060

écouter = tcp: private_ip: 5060 publicité public_ip: 5060

écouter = tcp: private_ip: 5061 annonce ise public_ip: 5061

écouter = MY_WS_ADDR annoncez public_ip: 8080

écouter = tls: private_ip: 4443 publicité public_ip: 5061

« #ifdef WITH_TLS

écouter = MY_WSS_ADDR annoncez public_ip: 4443

« #! endif

tcp_connection_lifetime = 3604

tcp_accept_no_cl = yes

tcp_rd_buf_size = 16384

/* port à écouter (par défaut 5060 pour udp, tcp, scrtp ou 5061 pour tls) */

« # port = 5060

[...]

"#! define WITH_NAT"

"#! define WITH_MYSQL"

"#! Define WITH_AUTH

"#! Define WITH_USRLOCDB"

"#! Define WITH_TLS"

"#! Define WITH_DEBUG"

" #! Substdef « ! MY_IP_ADDR ! my_private_ip! g "

" #! substdef "! mon_domaine! my_public_ip! g"

"#! Substdef"! MY_WS_PORT! 8080!! "!! MY_WSS_PORT 4443 g" "! # Substdef "! G "

" # de substdef

MY_WS_ADDR tcp: MY_IP_ADDR: MY_WS_PORT g"

" # substdef « MY_WSS_ADDR!! tls: MY_IP_ADDR: MY_WSS_PORT g »

info supplémentaire Le event_route [de xhttp: demande] est égale Kamailio 5.0 docs: https://kamailio.org/docs/modules/5.0.x/modules/websocket.html [...]

fichier tls.cfg:

[...]

[server: default]

méthode

= TLSv1

verify_certificate = pas

require_certificate = yes

private_key = /etc/certs/mydomain.com/key.pem

certificat = /etc/certs/mydomain.com/cert.pem

[...]

[...]

[client: par défaut]

verify_certificate = yes

require_certificate = yes

[...]

Javascript:

var socket = new JsSIP.WebSocketInterface('wss://mydomain.com:4443'); 
    var configuration = { 
     sockets : [ socket ], 
     uri  : 'sip:[email protected]', 
     password : '******', 
    }; 

NodeJS:


    'use strict'; 

    var os = require('os'); 
    var path = require('path'); 
    const https = require('https'); 
    var url = require('url'); 
    const fs = require('fs'); 

    const options = { 
     key: fs.readFileSync('demoCA/key.pem'), 
     passphrase: '*********', 
     cert: fs.readFileSync('demoCA/cert.pem') 
    }; 

    var app = https.createServer(options, function(req, resp) { 
    var url_parts = url.parse(req.url); 
    var path = url_parts.pathname; 
    console.log(path) 
    fs.readFile(__dirname + path, function(err, data) { 
    if(err) { 
     resp.writeHead(404, {'Content-Type': 'text/html'}); 
     resp.write('Not found'); 
    } else { 
     resp.writeHead(200, {'Content-Type': 'text/html'}); 
     resp.write(data); 
    } 
    resp.end(); 
    }); 
}); 

    app.listen(443); 

AWS

sur écoute

udp: private_ip:5060 advertise public_ip:5060 

tcp: private_ip:5060 advertise public_ip:5060 

tcp: private_ip:5061 advertise public_ip:5061 

tcp: private_ip:8080 advertise public_ip:8080 

tls: private_ip:4443 advertise public_ip:4443 

Alias:

tls: ip-private_ip.us-west-2.compute.internal:4443 

tcp: ip-private_ip.us-west-2.compute.internal:8080 

tcp: ip-private_ip.us-west-2.compute.internal:5061 

tcp: ip-private_ip.us-west-2.compute.internal:5060 

udp: ip-private_ip.us-west-2.compute.internal:5060 

Si vous avez besoin de plus de détails, demandez-moi, je vais modifier ma question.

+0

Les certificats auto-signés utilisés sur wss ne fonctionneront pas directement dans les navigateurs de nos jours. que se passe-t-il lorsque vous ouvrez 'https: //votredomaine.com: 4443 /' directement dans le navigateur? –

+0

Les certificats sont ok, je les ai générés à travers ce site: https://certbot.eff.org/#ubuntuxenial-nginx J'ai résolu le problème. Je posterai ce que j'ai fait. Merci pour votre aide. –

Répondre

0

J'ai résolu mon problème. Il me manquait de charger des modules et des routeurs.

J'ai vu ce fichier comme exemple: https://gist.github.com/jesusprubio/4066845 mais est important de savoir que chaque module de BEGIN « mi » ils ne sont pas supportAchat sur Kamailio 5.0. Vous aurez besoin de remplacer pour le module par rapport à la version 5.0.

J'ai utilisé ce site pour les certificats générés: certbot.eff.org/#ubuntuxenial-nginx

J'espère que quelqu'un utile.