ZLmediakit的https(rtmps/rtsps/webrtc/wss)功能使用记录

发布时间 2023-10-19 17:56:22作者: 邗影

1官方教程

https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD

https://gitee.com/xia-chu/ZLMediaKit/wikis/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD

2 实际测试和使用记录

2.1 下载和编译ssl

  zlmediakit的https(另外还包括rtmps/rtsps/webrtc/wss)功能依赖openssl库,在编译zlmediakit时,应该先在系统默认环境安装openssl库:

   sudo apt-get install libssl-dev

       如果您的系统默认openssl版本太老,可以选择自行编译安装openssl到自定义路径;此时,在编译zlmediakit时可以通过以下命令指定openssl自定义安装路径:

  cd ZLMediaKit
  mkdir build
  cd build
  cmake .. -DOPENSSL_ROOT_DIR=/path/to/your/new/openssl/install/root/dir
  make -j$(nproc)

如果你是安装到别的位置了,也可以通过改cmakelists来设置ssl库的路径,请在代码的主cmakelists.txt 的openssl配置部分,设置正确的头文件和库目录(include_directories头文件的路径 .so的路径)

2.2编译好的mediaServer是否携带ssl库

      cmakelists.txt中的   option(ENABLE_OPENSSL "Enable OpenSSL" ON)要记得打开;

      由于我是直接使用执行程序的,所以 ldd -r MediaServer 就就可以查看是否把ssl编译进MediaServer了;

           

2.3 将默认的default.pem文件放到执行目录(或者上一级目录)

  如果你还没购买域名,可以使用自签名证书或zlmediakit自带默认证书default.pem测试。default.pem这个文件源码中有提供;

  pem证书是存储公钥和私钥的数字证书,用于验证通过SSL或TLS加密连接传输的数据的完整性。 PEM格式是一种文本文件格式,可以直接查看证书的详细信息,包括颁发者、有效期、公钥等信息。

2.4 开始测试https

2.4.1 在zlm的配置文件config.ini中设置https的sslport,用于接收https的连接请求,创建httpsSession,这里注意config.ini中有多个sslport分别对应不同的流媒体协议,最好不要使用相同的sslport;

  •  修改 [http]  #https服务器监听端口  sslport=7443
  • 重启MediaServer·,看到日志中开始监听7443端口,并有打印(MediaServer安装在172.*.*.*上)
  • 控制台查看端口状态

  • 找另一个服务器(我本地ip:10.*.*.*),通过webrtc客户端访问  https://172.*.*.*:7443/webrtc/index.html  发现页面无响应
  • telnet 链接一下

  •  抓包看一下为什么无法连接   ,目标不可达,检查防火墙策略

             

  •    在172.*.*.*上看看是不是防火墙不允许传输协议使用这个端口:firewall-cmd --zone=public --list-ports;如果防火墙策略问题,则开通端口,重启防火墙

                 firewall-cmd --zone=public --add-port=7443/tcp --permanent ;   systemctl restart firewalld 再次检查,应该端口就可以用了

  •  这次我们在试试https访问;看到页面是这个样子就可以访问了

                                   

  • 结果有画面啦,注意搜索栏也要用7443端口,webrtc的url也要用7443端口

                         

2.4.2 测试rtsps,使用与上边一样的逻辑,修改172.*.*.* 配置文件rtsp:sslport =8443(与http的sslport是两个东西),注意防火墙,然后在10.*.*.* 测试拉流  rtsps://172.*.*.*:8443/live/c82就能看到画面了,出来的会有点迟;

           这个rtsps的拉取可以用vlc ,ffplay都能测试