WebRTC over HTTPs问题

时间:2017-05-10 19:55:03

标签: node.js webrtc

我创建了一个简单的WebRTC应用程序,可以很好地测试本地主机;但是,除非你有安全的连接,否则WEBRTC没有多大用处,因为除非你有HTTP,否则浏览器现在不会运行GetUserMedia,因此我“尝试”将其升级为SSL-TLS。下面是我的两个应用程序并排的屏幕截图,一个是安全的(不工作),另一个是非安全的(工作

enter image description here

如上所示,localhost'connect'而HTTPs'无法建立连接'。我是SSL新手,所以这可能很简单。只是希望更多的关注这一点。

我知道我的HTTPS服务器安全地连接了Javascript,请参阅下面的图片enter image description here

以下是我的代码段。任何帮助将不胜感激:

SSL客户端 - Client.JS

var connection = new WebSocket('wss://localhost:8443'),

name = "";

非安全客户端 - Client.JS

var connection = new WebSocket('ws://localhost:8888'),

    name = "";

非安全JS服务器 - index.JS

var WebSocketServer = require('ws').Server,

wss = new WebSocketServer({ port: 8888 }),

users = {};
wss.on('connection', function (connection) {
connection.on('message', function (message) .....

安全JS服务器 - SSLindex.JS

 Var https = require('https'),

fs = require('fs'),

 express = require('express'),

  app = express();


var wss = https.createServer({
key: fs.readFileSync('server.key'),

cert: fs.readFileSync('server.crt'),

ca: fs.readFileSync('ca.crt'),

requestCert: true,

rejectUnauthorized: false
 }, app).listen('8443', function() {
console.log("Secure Express server listening on port 8443");
});

 app.use("/", function(req, res, next) 
{
 res.send("index.js is working!");

  });

2 个答案:

答案 0 :(得分:4)

对于开发人员而言,chrome会将localhost视为安全起源 如果您使用的是http://localhost或ws:// localhost,则不会涉及SSL,因此它在右侧屏幕截图中工作得很好。
但对于httpswss,浏览器将验证SSL证书颁发机构。

  

使用wss:// localhost:8443 /

解决websocket连接问题

临时解决方法:打开https://localhost:8443/网址,点击Adavced =>允许浏览器例外。继续
实际解决方案:为节点服务器(node.kali2016.com)分配域名,并使用授权SSL证书配置节点。然后更换
var connection = new WebSocket('wss://localhost:8443')

var connection = new WebSocket('wss://yourdomainname:8443')

答案 1 :(得分:1)

我能够通过使用服务器的IP地址而不是localhost来使我的EasyRTC页面通过HTTPS工作。
所以:
https://localhost:8443/没有用。返回连接已关闭错误。
https://192.168.0.113:8443/工作正常并按原样显示网页。

这也可能适用于其他人。