Я создаю лицензионный прокси Widevine с AWS Lambda + Serverless и тестирую его через Shaka Player со стандартным контентом: https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd. API ContentKey
работает нормально, но если я пытаюсь использовать конечную точку Lambda в качестве URL-адрес лицензии с содержимым DRM в кодировке CENC, воспроизведение завершается неудачно, поскольку проигрыватель Shaka пытается выполнить запрос CONNECT
, который не выполняется в Lambda с Unsupported HTTP method
, первый запрос POST
для SERVICE_CERTIFICATE
работает, второй - с PAYLOAD
для запроса сертификата не удается.
Конкретно это:
curl -H 'Host: drm.*****.com:443' -H 'Proxy-Connection: keep-alive' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' -X CONNECT 'https://drm.******.com'
Анализируя трафик с Чарльзом, ошибка: Client SSL handshake failed - Remote host closed connection during handshake
и приводит к Unsupported HTTP method
.
EDIT:
Поэтому игрок Shaka делает запрос на ключи для дешифрования ресурса по URL лицензии Widevine, выполняя его на Lambda и за API Gateway. Первый POST-запрос для service_certificate (payload CAQ =) от игрока Shaka работает. Второй запрос (запрос на лицензию от проигрывателя Shaka) блокируется на шаге CONNECT, а затем соединение закрывается с помощью ответа неподдерживаемого метода HTTP от шлюза API.
Есть идеи, как заставить работать сервер лицензий?