DN (可分辨名称,Distinguished Name)
定义
DN 即可分辨名称,是由 C、O、CN 等属性组成的 X.500 风格结构化名称,用来标识 X.509 证书的主体和颁发者。
DN(Distinguished Name,可分辨名称)由一串相对可分辨名称(RDN)组成,每个 RDN 是“属性类型 = 值”。常见属性有国家(C)、省份(ST)、城市(L)、组织(O)、部门(OU)和 通用名称(CN)。每张 X.509 证书都有颁发者 DN 和主体 DN,构建证书链时,就是拿一张证书的颁发者 DN 去匹配上级证书的主体 DN。
为什么重要
在 TLS 服务器证书中,只有 OV 和 EV 证书的主体 DN 才真正标识证书归属,因为 CA 会核实其中的组织字段;DV 证书的主体通常只有一个 CN,域名实际写在 SAN 扩展里。生成 CSR 时,无论填了多少公司信息,DV 证书都会忽略;Baseline Requirements 也已不再允许公网 TLS 证书包含 OU 字段。在阿里云、腾讯云申请 OV 证书时,填写的组织名称需要能与工商登记等官方信息对应,因为 CA 会核验并把它写进 O 字段。颁发者 DN 则在任何证书里都很重要,客户端正是靠它找到链上的下一张证书。
例子
openssl req -new -key example.com.key -out example.com.csr \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Example Ltd/CN=example.com"
openssl x509 -in cert.pem -noout -subject -issuer -nameopt RFC2253
RFC 2253 格式的输出顺序是反的,最具体的属性在前,例如 CN=example.com,O=Example Ltd,...。
常见误区
- 浏览器拿域名和 DN 比对。 浏览器只看 SAN 扩展,DN 里的 CN 不参与域名匹配。
- CSR 里填什么,证书里就有什么。 最终主体由 CA 决定,DV 证书会丢弃未经验证的组织字段。