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-server-ip]:[порт]/crossdomain.xml
  • [wowza-server-ip]:[порт]/[имя-приложения]/[имя-экземпляра-приложения]/[имя-потока]/playlist.m3u8
  • [wowza-ip-сервера]:[порт]/[имя-приложения]/[имя-экземпляра-приложения]/[имя-потока]/chunklist_w[идентификатор-сеанса-wowza].m3u8
  • [веб-сервер-ip]:[порт]/crossdomain.xml

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

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

#EXTM3U

#EXT-X-ВЕРСИЯ:3

#EXT-X-ЦЕЛЕВАЯ ПРОДОЛЖИТЕЛЬНОСТЬ:12

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

#EXT-X-KEY:METHOD=AES-128,URI="http://[веб-сервер-ip]:[порт]/SimpleWebServlet/key.jsp?wowzasessionid=[идентификатор сеанса]"

#EXTINF:9.52,

media_w[идентификатор сеанса]_0.ts

#EXTINF:10.4,

media_w[идентификатор сеанса]_1.ts

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

Купертиностриминг-aes128-ключ: DE51A7254739C0EDF1DCE13BBB308FF0

cupertinostreaming-aes128-url: http://[web-server-ip]:[port]/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 игроку.

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

ИЗМЕНИТЬ 2

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


person saurabh kedia    schedule 29.03.2016    source источник


Ответы (1)


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

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

person jabal    schedule 30.03.2016
comment
HLS с внешним AES128 работает нормально, когда я помещаю ключ [stream-name].key в [wowza-install-dir]/keys для MP4, но такая же проблема возникает, когда я пытаюсь использовать файлы SMIL для потоковой передачи ABR. Я проверил файлы chunkllist.m3u8 и .ts, чтобы убедиться, что они зашифрованы. - person saurabh kedia; 30.03.2016
comment
@saurabhkedia Удалось ли вам выяснить, как заставить файлы SMIL работать с внешним методом Wowza AES-128? У меня похожая ситуация, хотелось бы узнать, получилось ли у вас. Если да, не могли бы вы опубликовать это как ответ здесь? Спасибо. - person ami91; 22.09.2016
comment
@ ami91 Да, у меня есть способ использовать как внутренние, так и внешние методы AES-128 Wowza. Измените путь в XML-файле конфигурации приложения в теге keyDir, присутствующем в теге Streams, на путь, по которому будут находиться ваши файлы ключей. Сохраняйте ту же структуру каталогов, если вы используете подпапки внутри базовой папки приложения wowza для файла mp4. Примечание. Имя вашего ключа должно совпадать с именем файла mp4 .key. ex - Для Test.mp4 вам нужно иметь Test.mp4.key в качестве имени файла ключа. Надеюсь, что это поможет в решении вашей проблемы, если не любезно упомянуть проблему подробно. - person saurabh kedia; 28.09.2016