1
votes

So I've been trying to get HLS working over HTTPS. This would seem like a simple task but I've hit a roadblock.

I can get HLS streaming over HTTP with no issues as its really straight forward. However as soon as I change over to HTTPS non of my clients can seem to play it. Most posts that I've researched want to talk about encrypting the HLS content, but i don't really care. I just want to serve it.

What I've also noticed is that the .m3u8 is getting downloaded by the client, but my guess is that the chunks aren't, which is why the stream errors. Also the chrome tools for debugging done show any errors on the video object.

Here is my nginx configuration:


    #
    # HTTP server
    #
    server {
        listen 80;
        server_name localhost;

        root /var/www/html;
        index index.html index.htm;

        location /hls/ {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            add_header Cache-Control no-cache;
            try_files $uri $uri/ =404;
        }
    }

    #
    # HTTPS server
    #
    server {
        listen 443;
        server_name localhost;

        root /var/www/html;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/lab.company.com.crt;
        ssl_certificate_key /etc/nginx/ssl/lab.company.com.key;
        ssl_session_timeout 5m;
        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
        ssl_prefer_server_ciphers on;

        location /hls/ {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            add_header Cache-Control no-cache;
            try_files $uri $uri/ =404;
        }
    }

1
Hi, you should disable these ssl protocols SSLv3 TLSv1 TLSv1.1 as per this recommandationBrice Miramont

1 Answers

0
votes

This was a configuration issue. You need to make sure you are not gzipping, and that the security certificate is valid.