Last Updated: 2022-07-06 13:32:19 UTC
by Johannes Ullrich (Version: 1)
x509 certificates, as they are used for TLS, can include multiple "Subject Alternative Names" (SANs) to be used with various websites. Experimenting with numerous ways to detect TLS anomalies, I looked at my Zeek x509 logs to summarize how many names are present in certificates.
My Zeek logs are stored in JSON format to make it easier to send them to Elasticsearch. But I also prefer the jq over the zeek native tool zeek-cut (personal preference).
I used this command line to summarize the logs:
zcat x509.log | jq '."san.dns" | length' | sort | uniq -c | sort -n
Based on this methodology, the maximum number of SANs per certificate is close to 500, but most are using 100 hostnames or less.
But the real question: What is normal?
It turns out there is no real "hard" limit. The RFCs leave it up to the implementation to define how many SANs to allow . Different certificate authorities implement different limits:
Let's Encrypt  , GoDaddy: 100
Comodo: 1,000 (some older references appear to state 2,000 are allowed)
So, in short: it appears that 100 is "safe." For larger numbers, you may run into implementation-specific issues.