给内网地址签了一张证书,用域名访问正常,直接敲 IP 打开报 NET::ERR_CERT_COMMON_NAME_INVALID。日志里能对上时间点,这种反而好排。
证书的 SAN 里只写了域名,没写 IP,浏览器按访问地址去比对,找不到就判为不匹配。CN 字段现在基本不参与校验。这一点先确认清楚,后面就不用反复试。
openssl req -new -key server.key -out server.csr -addext 'subjectAltName=DNS:intra.example.com,IP:10.0.0.12'
「IP 证书不匹配」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
处理上按这个顺序:签证书时把 IP 一并写进 subjectAltName,格式用 IP:,不是 DNS:;已经有证书的重新签一张,别想着改 CN 蒙过去;内网长期用 IP 访问的,在本地 hosts 里绑个域名,证书只签域名。
结果对不对很好判断,用 IP 直接访问时不再报名称不匹配,证书详情里能看到 IP 条目。
