2016-03-28 120 views
0

我遇到过需要在AES加密内部方法的情况下拦截HLS密钥请求的响应的场景。Wowza流媒体服务器拦截HLS密钥请求的响应

以下是通过Wowza

onHTTPCupertinoEncryptionKeyCreateLive(IApplicationInstance 
appInstance, String streamName, byte[] encKey) 

当直播流密钥的要求(每发布的流)

void onHTTPCupertinoEncryptionKeyCreateVOD(HTTPStreamerSessionCupertino 
httpSession, byte[] encKey) 

当请求点播关键视频调用调用(每个会话中给出的手柄)

void onHTTPCupertinoEncryptionKeyData(HTTPStreamerSessionCupertino 
httpSession, IHTTPRequest req, IHTTPResponse resp, byte[] encKeyData) 

当请求密钥数据时调用。

void onHTTPCupertinoEncryptionKeyLiveChunk(ILiveStreamPacketizer 
liveStreamPacketizer, String streamName, CupertinoEncInfo encInfo, long 
chunkId, int mode) 

直播时流密钥请求调用(每发布的流,每块 - 旋转键)

void onHTTPCupertinoEncryptionKeyRequest(HTTPStreamerSessionCupertino 
httpSession, IHTTPRequest req, IHTTPResponse resp) 

当请求键调用。

上述所有方法都拦截了密钥请求调用。有什么方法可以在发送给客户端之前拦截关键响应?

回答

0

虽然有一种解决方法可以使用onHTTPCupertinoEncryptionKeyData(HTTPStreamerSessionCupertino httpCupertinoStreamingSession, IHTTPRequest req, IHTTPResponse resp, byte[] encKeyData)方法的resp对象生成自定义输出,但最好的方法是使用外部方法进行AES-128加密。您将使用与流名称相同名称的.key文件,并将您的代码的URL包含在可提供解密关键数据的代码中。

的.key文件将有类似的内容:

cupertinostreaming-aes128-key: DE51A7254739C0EDF1DCE13BBB308FF0 
cupertinostreaming-aes128-url: http:/mycompany.com/security.aspx 

的。关键文件将需要位于你的Wowza安装的键/目录下,如果你的VOD文件位于子目录中,.key文件也需要与您的VOD文件具有相同的子目录树。例如,如果您的VOD文件sample.mp4位于content/subdir /中,那么您的密钥文件将是keys/subdir/sample.mp4.key,并且您的回放URL将为​​。然后,您可以通过查看位于logs/wowzastreamingengine_access.log文件中的访问日志来验证这是否正常工作。你应该看到类似行:

HTTPStreamerCupertinoIndexFile.init[vod/_definst_/sample.mp4]: Encrypt Cupertino stream: key: *763a url: http://192.168.1.120:1935/vod/_definst_/mp4:sample.mp4/key{bitrate}{sessionid}.m3u8key 
+0

嗯,我使用的方法'onHTTPCupertinoEncryptionKeyData试图(HTTPStreamerSessionCupertino httpCupertinoStreamingSession,IHTTPRequest REQ,IHTTPResponse RESP,字节[] encKeyData)'虽然我观察到WMS输出被追加到我自定义输出。最后,我决定采用AES-128外部方法,现在我正在处理密钥传送的逻辑 –