I was curious to compare the failing Client Hello from the camera with a working Client Hello from my local email relay server to GMail. See attachment.
As you see they are extremely similar. Especially notice that blue highlighting. Both working and non-working Hellos specify
Version: TLS 1.0 (0x0301) at the point previous mentioned. So, this can't very well be the problem, can it.
Furthermore, in response to the working Client Hello the GMail server is selecting this:
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f). Notice that both working and non-working Hellos offer that Cipher Suite. So, that can't be the problem either.
The working Client Hello does submit a TLS SessionTicket. But, that is only because it has cached information on a previously successful TLS session. You can read about how that works here:
https://blog.filippo.io/we-need-to-talk ... n-tickets/. So, it seems that can't be the problem either!
The one intriguing thing I do see is that the camera is offering this in it's list of Cipher Suites
TLS_FALLBACK_SCSV (0x5600)... and the working Client Hello does NOT offer that. You can read about this signalling service here:
https://tools.ietf.org/html/rfc7507.
It seems that the significant paragraph of that RFC might be this:
o If TLS_FALLBACK_SCSV appears in ClientHello.cipher_suites and the
highest protocol version supported by the server [v1.3 as shown in my first post] is higher than
the version indicated in ClientHello.client_version,
the server
MUST respond with a fatal inappropriate_fallback alert (unless it
responds with a fatal protocol_version alert because the version
indicated in ClientHello.client_version is unsupported). The
record layer version number for this alert MUST be set to either
ClientHello.client_version (as it would for the Server Hello
message if the server was continuing the handshake) or to the
record layer version number used by the client.
As far as 'blame' goes, two things there:
1. Amcrest is probably correct. Google likely did change something... that something being to upgrade their SMTP servers to support SSL/TLS V1.3... which is a perfectly responsible thing to do.
2. Unfortunately, it appears that with
TLS_FALLBACK_SCSV (0x5600) in the list of Cipher Suites supported by the camera the GMail servers are now
obligated to respond with a fatal alert when connections are attempted using any lesser TLS version.
So, to my fur-brain it seems like maybe the Amcrest camera should just stop listing
TLS_FALLBACK_SCSV (0x5600) in it's list of supported Cipher Suites. But... the RFC probably offers some better solution. I have read very little of it so far.
If not... then it seems we've come full circle to my original guess which was that Amcrest should upgrade the SMTP client to support SSL/TLS V1.3. That way the cameras could continue to support the fallback signalling service
TLS_FALLBACK_SCSV (0x5600).