While doing some research with SSL certificates, I found some weird certificates containing nul bytes in their Subject field. One example is www.refah - bank.ir (did the Iranian government fake this CA? It looks very similar to a Spanish CA except for location...).
Another example is mcafee.com which looks more trustworthy to me. They have two different IP addresses for mcafee.com and www.mcafee.com, the certificate also differs. What surprised me was that such a company uses certificates containing nul bytes in their Subject field:
Data:
Version: 3 (0x2)
Serial Number:
c8:e6:3c:67:a8:7f:38:ba:c9:ab:06:ef:4e:68:67:0d
Signature Algorithm: sha1WithRSAEncryption
Issuer: O=Network Associates, OU=NAI Certificate Services, CN=NAI SSL CA v1
Validity
Not Before: Aug 26 20:36:38 2008 GMT
Not After : Apr 26 09:28:50 2019 GMT
Subject: C=US, ST=Texas, L=Plano, O=McAfee, Inc, OU=IIS-Plano, CN=\x00*\x00.\x00m\x00c\x00a\x00f\x00e\x00e\x00.\x00c\x00o\x00m
Opening mcafee.com correctly rejected the certificate as the wildcard does not match against this. Out of curiosity, I edited my host file and made foo.mcafee.com (and www.) point to the IP address 161.69.13.40 (mcafee.com).
I would expect such a certificate to be rejected, but Firefox and Chromium both accept this certificate.
I found another website that has nul bytes in the CN and is still "trusted": https://www.digiturk.com.tr
What is happening here?