我正在尝试通过 SSL 套接字使用 RTMP 客户端连接到我的 Red5 服务器。根据Paul Gregoire 关于 Red5 和 RTMPS 的博客文章,这些是我设置新的 Red5 RTMPS 服务器所采取的步骤:
- 从Red5 1.0 下载页面下载并安装新版本的 Red5
- 取消注释{red5 dir}/conf/red5-core.xml文件的 RTMPS 部分。本部分包含 Paul Gregoire 在其博文第 8 步中提到的相同设置。
- 保持{red5 dir}/conf/red5.properties不变;RTMPS 端口设置为默认的 8443,服务器 SSL 密钥库保留为与 Red5 打包的那个
然后,我继续使用 JVM 参数“-Djavax.net.debug=ssl”启动 Red5 服务器,以便在控制台中显示 SSL 调试信息。
作为一个简单的测试,我尝试使用 tls 库通过 node.js 连接到服务器:
tls.connect(8443, 'localhost', null); // tls.connect(port, host, callback);
我在服务器控制台中注意到的第一件事是第 1106 行:
[DEBUG] [pool-11-thread-1] org.red5.server.net.rtmp.codec.RTMPProtocolDecoder - Handshake init too small, buffering. remaining: 338
我的第一个想法是服务器无法解码 RTMP 握手,因为服务器正在跳过客户端尝试启动的 SSL 握手。通过进一步梳理服务器控制台,我发现尽管客户端通过 SSL 套接字连接,但 SSL 握手从未发生过。这是 node.js 客户端调用上述行的结果的完整服务器控制台输出。
尝试通过 SSL 连接到服务器时我做错了什么,应该如何设置 Red5 以使用 RTMPS?