PMS Version#: 1.25.4.5426
Samsung client: 5.29.1 (platform 4)
Last September, I switched my PMS certificate from Let’sEncrypt to ZeroSSL to workaound DST ROOT CA X3 expiration on broken clients. Since then, old TVs were back on track except my Samsung TVs (>2016) when transcoding was required.
So, Samsung TVs are able to play content over secure channel until no transcoding is involved.
With transcoding, error messages from the client are:
Jan 24, 2022 23:29:08.498 [0x7f7bfbc56b38] DEBUG - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [PlaybackSessionController] Opening playback
Jan 24, 2022 23:29:08.498 [0x7f7bfbc56b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (NONE)] open ("https://[**redacted**].plex.direct:32400/video/:/transcode/universal/start.mpd?session=4aipm3fughp1kgojkdqex3l3")
Jan 24, 2022 23:29:08.498 [0x7f7bfbc56b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] setListener ({})
Jan 24, 2022 23:29:08.498 [0x7f7bfbc56b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] setDisplayRect (79, 0, 1762, 1080)
Jan 24, 2022 23:29:08.498 [0x7f7bfbc56b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] setDisplayMethod ("PLAYER_DISPLAY_MODE_FULL_SCREEN")
Jan 24, 2022 23:29:08.498 [0x7f7bfbc56b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] setTimeoutForBuffering (120)
Jan 24, 2022 23:29:08.498 [0x7f7bfbc56b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] prepareAsync (, )
Jan 24, 2022 23:29:43.628 [0x7f7bfc13eb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [PlaybackSessionController] playback state changed to: stopped
Jan 24, 2022 23:29:43.628 [0x7f7bfc13eb38] WARN - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] Failed to send transcode action stop to source: server://a7f4d5c45423575c44292b8710bf5aa7dd652ce0/com.plexapp.plugins.library/library/metadata/80950
Jan 24, 2022 23:29:43.628 [0x7f7bfc13eb38] ERROR - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] Playback error occurred. Reason: Unknown, An unknown player error occurred. code: 0, message: An unknown error occurred: Unknown error
Jan 24, 2022 23:29:43.629 [0x7f7bfc13eb38] WARN - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [PlaybackSessionController] could not retry, reporting error
On the server side:
# grep -i handshake Plex\ Media\ Server.log
Jan 24, 2022 23:27:50.244 [0x7f7bfb7deb38] DEBUG - WebSocket: Performing handshake from origin https://[**redacted**]:32400
Jan 24, 2022 23:27:53.222 [0x7f7bfb7deb38] DEBUG - WebSocket: Performing handshake from origin
Jan 24, 2022 23:27:53.224 [0x7f7bfb7bbb38] DEBUG - WebSocket: Performing handshake from origin http://[**redacted**].plex.direct:32400
Jan 24, 2022 23:28:05.866 [0x7f7bfb7bbb38] DEBUG - WebSocket: Performing handshake from origin file://
Jan 24, 2022 23:28:17.266 [0x7f7bfc599b38] DEBUG - CERT: incomplete TLS handshake from 192.168.1.12:48801: tlsv1 alert unknown ca
When direct play, no error and playback is ok. Here is the log output from the client:
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [MDE] Server decision, directPlay: true, directStreamVideo: true, directStreamAudio: true
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] reason: Direct play OK.
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlayFactory] Requesting new player...
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (NONE)] load: {
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [SubtitleConnectionManager] Subtitle connection ignored. App is not rendering subtitles.
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [PlaybackSessionController] playback state changed to: buffering
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (NONE)] open ("https://[[**redacted**]plex.direct:32400/library/parts/622614/1640639653/file.mkv?X-Plex-Token=xxxxxxxxxx
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] setListener ({})
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] setDisplayRect (0, 0, 1920, 1080)
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] setDisplayMethod ("PLAYER_DISPLAY_MODE_FULL_SCREEN")
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] setTimeoutForBuffering (120)
Jan 25, 2022 00:31:16.566 [0x7f7bff08fb38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] prepareAsync (, )
Jan 25, 2022 00:31:21.786 [0x7f7bf82c0b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] Buffering...
Jan 25, 2022 00:31:21.786 [0x7f7bf82c0b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] onBuffering: 2%
Jan 25, 2022 00:31:21.786 [0x7f7bf82c0b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] onBuffering: 3%
Jan 25, 2022 00:31:21.786 [0x7f7bf82c0b38] INFO - [Plex for Samsung] [seblu:x7bo0byefrat3754b1emipjy] [AVPlay[1] (IDLE)] onBuffering: 3%
My intuition at the moment is that there is a problem with the *.plex.direct:32400. certificate because its chain is using the problematic DST ROOT CA X3.
See the chain:
$ openssl s_client 192-168-1-1.666666666666.plex.direct:32400
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = *.666666666666.plex.direct
verify return:1
---
Certificate chain
0 s:CN = *.666666666666.plex.direct
i:C = US, O = Let's Encrypt, CN = R3
1 s:C = US, O = Let's Encrypt, CN = R3
i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1
i:O = Digital Signature Trust Co., CN = DST Root CA X3
So, if used by Samsung TVs, this certificate cannot be trusted and secure connections fails. Yet, I don’t understand why this certificate is used (and only when transcoding) instead of my valid and working certificate from ZeroSSL.
The Custom server access URLs in PMS settings is pointing to my own domain, no plex.direct.
Do you have any ideas to correct this?