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已经运行起来
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