0

I cannot play video(playback) with flash on Chrome or any browsers. I am trying to watch video previously recorded from a red5 server running on Widlfy 15. The version of red5 I am using is v1.0.9.-RELEASE

I am using Chrome (Version 73.0.3683.103 (Official Build) (64-bit)) and Adobe flash 32.0.0.171). The code in my SWF file embedded in HTML is :

    connection = new NetConnection();
    connection.proxyType = "best";
    connection.connect(“rtmps://localhost:8935/service”)

On Chrome I got the following error when checking the logs : POST https://localhost:8935/open/1 net::ERR_EMPTY_RESPONSE

  1. I can record video with red5 and rtmps protocol. I can do a successful test with ffmpeg -i "rtmps://localhost:8935/service/my_video.mp4" -vcodec copy -acodec copy out.mp4 . I have upgraded many libraries like apache , httpcontantainer.
  2. I have used Chrome64_51.0.2704.84 with Flash version 21.0.0.242 . The issue is the same.
  3. My red5 server supports TLS 1.0 , TLS 1.1 , TLS 1.2 (check it with nmap and while debugging red5 server code.
  4. I have the same issue with v1.0.10 version of red 5.
  5. Wireshark indicates that TLS 1.2 is used and show Encypted Message Hanshake and then application data message as if TLS 1.2 is transmitting data. Then the next message is a TLS encryption alert. After that the communication stopped brutally.

I am using a self-sign certificate for my localhost . I have added the CA root certificate in my Chrome browser to simulate a CA certificate. Truststore and keystore are correctly set up in redcore.xml and video recording works. On the server side where red5 is running in my container called my_hostname, I got the following logs which seem important:

I have set up a RTMPS native in red5 but i have a log saying i am in a non native RTMPS for some reason :

my_hostname | 15:55:37,610 INFO [org.red5.server.net.rtmps.RTMPSIoFilter] (NioProcessor-28) RTMPS Session id: CBN7YR9BFVO9W

my_hostname | 15:55:37,610 INFO [org.red5.server.net.rtmps.RTMPSIoFilter] (NioProcessor-28) Non-native RTMPS connection requested for: CBN7YR9BFVO9W

my_hostname | 15:55:47,324 WARN [org.red5.server.net.rtmp.RTMPConnection] (rtmpScheduler-1) Closing CBN7YR9BFVO9W, due to long handshake. State: >connect

How to view rtmps red5 playback video from Chrome ?

More logs :

my_hostname | 15:55:37,547 INFO [stdout] (NioProcessor-28) update handshake state: change_cipher_spec

my_hostname | 15:55:37,547 INFO [stdout] (NioProcessor-28) upcoming handshake states: client finished[20]

my_hostname | 15:55:37,547 INFO [stdout] (NioProcessor-28) upcoming handshake states: server change_cipher_spec[-1]

my_hostname | 15:55:37,547 INFO [stdout] (NioProcessor-28) upcoming handshake states: server finished[20]

my_hostname | 15:55:37,547 INFO [stdout] (NioProcessor-28) NioProcessor-28, READ: TLSv1.2 Handshake, length = 40

my_hostname | 15:55:37,548 INFO [stdout] (NioProcessor-28) check handshake state: finished[20]

my_hostname | 15:55:37,548 INFO [stdout] (NioProcessor-28) update handshake state: finished[20]

my_hostname | 15:55:37,548 INFO [stdout] (NioProcessor-28) upcoming handshake states: server change_cipher_spec[-1]

my_hostname | 15:55:37,548 INFO [stdout] (NioProcessor-28) upcoming handshake states: server finished[20]

my_hostname | 15:55:37,548 INFO [stdout] (NioProcessor-28) *** Finished

my_hostname | 15:55:37,549 INFO [stdout] (NioProcessor-28) verify_data: { 118, 34, 113, 228, 247, 234, 90, 205, 141, 172, 200, 231 }

my_hostname | 15:55:37,549 INFO [stdout] (NioProcessor-28) ***

my_hostname | 15:55:37,553 INFO [stdout] (NioProcessor-28) update handshake state: change_cipher_spec

my_hostname | 15:55:37,554 INFO [stdout] (NioProcessor-28) upcoming handshake states: server finished[20]

my_hostname | 15:55:37,554 INFO [stdout] (NioProcessor-28) NioProcessor-28, WRITE: TLSv1.2 Change Cipher Spec, length = 1

my_hostname | 15:55:37,555 INFO [stdout] (NioProcessor-28) *** Finished

my_hostname | 15:55:37,560 INFO [stdout] (NioProcessor-28) verify_data: { 66, 121, 143, 7, 121, 172, 211, 83, 5, 34, 144, 192 }

my_hostname | 15:55:37,561 INFO [stdout] (NioProcessor-28) ***

my_hostname | 15:55:37,561 INFO [stdout] (NioProcessor-28) update handshake state: finished[20]

my_hostname | 15:55:37,562 INFO [stdout] (NioProcessor-28) NioProcessor-28, WRITE: TLSv1.2 Handshake, length = 40

my_hostname | 15:55:37,562 INFO [stdout] (NioProcessor-28) %% Cached server session: [Session-9, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]

my_hostname | 15:55:37,610 INFO [org.red5.server.net.rtmps.RTMPSIoFilter] (NioProcessor-28) RTMPS Session id: CBN7YR9BFVO9W

my_hostname | 15:55:37,610 INFO [org.red5.server.net.rtmps.RTMPSIoFilter] (NioProcessor-28) Non-native RTMPS connection requested for: CBN7YR9BFVO9W

my_hostname | 15:55:47,324 WARN [org.red5.server.net.rtmp.RTMPConnection] (rtmpScheduler-1) Closing CBN7YR9BFVO9W, due to long handshake. State: connect

my_hostname | 15:55:47,326 INFO [stdout] (rtmpScheduler-1) rtmpScheduler-1, called closeOutbound()

my_hostname | 15:55:47,326 INFO [stdout] (rtmpScheduler-1) rtmpScheduler-1, closeOutboundInternal()

my_hostname | 15:55:47,326 INFO [stdout] (rtmpScheduler-1) rtmpScheduler-1, SEND TLSv1.2 ALERT: warning, description = close_notify

my_hostname | 15:55:47,327 INFO [stdout] (rtmpScheduler-1) rtmpScheduler-1, WRITE: TLSv1.2 Alert, length = 26

my_hostname | 15:55:47,328 INFO [org.red5.server.net.rtmp.RTMPMinaConnection] (NioProcessor-28) Connection is closed: CBN7YR9BFVO9W

my_hostname | 15:55:47,329 INFO [stdout] (NioProcessor-28) NioProcessor-28, called closeInbound()

my_hostname | 15:55:47,329 INFO [stdout] (NioProcessor-28) NioProcessor-28, fatal error: 80: Inbound closed before receiving peer's close_notify: possible truncation attack?

my_hostname | 15:55:47,329 INFO [stdout] (NioProcessor-28) javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?

my_hostname | 15:55:47,329 INFO [stdout] (NioProcessor-28) %% Invalidated: [Session-9, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]

my_hostname | 15:55:47,330 INFO [stdout] (NioProcessor-28) NioProcessor-28, SEND TLSv1.2 ALERT: fatal, description = internal_error

my_hostname | 15:55:47,332 INFO [stdout] (NioProcessor-28) NioProcessor-28, Exception sending alert: java.io.IOException: writer side was already closed.

my_hostname | 15:55:47,332 INFO [stdout] (NioProcessor-28) NioProcessor-28, called closeOutbound()

my_hostname | 15:55:47,332 INFO [stdout] (NioProcessor-28) NioProcessor-28, closeOutboundInternal()

my_hostname | 15:55:47,332 WARN [org.red5.server.net.rtmp.RTMPMinaIoHandler] (NioProcessor-28) Connection was not found for CBN7YR9BFVO9W

my_hostname | 15:55:47,507 WARN [org.red5.server.net.rtmp.RTMPConnection] (rtmpScheduler-1) Closing LVI6J72JECMZ2, due to long handshake. State: connect

my_hostname | 15:55:47,512 INFO [stdout] (rtmpScheduler-1) rtmpScheduler-1, called closeOutbound()

my_hostname | 15:55:47,512 INFO [stdout] (rtmpScheduler-1) rtmpScheduler-1, closeOutboundInternal()

my_hostname | 15:55:47,513 INFO [org.red5.server.net.rtmp.RTMPMinaConnection] (NioProcessor-29) Connection is closed: LVI6J72JECMZ2

my_hostname | 15:55:47,513 INFO [stdout] (NioProcessor-29) NioProcessor-29, called closeInbound()

my_hostname | 15:55:47,513 INFO [stdout] (NioProcessor-29) NioProcessor-29, fatal error: 80: Inbound closed before receiving peer's close_notify: possible truncation attack?

my_hostname | 15:55:47,513 INFO [stdout] (NioProcessor-29) javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?

my_hostname | 15:55:47,513 INFO [stdout] (NioProcessor-29) NioProcessor-29, SEND TLSv1.2 ALERT: fatal, description = internal_error

my_hostname | 15:55:47,513 INFO [stdout] (NioProcessor-29) NioProcessor-29, Exception sending alert: java.io.IOException: writer side was already closed.

my_hostname | 15:55:47,513 INFO [stdout] (NioProcessor-29) NioProcessor-29, called closeOutbound()

my_hostname | 15:55:47,513 INFO [stdout] (NioProcessor-29) NioProcessor-29, closeOutboundInternal()

my_hostname | 15:55:47,513 WARN [org.red5.server.net.rtmp.RTMPMinaIoHandler] (NioProcessor-29) Connection was not found for LVI6J72JECMZ2

Jean Reno
  • 153
  • 1
  • 2
  • 10

1 Answers1

0

If RTMPS did work for you before and now no longer does, it'd most likely be due to removal of SSL or TLS versions in the browser. To "possibly" continue using your installation, you're most likely going to have to upgrade to a newer Red5 version which has support for the TLS that the browser wants.

Paul Gregoire
  • 9,715
  • 11
  • 67
  • 131
  • I should add that whether or not Flash Player has removed support for older SSL/TLS versions also comes into play here. – Paul Gregoire Apr 21 '19 at 16:01
  • 2. I edited the post with more info ( i am using 1.10 so the latest red5 server now) . i am using RTMPS native but it seems red5 log indicate i am in non native rtmps . Could it be an issue ? I have used Chrome64_51.0.2704.84 with Flash version 21.0.0.242 . The issue is the same. 2. Wireshark indicates that TLS 1.2 is used and show Encypted Message Hanshake and then application data message as if TLS 1.2 is transmitting data. Then the next message is a TLS encryption alert. After that the communication stopped brutally. – Jean Reno Apr 23 '19 at 12:51
  • Non-native means RTMPTS if I remember correctly. Make sure your Tomcat SSL connector matches what FlashPlayer wants; TLS version / Ciphers.. – Paul Gregoire Apr 24 '19 at 15:19
  • The war which has red5 running is being run in Wildfly 15 (latest version). Do Chrome should work with rtmps native and flash ? IE and Chrome can load flash in my environement but i cannot load flash from Firefox for some reason. – Jean Reno Apr 25 '19 at 15:35
  • The war version of Red5 is not being maintained and has not been updated for 3+ years. If you are using Wildfly, make sure your SSL/TLS connector is properly configured for the Chrome you're targeting and then ensure you've pointing at the RTMPT servlet for requests, ie. non-native RTMPS. – Paul Gregoire Apr 26 '19 at 16:10