文档章节

Kurento应用安全

chapin
 chapin
发布于 2017/02/17 14:56
字数 927
阅读 41
收藏 0
点赞 1
评论 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 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之五:kurento架构

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

小马_wolf ⋅ 2016/07/14 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之三:示例教程 一对多的视频呼叫

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

小马_wolf ⋅ 2016/07/14 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之一:简介,安装与卸载

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

小马_wolf ⋅ 2016/07/14 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之二:示例教程helloworld

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

小马_wolf ⋅ 2016/07/14 ⋅ 0

Kurento应用开发指南(以Kurento 5.0为模板) 之四:示例教程 一对一视频呼叫

5.3 教程四-一对一的视频呼叫 这个页面应用程序使用WebRTC技术实现了一个一对一的呼叫,换言话说,这个应用提供了一个简单的视频电话 5.3.1 运行示例程序 运行这个DEMO之前,你需要先安装Kur...

小马_wolf ⋅ 2016/07/14 ⋅ 0

我所了解的webRTC是怎样的一种技术

通过浏览器对视频进行快速、安全的传输不用借助任何第三方平台应用可以实现吗 根据你的需求,不止一种方式可以在你的网站里添加WebRTC WebRTC(Web Real-Time Communication)是一项开源技术...

丁永 ⋅ 2016/01/18 ⋅ 2

WebRTC流媒体服务器--Kurento

Kurento 是一个 WebRTC 流媒体服务器以及一些客户端API,有了它,开发WWW及智能手机平台的高级视频应用就变得更加容易。可以利用Kurento开发的应用类型包括,视频会议,音视频广播,音视频录...

dqzhangp ⋅ 2014/11/14 ⋅ 0

kurento学习进阶一(源码库依赖关系)

Developer Guide¶ This section is a comprehensive guide for development of Kurento itself. The intended reader of this text is any person who wants to get involved in writing c......

liuweihui521 ⋅ 04/13 ⋅ 0

WebRTC入门学习之初识WebRTC

引言: 先声明本人只是小小实习生一枚,若有不正确的,希望大家帮忙指正。 一、WebRTC基本架构 图一 WebRTC总体架构,摘自百度百科 先说说WebRTC大致的实现思路:我们创建的web app,然后在a...

小小实习生 ⋅ 2015/08/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 27分钟前 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 43分钟前 ⋅ 0

如何利用Spring Cloud构建起自我修复型分布式系统

利用Netflix所打造的组件及各类大家熟知的工具,我们完全可以顺利应对由微服务以及分布式计算所带来的技术挑战。 在过去一年当中,微服务已经成为软件架构领域一个炙手可热的新名词,而且我们...

harries ⋅ 今天 ⋅ 0

临近实习前的感想

再过两星期就要开始新的一段实习了,想想去年的这个时候也在实习,心中不免思绪万千,也一直想写对2017做个总结,但一直迟迟没有下笔。 2017年的春节,我就开始准备开学后找份实习。那时候就...

无精疯 ⋅ 今天 ⋅ 0

Spring AOP(面向切面编程)

Spring AOP概念: Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。通常情况下,AOP把项目中需要在多处用到的功能,比如日志、安全和事物等集中到一个类中处理,而...

霍淇滨 ⋅ 今天 ⋅ 0

人工智能、机器学习、数据挖掘以及数据分析有什么联系?

人工智能是目前炙手可热的一个领域,所有的互联网公司以及各路大迦们纷纷表态人工智能将是下一个时代的革命性技术,可与互联网、移动互联网时代的变更相媲美;AlphaGo在围棋领域战胜人类最顶...

董黎明 ⋅ 今天 ⋅ 0

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 今天 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 今天 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部