I am trying to write my own web server in Java 8, and i am running into a very odd problem. Whenever i make an SSL connection with Chrome, it works just fine. When i try with Firefox (59.0.2), i was having connection problems, but only with cipher suites that use GCM. It seemed that after the SSL handshake, the request from the browser was never sent. Using wireshark, i saw that Firefox was sending Application Data in middle of the SSL handshake: From wireshark:
C = Client
S = Server
C —> S Client Hello
C <— S Server Hello, Certificate, Server Key Exchange, Server Hello Done
C —> S Client Key Exchange, Change Cipher Spec, Hello Request, Hello Request
C —> S Application Data
C <— S Change Cipher Spec
C <— S Hello Request, Hello Request
To be sure I was not misunderstanding, I checked this out with Chrome, and with Firefox without GCM cipher suites, and none of them had Application Data sent in middle of the handshake. I checked other sites, like google.com, cnn.com, etc. and they are using GCM cipher suites without any problems on Firefox, so obviously this is a problem on my side.
Java 8 does not support ALPN, so it is not a TLS False Start. Any ideas what would cause the specific problem with Firefox and not with Chrome?