Looking at a dataset of 350 million ssl connections inspires some initial questions:

who made the certs

what crypto powers it

what sort of life time

Let’s Encrypt makes certs for almost 30% of web domains

The server you’re reading this on uses automated certs from Let’s Encrypt—they are more common on a domain than any other registrar! Over 47 million domains are protected with Let’s Encrypt certs, almost 30%.

Out of 352.3M domains, the dataset has 158.7M connections that proceeded far enough to provide a certificate with an issuer’s Distinguished Name. The top dozen are:

47.2M Let’s Encrypt 28.9M DigiCert 13.8M Comodo 10.1M Google 7.2M GoDaddy 7.1M Sectigo 7.0M cPanel 6.1M GlobalSign 3.4M CloudFlare0 2.5M Amazon 2.1M (anonymous self-signed) 1.1M Plesk

Let’s Encrypt certs expire after 3 months, which pushes a regular update cycle, but there are still a number of ancient security practices around the web today.

Almost 3 million domains connected with RC4 or 3DES

Of the hundred and sixty million connections, over a hundred and fifty million connections used Elliptic-Curve Diffie Hellmann and AES. The next most popular cipher suite was RSA with RC4, and almost 1.8% of connections used RC4 or 3DES, with DES on half a dozen domains!

120457325 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 16750820 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 13808304 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 2393679 TLS_RSA_WITH_RC4_128_SHA 1768423 TLS_RSA_WITH_AES_256_CBC_SHA 1653084 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 1397638 TLS_RSA_WITH_AES_128_CBC_SHA 373383 TLS_ECDHE_RSA_WITH_RC4_128_SHA 157929 TLS_RSA_WITH_3DES_EDE_CBC_SHA 17663 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 4041 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 2794 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 458 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 205 TLS_RSA_WITH_RC4_128_MD5 115 TLS_DH_RSA_WITH_AES_128_CBC_SHA 28 unknown 6 TLS_RSA_WITH_DES_CBC_SHA 1 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

Note that the latest Chrome cannot load RC4 but it does load 3DES. (Thanks, badssl.com !)

By default, go ’s TLS package doesn’t use TLS 1.3, and it seems like the dataset was run with a zgrab that doesn’t use TLS 1.3 (perhaps this is worth updating for the next run). Most domains’ servers were using TLS 1.2, the next latest, but over 4 million were using TLS 1.0.

154500876 TLSv1.2 4263887 TLSv1.0 19352 TLSv1.1 1781 SSLv3

Currently, TLS 1.0 is still allowed in Chrome.

Hundreds of thousands of domains’ certs expire after 2099

Current SSL cert lifetime best practices put lifetimes at 90 days.

But best practices do not forbid alternative practices!

Certs are in the wild with millenium-scale lifetimes, like these bristlecone pines.

(Rick Goldwaser from Flagstaff, AZ, USA [CC BY 2.0], via Wikimedia Commons)

Thousands of certs served expire after the year 3000

Over 3K certs served don’t expire this millenium. Over 8K certs expire after 2200. Over 200K certs expire after 2100. (Over 1.5M expire in the 2040s alone!)

Over a hundred thousand certs alone expire in 2117, and over a thousand expire in 3017. Perhaps something in 2017 inspired confidence in long-lived certs?

Millions of certs served have expired

Almost 1.6M domains had a cert that had recently expired (in July, the month of the scan). Almost 3.7M domains had a cert that expired in 2019 (the year of the scan). Over 9.6M domains had a cert that expired in the 2010s!

Hundreds of certs served are not yet valid

And what’s more, over a hundred thousand certs expire before their validity date!

Try this at home

Let me know what you think! Analyze this dataset and share your new findings!