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 canceled
Kamilio 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.
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? –
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. –