CN (Common Name,通用名称)
定义
CN 即通用名称,是证书主体中曾用来填写域名的属性;现代浏览器已忽略它,只按 SAN 扩展匹配域名。
CN(Common Name,通用名称)是证书 DN 中的一个属性,写作 CN=example.com。早期 HTTPS 客户端拿访问的域名与 CN 比对,但 RFC 2818 早在 2000 年就把这种做法列为不推荐,改用 SAN 扩展。Chrome 从 Chrome 58(2017 年)起不再回退检查 CN,现代浏览器都只按 SAN 匹配,很多 TLS 库也去掉了 CN 回退逻辑。
为什么重要
按 Baseline Requirements,CN 是可选字段;公网证书如果包含 CN,它的值也必须出现在 SAN 中。只把域名写在 CN 里的证书(手工生成的自签名证书最常见)会在浏览器中报 NET::ERR_CERT_COMMON_NAME_INVALID 等错误。虽然错误名里有“COMMON_NAME”,修复方法却是把域名加进 SAN。很多旧教程只说“CN 填你的域名”,放到今天是不完整的。在宝塔面板或云厂商控制台申请证书时,填写的“绑定域名”最终都会写进 SAN。
例子
openssl x509 -in cert.pem -noout -subject -ext subjectAltName
如果只看到 subject=CN=example.com,却没有 SAN,或 SAN 中缺少 DNS:example.com,浏览器就会拒绝这张证书。
常见误区
- CN 必须与域名一致。 现代客户端只看 SAN;CN 对得上而 SAN 对不上,照样报错。
- ERR_CERT_COMMON_NAME_INVALID 说明 CN 写错了。 它表示访问的域名不在证书的 SAN 中,例如证书只签了
example.com,却用www.example.com访问。