# HLS via HTTPS fails on Android

**URL:** <https://community.wowza.com/t/hls-via-https-fails-on-android/540>\
**Category:** Wowza Streaming Engine\
**Created:** [October 12, 2016, 11:53am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540 "2016-10-12T11:53:14Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/community.wowza.com/system/32/447_2.png) [@system](https://community.wowza.com/u/system)\
**Post date:** [October 12, 2016, 11:53am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/1 "2016-10-12T11:53:14Z")

</div>

I have set up a new application on WSE 4.5, and everything works well, except that playback of HLS streams on Android devices fail when the manifest is access via HTTPS (it works via HTTP). The same behavior happens with live or vod streams.

I compared the generated manifest to a manifest from a test stream I set up on Wowza Cloud, and the main difference I noted was that the path to the chunklists are relative in the Streaming Engine manifest, and absolute in the Wowza Cloud manifest…see below:

Streaming Engine 4.5:

```auto
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=2292000,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION=1280x720
chunklist_w1857459623_b2292000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1392000,CODECS="avc1.100.30,mp4a.40.2",RESOLUTION=848x480
chunklist_w1857459623_b1392000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=704000,CODECS="avc1.77.31,mp4a.40.2",RESOLUTION=640x360
chunklist_w1857459623_b704000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=576000,CODECS="avc1.66.12,mp4a.40.2",RESOLUTION=424x240
chunklist_w1857459623_b576000.m3u8

```

Wowza Cloud (some info obfuscated for security):

```auto
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=8000348,CODECS="avc1.77.40,mp4a.40.2",RESOLUTION=1920x1080
https://foo.akamaihd.net/hls/live/xxx/bar_1_4128/chunklist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3649866,CODECS="avc1.100.41,mp4a.40.2",RESOLUTION=1280x720
https://foo.akamaihd.net/hls/live/xxx/bar_1_2728/chunklist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2402944,CODECS="avc1.77.40,mp4a.40.2",RESOLUTION=854x480
https://foo.akamaihd.net/hls/live/xxx/bar_1_1728/chunklist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1522330,CODECS="avc1.77.32,mp4a.40.2",RESOLUTION=640x360
https://foo.akamaihd.net/hls/live/xxx/bar_1_1152/chunklist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=916373,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=512x288
https://foo.akamaihd.net/hls/live/xxx/bar_1_640/chunklist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=611516,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=320x180
https://foo.akamaihd.net/hls/live/xxx/bar_1_448/chunklist.m3u8

```

I’m using JW Player 7, but the result appears to be unrelated to players, as entering the manifest URL’s directly into Chrome on Android exhibits the described behavior (HTTP works, HTTPS fails).

The manifest samples above are adaptive, but single-rendition manifests behave identically.

Both HTTP and HTTPS will work as expected on desktop and IOS. Perhaps this is an Android bug or quirk, but if the chunklist URL’s are the key, is there any way to force WSE to use absolute URLs in the manifest?

I can provide working test URL’s via PM or email if you’d like.

---

<div class="post-metadata">

**Author:** ![Joshua\_Wyatt](https://avatars.discourse-cdn.com/v4/letter/j/58956e/32.png) [@Joshua\_Wyatt](https://community.wowza.com/u/Joshua_Wyatt)\
**Post date:** [November 9, 2016, 5:32pm UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/2 "2016-11-09T17:32:40Z")

</div>

Checking back in on this to see if anyone else has a similar experience or suggested fix…

---

<div class="post-metadata">

**Author:** ![Christos\_Aposkitis](https://avatars.discourse-cdn.com/v4/letter/c/ed8c4c/32.png) [@Christos\_Aposkitis](https://community.wowza.com/u/Christos_Aposkitis)\
**Post date:** [December 13, 2016, 10:46am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/3 "2016-12-13T10:46:57Z")

</div>

> I have set up a new application on WSE 4.5, and everything works well, except that playback of HLS streams on Android devices fail when the manifest is access via HTTPS (it works via HTTP). The same behavior happens with live or vod streams.
> 
> Came up with this thread on a Google search, having the same problem. Maybe my solution will help the OP or anyone else.
> 
> Turned out this was nothing to do with the streams, chunk URLs or playlists. The problem was the fact that the Java keystore (JKS file) used on the Wowza side to stream SSL HLS, did not include any CA cert info in the chain. This seems to be a problem for Android Chrome (although nothing is reported, it just doesn’t play), but not a problem for any other browser or device. This is also the reason why the free Streamlock certificates from Wowza will not work (on Android only).
> 
> My symptoms were similar:

- HTTPS playlist URL failed on Chrome Android, HTTP playlist URL worked (trying with JWPlayer)

- HTTPS playlist URL failed and HTTP playlist URL worked (typed directly in the address bar of Chrome on Android)

- A “curl #HTTPS\_PLAYLIST\_URL” failed with “unable to get local issuer certificate”

---

<div class="post-metadata">

**Author:** ![Joshua\_Wyatt](https://avatars.discourse-cdn.com/v4/letter/j/58956e/32.png) [@Joshua\_Wyatt](https://community.wowza.com/u/Joshua_Wyatt)\
**Post date:** [December 2, 2016, 12:43pm UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/4 "2016-12-02T12:43:50Z")

</div>

Hi Jermaine –

Thanks for the pointer. When the properties in the referenced article are set, the manifest and chunklist are indeed returned with absolute URL’s – but the are all HTTP, and never return HTTPS, regardless of what protocol the request was initiated from. Is there another property or fix for that? The [configuration reference](https://www.wowza.com/resources/WowzaMediaServer_ConfigurationReference-3.6.4.pdf) doesn’t mention anything.

Thanks ~

-JDW

---

<div class="post-metadata">

**Author:** ![Jermaine\_Hemby](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@Jermaine\_Hemby](https://community.wowza.com/u/Jermaine_Hemby)\
**Post date:** [November 19, 2016, 9:42am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/5 "2016-11-19T09:42:20Z")

</div>

Hello!

Thanks for contacting Wowza Forums!

Here is an article that can help you [HERE](https://www.wowza.com/docs/how-to-switch-between-absolute-and-relative-urls-in-apple-http-live-streaming-playlists)

Regards,

Jermaine

---

<div class="post-metadata">

**Author:** ![Jermaine\_Hemby](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@Jermaine\_Hemby](https://community.wowza.com/u/Jermaine_Hemby)\
**Post date:** [December 4, 2016, 8:58am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/6 "2016-12-04T08:58:42Z")

</div>

Hello,

Here are some properties you can also set. This should resolve your issue:

This should be possible to resolve using a couple additional HTTPStreamer properties to your Application.xml file:

mpegdashHttpRedirectEnabled

true

Boolean

mpegdashPlaylistHostProtocol

https://

String

mpegdashChunkHostProtocol

https://

string

Add the following to the last container in the Application.xml file:

mpegdashAddMPDSegmentBaseURL

true

Boolean

Let us know if this resolves your issue.

Regards,

Jermaine

---

<div class="post-metadata">

**Author:** ![olt999](https://avatars.discourse-cdn.com/v4/letter/o/c67d28/32.png) [@olt999](https://community.wowza.com/u/olt999)\
**Post date:** [February 22, 2017, 8:56am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/7 "2017-02-22T08:56:00Z")

</div>

I can confirm that this solved the SSL HLS playback issue on Android for me. thx apochr!

---

<div class="post-metadata">

**Author:** ![Benjamin\_Le\_Bozec](https://avatars.discourse-cdn.com/v4/letter/b/34f0e0/32.png) [@Benjamin\_Le\_Bozec](https://community.wowza.com/u/Benjamin_Le_Bozec)\
**Post date:** [June 2, 2017, 3:19pm UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/8 "2017-06-02T15:19:31Z")

</div>

Hi,

I’m facing exactly the same issue. On my android phone, the HLS stream over HTTPS does not work, while it does work on iPad and Desktop.

The properties “cupertinoRelativePlaylistPlaylists” and “cupertinoRelativePlaylistItems” does enable absolute HTTP urls in the playlist.m3u8 and chunklist.m3u8 files, but Android seems to need HTTPS urls.

I tried the set the several properties above, but it has no effect, the generated m3u8 files contains HTTP urls, and not HTTPS urls.

Can you advise me ?

regards,

Ben

---

<div class="post-metadata">

**Author:** ![Benjamin\_Le\_Bozec](https://avatars.discourse-cdn.com/v4/letter/b/34f0e0/32.png) [@Benjamin\_Le\_Bozec](https://community.wowza.com/u/Benjamin_Le_Bozec)\
**Post date:** [June 2, 2017, 3:34pm UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/9 "2017-06-02T15:34:43Z")

</div>

Ok i managed to make it work, by setting the properties :

cupertinoHttpRedirectEnabled = true,

cupertinoPlaylistHostProtocol = https,

cupertinoChunkHostProtocol = https

Benjamin

---

<div class="post-metadata">

**Author:** ![Victor\_Garcia1](https://avatars.discourse-cdn.com/v4/letter/v/58956e/32.png) [@Victor\_Garcia1](https://community.wowza.com/u/Victor_Garcia1)\
**Post date:** [July 26, 2017, 9:02am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/10 "2017-07-26T09:02:29Z")

</div>

Having the same problem… over http runs ok in android, but over https don’t (works correctly on the rest of devices, PC, iPad…).  
I add next custom properties to my app, in path /Root/Application/HTTPStreamer

cupertinoHttpRedirectEnabled = true  
cupertinoPlaylistHostProtocol = https  
cupertinoChunkHostProtocol = https

And enable cupertinoRelativePlaylistPlaylists, and set it to false.

Playlist generated with absolute URL in https protocol, but steel not work on android ☹

---

<div class="post-metadata">

**Author:** ![Victor\_Garcia1](https://avatars.discourse-cdn.com/v4/letter/v/58956e/32.png) [@Victor\_Garcia1](https://community.wowza.com/u/Victor_Garcia1)\
**Post date:** [July 26, 2017, 9:04am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/11 "2017-07-26T09:04:08Z")

</div>

Have the same problem, but can’t resolve it. Any other detail how you solve the issue?

---

<div class="post-metadata">

**Author:** ![Stuart\_Gunn](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@Stuart\_Gunn](https://community.wowza.com/u/Stuart_Gunn)\
**Post date:** [October 18, 2017, 11:46pm UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/12 "2017-10-18T23:46:19Z")

</div>

Android 6 using Chrome seems to happily accept HTTP streams even in an HTTPS page, so we just did a quick JS hack to check the user-agent and then change the stream URL to HTTP instead.

Of course, only possible for streaming servers available over HTTP and HTTPS, but luckily ours is.

Would have done a more through fix, but our customer base is not likely to have many Android 6.0 devices for much longer.

---

<div class="post-metadata">

**Author:** ![Andrew\_Ramberg](https://avatars.discourse-cdn.com/v4/letter/a/7c8e57/32.png) [@Andrew\_Ramberg](https://community.wowza.com/u/Andrew_Ramberg)\
**Post date:** [October 19, 2017, 9:33pm UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/13 "2017-10-19T21:33:39Z")

</div>

Hello,

As mentioned earlier in the post Android devices are more sensitive to issues with the SSL certificate chain than some browsers. Typically this issue is caused by a missing or incorrect intermediate certificate. We suggest testing your server with a website that checks the certificate chains such as [SSL Labs](https://www.ssllabs.com/ssltest/index.html).

Instructions on how to import the missing chain certificate can be found [here](https://www.wowza.com/docs/how-to-request-an-ssl-certificate-from-a-certificate-authority#importCertificate).

Best regards,  
Andrew

---

<div class="post-metadata">

**Author:** ![Victor\_Garcia1](https://avatars.discourse-cdn.com/v4/letter/v/58956e/32.png) [@Victor\_Garcia1](https://community.wowza.com/u/Victor_Garcia1)\
**Post date:** [October 20, 2017, 9:18am UTC](https://community.wowza.com/t/hls-via-https-fails-on-android/540/14 "2017-10-20T09:18:51Z")

</div>

Thanks Andrew, this was my issue. Rebuilding the certificate, solution my problem. Wowza rebuild the certificate for me, and solve it. I don’t understand very much what was exactly the problem.
