文档章节

Kurento应用安全

chapin
 chapin
发布于 2017/02/17 14:56
字数 927
阅读 57
收藏 0

从Chrome 47开始,仅允许来自安全源(HTTPS或本地主机)的WebRTC。 查看其发行说明,了解有关此问题的进一步信息。

请记住,通过HTTPS提供应用程序时,如果使用websockets控制应用程序服务器,则强制使用WebSockets Secure(WSS)。

客户端应用安全

Java应用配置HTTPS

  • 应用程序需要一个证书才能启用HTTPS:

    从本地证书颁发机构请求证书。

    创建自签名证书。

    keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
    
  • 在您的应用程序中使用证书:

    在jar文件中包含有效的密钥库:

    文件keystore.jks必须位于项目的根路径中,在src/main/resources/中包含名为application.properties的文件,并包含以下内容:

    server.port: 8443
    server.ssl.key-store: keystore.jks
    server.ssl.key-store-password: yourPassword
    server.ssl.keyStoreType: JKS
    server.ssl.keyAlias: yourKeyAlias
    

    当启动基于Spring-Boot的应用程序的时候,您还可以指定属性文件的位置。

    -Dspring.config.location=<path-to-properties> 
    
  • 开启应用:

mvn compile exec:java -Dkms.url=ws://kms_host:kms_port/kurento

如果你计划使用webserver作为代理,像Nginx或Apache,你需要在注册处理程序时设置AllowedOrigins。 请阅读Spring官方文档条目了解更多信息。

Node 应用配置HTTPS

  • 应用程序需要有效的SSL证书才能启用HTTPS:

    从本地证书颁发机构请求证书。

    创建自己的自签名证书,如下所述。 这将向您展示如何创建所需的文件:server.crt,server.key和server.csr。

将以下更改添加到server.js以启用HTTPS:

...
var express = require('express');
var ws = require('ws');
var fs    = require('fs');
var https = require('https');
...

var options =
{
  key:  fs.readFileSync('key/server.key'),
  cert: fs.readFileSync('keys/server.crt')
};

var app = express();

var server = https.createServer(options, app).listen(port, function() {
...
});
...

var wss = new ws.Server({
 server : server,
 path : '/'
});

