簡體   English   中英

Kamilio和JS SIP Websocket Secure

[英]Kamilio and JS SIP Websocket Secure

我正在嘗試在客戶端使用JSSIP使用WebSocket Secure(wss)配置Kamailio。 除了允許的端口和重定向之外,我還在kamailio.cfg和tls.cfg上進行了設置。 在我的瀏覽器控制台上,我看到: jssip-3.0.13.js:21334 WebSocket connection to 'wss://mydomain.com:4443/' failed: WebSocket opening handshake was canceled

但是,如果我使用ws( 'ws://mydomain.com:8080/' ),它就可以工作。

有人知道如何解決該問題嗎?

我生成了證書,但是問題仍然存在。 我正在使用nodeJS作為服務器。

kamailio.cfg文件:

/ *添加本地域別名* /

alias =“ mydomain.com”

listen = udp:private_ip:5060做廣告public_ip:5060

listen = tcp:private_ip:5060做廣告public_ip:5060

listen = tcp:private_ip:5061廣告public_ip:5061

聽= MY_WS_ADDR廣告public_ip:8080

listen = tls:private_ip:4443廣告public_ip:5061

“#!ifdef WITH_TLS

聽= MY_WSS_ADDR廣告public_ip:4443

“#!萬一

tcp_connection_lifetime = 3604

tcp_accept_no_cl =是

tcp_rd_buf_size = 16384

/ *偵聽的端口(udp,tcp,scrtp或tls的默認值為5060)* /

“#端口= 5060

[...]

“#!定義WITH_NAT”

“#!定義WITH_MYSQL”

“#!定義WITH_AUTH

“#!定義WITH_USRLOCDB”

“#!定義WITH_TLS”

“#!定義WITH_DEBUG”

“#!substdef”!MY_IP_ADDR!my_private_ip!g“

“#!substdef”!MY_DOMAIN!my_public_ip!g“

“#!substdef”!MY_WS_PORT!8080!g“

“#!substdef”!MY_WSS_PORT!4443!g“

“#!substdef”!MY_WS_ADDR!tcp:MY_IP_ADDR:MY_WS_PORT!g“

“#!substdef”!MY_WSS_ADDR!tls:MY_IP_ADDR:MY_WSS_PORT!g“

額外信息 event_route [xhttp:request]等於Kamailio 5.0文檔: https ://kamailio.org/docs/modules/5.0.x/modules/websocket.html [...]

tls.cfg文件:

[...]

[服務器:默認]

方法= TLSv1

verify_certificate =否

require_certificate =是

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

證書= /etc/certs/mydomain.com/cert.pem

[...]

[...]

[客戶:默認]

verify_certificate =是

require_certificate =是

[...]

Javascript:

var socket = new JsSIP.WebSocketInterface('wss://mydomain.com:4443');
    var configuration = {
      sockets  : [ socket ],
      uri      : 'sip:client@mydomain.com',
      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

聆聽

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

別名:

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

如果您需要更多詳細信息,請問我,所以我將編輯我的問題。

我解決了我的問題。 我沒有加載某些模塊和路由器。

我以該文件為例: https ://gist.github.com/jesusprubio/4066845,但重要的是要知道每個模塊都不是Kamailio 5.0上支持的開始“ mi”。 您將需要替換相對於版本5.0的模塊。

我使用此網站生成了證書:certbot.eff.org/#ubuntuxenial-nginx

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM