文档章节

Kurento应用安全

chapin
 chapin
发布于 2017/02/17 14:56
字数 927
阅读 46
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高三暑假我是怎么想开去学linux系统的

高三的时候,我有一句口头禅:“老了老了,现在做题越来越迟钝了”。当时整天日夜苦读,体重日益增加,脸色越来越黯淡,我在终于熬过了高考的时候,简直心里面乐得开了花。我终于可以去做自己...

linuxprobe16
9分钟前
0
0
Python 获得命令行参数的方法

需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2]

编程老陆
15分钟前
0
0
链队

队列用链表来表示时,需要用两个变量来记录队列两端的变化:theFront,theBack. 根据链接方向的不同,链队有两种链接方式(其实就是链表的头插入节点和尾插入节点,头删除节点和尾删除节点)。...

Frost729
19分钟前
0
0
IDEA toString() json模板

public java.lang.String toString() {java.lang.StringBuilder builder = new java.lang.StringBuilder();#set ($i = 0)#foreach ($member in $members)#if ($i == 0)builder.appen......

Mtok
29分钟前
0
0
Dubbo内核实现之SPI简单介绍

Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLo...

明理萝
34分钟前
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部