搭建Janus的HTTPS环境

1、前言

基于安全隐私问题,现在Webkit内核的浏览器共享视频、语音、经纬度坐标等必须通过HTTPS形式访问!

Chrome浏览器使用的是Webkit内核,所以很不幸,如果你要在最新的Chrome浏览器上通过HTTP形式分享本地的视频、语音,就会出现如《Chrome浏览器调用摄像头失败》 中所述的问题。

那么,如何解决呢?答案很简单,就是将应用的HTTP服务方式改造成HTTPS方式,本文将就Janus的Demos范例的HTTPS改造进行说明。

2、改造过程

2.1 安装Janus

若还没有部署Janus环境,可以参考《Ubuntu中安装部署Janus》 一文进行部署。

2.2 修改Janus配置

1、修改Janus的配置文件janus.jcfg,命令如下

root@webrtc:~# vi /opt/janus/etc/janus/janus.jcfg

确认Janus所使用的DTLS证书配置,如下图所示
在这里插入图片描述

2、修改Janus的配置文件janus.janus.transport.http.jcfg,命令如下

root@webrtc:~# vi /opt/janus/etc/janus/janus.janus.transport.http.jcfg

修改或增加的内容,如下图所示
在这里插入图片描述

2.3 安装Nginx

Ubuntu下安装很简单,使用下面命令:

sudo apt-get install nginx -y

安装完成后,可以通过下面命令查看

sudo netstat -ntlp | grep nginx

执行结果如下,可以看到nginx已经运行起来

扫描二维码关注公众号,回复: 6413346 查看本文章
root@webrtc:~# sudo netstat -ntlp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1471/nginx: master
tcp6       0      0 :::80                   :::*                    LISTEN      1471/nginx: master

可以通过浏览器访问,如 http://172.16.0.17 就可以看到Nginx的首页,如下图所示
在这里插入图片描述

2.4 修改Nginx配置

修改Nginx的默认配置文件,命令如下

root@webrtc:~# vi /etc/nginx/conf.d/default.conf

修改或增加的内容,如下图所示
在这里插入图片描述

  • 增加HTTPS的443端口的监听
  • 修改项目的根目录为janus的demos目录
  • 设置SSL证书为Janus服务所使用的相同的证书

修改后的内容如下:

server {
        listen       80;
        listen  *:443  ssl;
        server_name  localhost;

        location / {
                root /opt/janus/share/janus/demos;
                index index.html index.htm index.php;
        }

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /usr/share/nginx/html;
        }

        #ssl_certificate /etc/nginx/ssl/nginx.crt;
        #ssl_certificate_key /etc/nginx/ssl/nginx.key;
        ssl_certificate /opt/janus/share/janus/certs/mycert.pem;
        ssl_certificate_key /opt/janus/share/janus/certs/mycert.key;
}

2.5 重新启动

2.5.1、重启Janus

查看Janus的运行线程,命令如下

sudo netstat -ntlp | grep janus

结果如下所示

root@webrtc:~# sudo netstat -ntlp | grep janus
tcp        0      0 0.0.0.0:8188            0.0.0.0:*               LISTEN      1372/janus          
tcp6       0      0 :::8088                 :::*                    LISTEN      1372/janus          

使用下面命令结束进程

sudo kill -9 1372

注:1372位上面查到的线程id

然后,启动Janus,命令如下:

sudo /opt/janus/bin/janus -b --log-file=/opt/janus.log

2.5.2、重启Nginx

使用下面命令重启Nginx

sudo service nginx restart

注:若没有service命令,请自行安装

2.5.3、重启后的端口情况

Nginx端口情况如下所示:

root@webrtc:~# netstat -ntlp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1471/nginx: master  
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1471/nginx: master  
tcp6       0      0 :::80                   :::*                    LISTEN      1471/nginx: master

Janus端口情况如下所示:

root@webrtc:~# netstat -ntlp | grep janus
tcp        0      0 0.0.0.0:7188            0.0.0.0:*               LISTEN      1372/janus
tcp        0      0 0.0.0.0:7989            0.0.0.0:*               LISTEN      1372/janus
tcp        0      0 0.0.0.0:8188            0.0.0.0:*               LISTEN      1372/janus
tcp        0      0 0.0.0.0:8989            0.0.0.0:*               LISTEN      1372/janus
tcp6       0      0 :::7088                 :::*                    LISTEN      1372/janus
tcp6       0      0 :::7889                 :::*                    LISTEN      1372/janus
tcp6       0      0 :::8088                 :::*                    LISTEN      1372/janus
tcp6       0      0 :::8089                 :::*                    LISTEN      1372/janus

2.6 使用HTTPS访问

可以通过浏览器访问,如 https://172.16.0.17 就可以看到Nginx的首页,如下图所示
在这里插入图片描述

若HTTPS访问出现“您的链接不是私密链接”或“您的链接并不安全”,请查阅《浏览器HTTPS访问问题》一文。

3、问题及解决

3.1 静态资源的访问问题

Janus的Demo调用过程出现错误,如下图所示:
在这里插入图片描述

解决方法
1、修改/etc/nginx/conf.d/default.conf配置如下所示:
在这里插入图片描述
**注:**增加了静态资源请求的处理
2、然后,重启nginx

3.2 调用Janus请求出现的CORS问题(跨域)

Janus的Demo调用过程出现错误,如下图所示:
在这里插入图片描述

解决方法
1、通过Nginx反向代理Janus的请求,修改/etc/nginx/conf.d/default.conf配置如下所示:
在这里插入图片描述
**注:**增加了janus请求/janus和管理请求/admin的反向代理
2、然后,重启nginx

4、参考资料

Nginx配置详解
https://www.cnblogs.com/knowledgesea/p/5175711.html

猜你喜欢

转载自blog.csdn.net/cgs1999/article/details/89881733