[英]Connect JS secure websocket to C# websocket server (Fleck)
[英]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.