wss.on('connection', function(ws) {

....
  • 启动应用
npm start

Javascript 应用配置HTTPS

  • 您需要提供有效的SSL证书才能启用HTTPS:

    从本地证书颁发机构请求证书。

    创建自己的自签名证书,如下所述。 这将向您展示如何创建所需的文件:server.crt,server.key和server.csr。

  • 使用证书启动应用程序:

http-server -p 8443 -S -C keys/server.crt -K keys/server.key

服务端应用安全

** 配置Kurento Media Server使用Secure WebSocket(wss)**

首先,您需要更改Kurento Media Server的配置文件,即/etc/kurento/kurento.conf.json,取消注释以下行:

"secure": {
  "port": 8433,
  "certificate": "defaultCertificate.pem",
  "password": ""
},

如果此PEM证书是签名的证书(由Verisign等证书颁发机构),那么您就完成了。 如果你要使用自签名证书(适合开发),那么还有更多的工作要做。

您可以通过这样做生成自签名证书:

certtool --generate-privkey --outfile defaultCertificate.pem
echo 'organization = your organization name' > certtool.tmpl
certtool --generate-self-signed --load-privkey defaultCertificate.pem \
   --template certtool.tmpl >> defaultCertificate.pem
sudo chown kurento defaultCertificate.pem

由于证书是自签名的,因此应用程序将默认拒绝它。 因此,你需要强迫他们接受它。

  • 浏览器应用程序:在建立安全WebSocket连接之前,您需要手动接受证书作为可信证书。 默认情况下,这可以通过连接到连接到https://localhost:8433/kurento并在浏览器中接受证书来完成。

  • Java应用程序,请按照此链接的说明(从这里获取InstallCert.java)。 您需要指示KurentoClient需要配置为允许使用证书。 为此,我们需要创建我们自己的JsonRpcClient:

SslContextFactory sec = new SslContextFactory(true);
sec.setValidateCerts(false);
JsonRpcClientWebSocket rpcClient = new JsonRpcClientWebSocket(uri, sec);
KurentoClient kuretoClient = KurentoClient.createFromJsonRpcClient(rpcClient);

其次,您必须更改应用程序逻辑中的WebSocket URI。 例如,在教程中的hello-world应用程序中,将执行以下操作:

final static String DEFAULT_KMS_WS_URI = "wss://localhost:8433/kurento";
  • Browser JavaScript: 在index.js文件中修改这行:
const ws_uri = 'wss://' + location.hostname + ':8433/kurento';
  • Node.js: 在server.js文件中修改这行:
const ws_uri = "wss://localhost:8433/kurento";

© 著作权归作者所有

共有 人打赏支持
chapin
粉丝 18
博文 83
码字总数 102961
作品 0
成都
程序员
Kurento应用开发指南(以Kurento 5.0为模板) 目录

Kurento是什么 3 Kurento简介 3 2.1 WebRTC媒体服务器 3 2.2 Kurento 媒体服务器 4 2.3 Kurento API, 客户端和协议 5 2.4 使用Kurento创建应用程序 7 Kurento Media Server的安装与卸载 8 3....

小马_wolf
2016/07/14
427
0
Kurento应用开发指南(以Kurento 5.0为模板) 之三:示例教程 一对多的视频呼叫

5.2 教程3一对多的视频呼叫 这个示例页面应用程序使用WebRTC技术实现了一对多的视频呼叫。换句话说,它是一个基于页面的视频广播应用。 5.2.1 运行示例程序 运行这个DEMO之前,需要先安装 Ku...

小马_wolf
2016/07/14
101
0
Kurento应用开发指南(以Kurento 5.0为模板) 之五:kurento架构

Kurento 架构 和大多数的媒体通信技术一样,Kurento把所有的交互通信系统的关键功能抽象成两层(或平台): ?信令平台 系统中负责通信管理的部分,它的组成模块提供的功能有媒体协商,QoS参数协...

小马_wolf
2016/07/14
187
0
Kurento应用开发指南(以Kurento 5.0为模板) 之一:简介,安装与卸载

Kurento是什么 Kurento是一个WebRTC媒体服务器,并且包含一个客户端API集合, 用以简化WWW和移动平台上的高级视频应用程序的开发。 Kurento的功能包括组通信,转码,记录,混音,广播和routi...

小马_wolf
2016/07/14
296
0
Kurento应用开发指南(以Kurento 5.0为模板) 之二:示例教程helloworld

Kurento教程 这部分包含了如何使用Kurento框架的教程,以创建不同类型WebRTC和多媒体应用。 教程包含下面三个方面: ? Java: These show applications where clients interact with an applic...

小马_wolf
2016/07/14
214
0

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序开发系列六:微信框架API的调用

微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发...

JerryWang_SAP
43分钟前
4
0
5 个用 Python 编写 web 爬虫的方法

大家在读爬虫系列的帖子时常常问我怎样写出不阻塞的爬虫,这很难,但可行。通过实现一些小策略可以让你的网页爬虫活得更久。那么今天我就将和大家讨论这方面的话题。 我刚整理了一套2018最新...

糖宝lsh
44分钟前
6
0
docker安装redis、mongodb、mysql等

一、启动docker服务,设置镜像: systemctl start dockervi /etc/docker/daemon.json{ "registry-mirrors": ["https://registry.docker-cn.com"]} 二、下拉镜像: 在镜像中心h...

狼王黄师傅
今天
5
0
deepin系统使用deepin-wine安装exe程序

deepin自带原生deepin-wine使用命令如下: deepin-wine QQBrowser.exedeepin-wine QQMusicSetup.exe 默认安装的快捷方式位置: /root/.wine/drive_c/'Program Files'/Tencent/QQBrowser/......

临江仙卜算子
今天
4
0
快速get到学习Linux操作系统的点

快速get到学习Linux操作系统的点 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能够运行主要的UNIX工具软件...

linuxCool
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部