# CN（Common Name，通用名称）是什么？

> CN 即通用名称，是证书主体中曾用来填写域名的属性；现代浏览器已忽略它，只按 SAN 扩展匹配域名。

Source: https://ssl.sh/zh/glossary/common-name/
Last updated: 2026-11-10

CN（Common Name，通用名称）是证书 [DN](https://ssl.sh/zh/glossary/distinguished-name/) 中的一个属性，写作 `CN=example.com`。早期 HTTPS 客户端拿访问的域名与 CN 比对，但 RFC 2818 早在 2000 年就把这种做法列为不推荐，改用 [SAN](https://ssl.sh/zh/glossary/san/) 扩展。Chrome 从 Chrome 58（2017 年）起不再回退检查 CN，现代浏览器都只按 SAN 匹配，很多 TLS 库也去掉了 CN 回退逻辑。

## 为什么重要
按 Baseline Requirements，CN 是可选字段；公网证书如果包含 CN，它的值也必须出现在 SAN 中。只把域名写在 CN 里的证书（手工生成的自签名证书最常见）会在浏览器中报 [NET::ERR_CERT_COMMON_NAME_INVALID](https://ssl.sh/zh/errors/net-err-cert-common-name-invalid/) 等错误。虽然错误名里有“COMMON_NAME”，修复方法却是把域名加进 SAN。很多旧教程只说“CN 填你的域名”，放到今天是不完整的。在宝塔面板或云厂商控制台申请证书时，填写的“绑定域名”最终都会写进 SAN。

## 例子
```bash
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` 访问。

## 相关术语

- [DN](https://ssl.sh/zh/glossary/distinguished-name/): DN 即可分辨名称，是由 C、O、CN 等属性组成的 X.500 风格结构化名称，用来标识 X.509 证书的主体和颁发者。
- [SAN](https://ssl.sh/zh/glossary/san/): SAN 即主体备用名称，是 X.509 证书中列出其适用的所有域名、IP 地址等身份的扩展，客户端按它校验主机名。
- [X.509](https://ssl.sh/zh/glossary/x509/): X.509 是 ITU-T 制定的公钥证书标准格式，其互联网配置规范 RFC 5280 规定了 TLS 所用证书的结构和验证方法。
- [CSR](https://ssl.sh/zh/glossary/csr/): CSR 是证书签名请求，包含申请者的公钥和希望写入证书的身份信息，用私钥签名后提交给 CA 以申请证书。
- [通配符证书](https://ssl.sh/zh/glossary/wildcard-certificate/): 通配符证书是名称以星号开头（如 *.example.com）、可匹配该域名下任意一级子域名的 TLS 证书。
- [多域名证书](https://ssl.sh/zh/glossary/multi-domain-certificate/): 多域名证书是在 SAN 扩展中列出多个不同主机名、让一张证书同时保护多个域名的 TLS 证书。
