CN(Common Name,通用名称) 是 X.509 证书 Subject(主体 / 持有者)字段里的核心属性,属于可识别名(DN, Distinguished Name) 的关键部分。
一、专业定义
- 全称:
commonName,缩写 CN - 标准:X.509 v3 / RFC 5280
- 位置:在证书 Subject 或 Issuer(颁发者)DN 中
- 长度:最大 64 字节(ASCII)
二、SSL/TLS 证书中的作用(历史 vs 现代)
1. 传统作用(已废弃)
-
唯一指定主域名 / FQDN
- 例:
CN=www.example.com、CN=example.com
- 例:
-
浏览器唯一验证域名匹配的字段
-
限制:只能填 1 个名称,不支持多域 / IP / 邮箱
2. 现代地位(2017+ 浏览器标准)
- SAN 优先:现代浏览器(Chrome/Firefox/Safari)只认 SAN 扩展
- CN 仅兼容保留:即便 CN 正确,SAN 不含访问域名 → 直接报错
- 通配符:
CN=*.example.com仍可用,但必须同步写入 SAN
三、Subject DN 完整结构(示例)
plaintext
C=CN, ST=Guangdong, L=Shenzhen, O=Example Ltd, OU=IT, CN=www.example.com
- C=Country:国家(ISO 3166-1)
- ST=State/Province:州 / 省
- L=Locality:城市 / 地区
- O=Organization:企业 / 组织名
- OU=Organizational Unit:部门
- CN=Common Name:主机名 / 域名(SSL 场景)
四、关键规范(必须遵守)
-
纯域名:不能带
https://、端口、路径- ❌
https://www.example.com、www.example.com:443 - ✅
www.example.com
- ❌
-
精确匹配:
example.com≠www.example.com -
通配符:
*.example.com仅匹配一级子域(a.example.com) -
字符集:ASCII,避免特殊符号
五、CN vs SAN(核心区别)
表格
| 特性 | CN (Common Name) | SAN (Subject Alternative Name) |
|---|---|---|
| 数量 | 仅 1 个值 | 多值:N 个域名 / IP / 邮箱 |
| 现代支持 | 已废弃(浏览器忽略) | 强制要求 |
| 用途 | 单域名、兼容 | 多域、通配、IP、多服务 |
| 证书类型 | 单域名证书 | SAN/UCC 多域证书 |
六、CSR 生成示例(OpenSSL)
bash
运行
openssl req -new -key server.key -out server.csr \
-subj "/C=CN/ST=Shanghai/L=Shanghai/O=Org/OU=Dev/CN=www.example.com"
七、总结(专业要点)
- CN 是传统单域名标识,现代 HTTPS 已被 SAN 完全替代。
- 合规证书:CN 填写主域名,且必须在 SAN 中重复包含。
- 部署原则:只信任 SAN,不依赖 CN。