Wowza безопасный Apple HTTP Live Streaming (AES-128 - внешний метод). Игрок не делает запрос ключа

Я работал на Wowza Streaming Server и, пытаясь защитить Apple HTTP Live Streaming с помощью AES-128 - внешнего метода, я сталкиваюсь со следующими проблемами:

  1. Внешний метод шифрования AES-128 не работает для файлов.smil, присутствующих в подпапке исходного каталога приложения. Я попытался добиться этого, поместив [my-stream].key в [install-dir]/keys и [install-dir]/keys / [sub-folder-name], но оба сценария не смогли этого добиться.

URL плейлиста: - [wowza-server-ip]:[порт] / [имя-приложения] / [имя-экземпляра приложения] / smil: [подпапка] /demo.smil/playlist.m3u8

  1. В случае наличия mp4 в исходном пути приложения проигрыватель не вызывает URL-адрес ключа.

Последовательность звонков, сделанных игроком:

  • [Wowza-сервер IP]:[порт] файл /crossdomain.xml
  • [Wowza-сервер IP]:[порт] / [Приложение-имя] / [-имя-экземпляр applcation] / [Поток-имя] /playlist.m3u8
  • [Wowza-сервера IP]:[порт] / [Приложение-имя] / [-имя-экземпляра applcation] / [Поток-имя] / chunklist_w [Wowza-Session-Id].m3u8
  • [Веб-сервер IP]:[порт] файл /crossdomain.xml

После этого игрок не вызывает "запрос ключа", как предполагалось. Звонки происходят правильно, когда я использую внутренний метод шифрования AES-128.

Мой chunklist_w[wowza-session-id].m3u8

# EXTM3U

# EXT-X-версия: 3

# EXT-X-TARGETDURATION: 12

# EXT-X-MEDIA-ПОСЛЕДОВАТЕЛЬНОСТИ: 0

# EXT-X-KEY: METHOD = AES-128, URI = "HTTP://[веб-сервера IP]:[порт]/SimpleWebServlet/key.jsp?wowzasessionid=[Session-Id]"

#EXTINF: 9,52,

media_w [Session-Id] _0.ts

#EXTINF: 10,4,

media_w [Session-Id]_1.ts

Файл [streamname].key в папке [install-dir]/keys

ключ cupertinostreaming-aes128: DE51A7254739C0EDF1DCE13BBB308FF0

cupertinostreaming-aes128-url: http://%5Bweb-server-ip%5D:%5Bport%5D/SimpleWebServlet/key.jsp

JSP-файл для возврата ключа является key.jsp

<%@ page import="java.util.*,java.io.*" %>
<%
boolean isValid = true;
if (!isValid)
{
    response.setStatus( 403 );
}
else
{
    response.setHeader("Content-Type", "binary/octet-stream");
    response.setHeader("Pragma", "no-cache");

    String keyStr = "DE51A7254739C0EDF1DCE13BBB308FF0";

    int len = keyStr.length()/2;
    byte[] keyBuffer = new byte[len];  

    for (int i=0;i<len;i++)
        keyBuffer[i] = (byte)Integer.parseInt(keyStr.substring(i*2, (i*2)+2), 16);

    OutputStream outs = response.getOutputStream();
    outs.write(keyBuffer);
    outs.flush();
}
%>

Если кто-то сталкивался с подобной проблемой или успешно внедрил внешний метод wowza aes-128, просим вас рассказать о проблемах, упомянутых выше.

РЕДАКТИРОВАТЬ 1

Пожалуйста, не обращайте внимания на 2-й пункт, так как после дальнейшего анализа я обнаружил, что существует некоторая проблема с jboss, предоставляющим ключ, после того, как он доставит кросс-домен XML пользователю.

Для ссылки на эту проблему, пожалуйста, проверьте: Могу ли я вызвать два файла crossdomain.xml с двух разных серверов с моего флэш-плеера?

РЕДАКТИРОВАТЬ 2

Извиняюсь за опечатку в моем первом пункте. Это должно быть.smil, а не.mp4, я исправил то же самое в моем первом пункте

1 ответ

Я недавно опробовал HLS с AES128, и он работал нормально. Мой ключевой файл был в [wowzadir]/keys/mystream.key, Похоже, это ваш игрок не делает что-то прямо здесь. Каким игроком вы пользуетесь?

Вы можете попробовать использовать wget загрузить некоторые куски, и вы можете проверить их с помощью VLC, например, чтобы увидеть, было ли применено шифрование.

Другие вопросы по тегам