2017-08-28 23 views
0

クライアント側で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 canceledKamilioとJS SIP Websocket Secure

しかし、私はws('ws://mydomain.com:8080/')を使用する場合。

誰かがこの問題を解決する方法を知っていますか?

証明書を生成しましたが、問題は解決しません。私はnodeJSをサーバーとして使用しています。

kamailio.cfgファイル:

/*ローカルドメインエイリアスを追加*/

別名= "mydomain.com"

は= UDPを聞く:private_ip:5060 public_ipを宣伝:5060

listen = tcp:private_ip:5060 Advertise public_ip:5060

listen = tcp:private_ip:5061 advert ISEのpublic_ip:8080

は= TLSを聞く:private_ip:4443 public_ipを宣伝:5061

「#WITH_TLS

は= MY_WSS_ADDRがpublic_ip宣伝聞いIFDEF:4443を5061

は= MY_WS_ADDRがpublic_ipを宣伝聞きます

tcp_connection_lifetime = 3604

endifの

「#!

tcp_accept_no_cl = yesの

tcp_rd_buf_size = 16384

/*ポート= 5060

*/

「#ポート(TLSのUDP、TCP、scrtp、または5061のデフォルト5060)に耳を傾けます

[...]

を "#!WITH_NATを定義する""#!WITH_MYSQLを定義します"

"

を "WITH_DEBUGを定義する#!#!WITH_USRLOCDBを定義する "

"#!WITH_TLSを定義する"

"" #!WITH_AUTH

を定義" #!substdef「!MY_IP_ADDR !my_private_ip!グラム "

" #!substdef "!MY_DOMAIN!my_public_ip!グラム"

"#!substdef"!MY_WS_PORT!8080!! "!!!MY_WSS_PORT 4443グラム"!!G "

" #substdef

"!#substdef "MY_WS_ADDR TCP:MY_IP_ADDR:!!!MY_WS_PORTグラム"

" #substdef」MY_WSS_ADDR! TLS:MY_IP_ADDR:!MY_WSS_PORTグラム」

追加情報 event_route [xhttp:要求]が等しいKamailio 5.0のドキュメントです:https://kamailio.org/docs/modules/5.0.x/modules/websocket.html [...]

tls.cfgファイル:

[...]

[サーバー:デフォルト]

方法= TLSv1の

verify_certificate =なし

require_certificate = yesの

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

証明書= /etc/certs/mydomain.com/cert.pem

[...]

[...]

[クライアント:デフォルト]

verify_certificate =はい

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

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 
012に聞きます別名:あなたはより多くの詳細が必要な場合は

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 

、私に尋ねるので、私は私の質問を編集します。

+0

wssで使用される自己署名証明書は、現在ブラウザでは直接使用できません。ブラウザーで 'https://yourdomain.com:4443 /'を直接開くとどうなりますか? –

+0

証明書は問題ありません。私はこのサイトを利用して生成しました:https://certbot.eff.org/#ubuntuxenial-nginx 私はこの問題を解決しました。私が行ったことを投稿します。 ありがとうございます。 –

答えて

0

私は私の問題を解決しました。私はいくつかのモジュールとルータをロードしていませんでした。 https://gist.github.com/jesusprubio/4066845をしかし、すべてのモジュールは、彼らがKamailio 5.0にサポーターれていない「ミ」を始めること を知ることが重要である:

私は例として、このファイルを見ました。 バージョン5.0に関連して、モジュールの交換が必要です。

私は、生成された証明書にこのサイトを使用:certbot.eff.org/#ubuntuxenial-nginx

を、私はそれに役立つ誰かを願っています。