Kurento应用安全
博客专区 > chapin 的博客 > 博客详情
Kurento应用安全
chapin 发表于10个月前
Kurento应用安全
  • 发表于 10个月前
  • 阅读 26
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

从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";
共有 人打赏支持
粉丝 18
博文 82
码字总数 101076
×
chapin
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: