GoogleChrome / lighthouse

Automated auditing, performance metrics, and best practices for the web.
https://developer.chrome.com/docs/lighthouse/overview/
Apache License 2.0
28.33k stars 9.36k forks source link

Add support of TLS 1.3 to Best Practices #10688

Open CymruUSA opened 4 years ago

CymruUSA commented 4 years ago

After working on my own site trying to not only improve my lighthouse score but to provide a better experience all round, I started to look into my website/pwa security. I had TLS1.2 enabled and had deprecated 1.1, 1.0 and SSL but after a little digging, I realized that I didn't have TLS1.3 support. Given that 1.2 is over 10 years old and 1.3 is now well and truly the future, it would make sense to add it to the Best Practices section of the Lightouse Report.

TY

patrickhulce commented 4 years ago

Thanks for filing @CymruUSA!

This is a great idea and it looks like we already have the protocol support to do it too with Security.CertificateSecurityState. A great candidate for our new trust and safety category perhaps @Beytoven? :)

patrickhulce commented 4 years ago

Seems super useful and in scope for recent safety initiatives.

connorjclark commented 4 years ago

I think we should approach CDT first, see if this should be in issues panel.

patrickhulce commented 4 years ago

see if this should be in issues panel.

Does that mean we should not support it in Lighthouse? If we have everything needed emitted by protocol already I'm not sure I understand the connection of whether it should also be in issues.

connorjclark commented 4 years ago

Unclear :) we're gonna collect a bunch of security-adjacent audit ideas we could do and talk to devtools folks about how to determine what should be in devtools & consumed in LH via issue panel / what should be done in LH

rik commented 4 years ago

I think TLS 1.3 could be listed in the performance section as well given the roundtrips saved compared to previous versions.

connorjclark commented 3 years ago

roundtrips saved

@patrickhulce does this seem like something we can model in Lantern?

patrickhulce commented 3 years ago

@patrickhulce does this seem like something we can model in Lantern?

Yep we could! It's basically what we do with the preconnect audit today. If we had this extra TLS information from the protocol, we could actually improve our lantern estimates because everything is assumed to be configured correctly with TLS false start today

https://github.com/GoogleChrome/lighthouse/blob/fb18dfe70e89d752a46deabe2de8a21b414ceb7e/lighthouse-core/lib/dependency-graph/simulator/tcp-connection.js#L145-L146

connorjclark commented 3 years ago

Some notes on this topic ...

image https://almanac.httparchive.org/en/2020/security#protocol-versions

My initial question when researching this was, how can we detect if False Start works for a server? Does a server need to be configured for it to work, or is it something a browser does? From the links above, I'm pretty sure that a site does not need to do anything beyond using TLS >= 1.2.

My next question is the same, but for TCP Fast Open–and also, how would it look to model that in lantern too... but I have to leave it here for now.


Security.CertificateSecurityState has a modernSSL property, which caught my eye. [code] (https://source.chromium.org/chromium/chromium/src/+/master:chrome/browser/devtools/protocol/security_handler.cc;l=132;drc=073e74ade285c0c22ef01bccdf260854d7b1aa85) false if TLS < 1.2, or for various other reasons not important to our discussion here.