正如我在对主机名/IP 与证书的替代名不匹配的回答中指出的那样,当请求的主机名作为证书的公用名 (CN) 给出时,Node.js 确实成功地验证了主机名上的 TLS 证书。
Request : localhost
Common Name: localhost
=> Success
现在,当我尝试对 IP 地址进行相同操作时,验证失败:
Request : 192.168.178.31
Common Name: 192.168.178.31
=> Fail
仅当我将 IP 地址指定为主题备用名称 (SAN) 时才有效:
Request : 192.168.178.31
Common Name : 192.168.178.31
Subject Alternative Name: 192.168.178.31
=> Success
如创建证书时IP地址作为主机名(CN)的答案中所述?(HTTPS 主机名错误:应该是 <ipAddress>) ,
不建议在证书中使用 IP 地址 [...]。
作为替代方案,在如何解决 SSL 证书服务器名称/我可以使用 keytool 添加替代名称的答案中建议使用它吗?将 IP 地址添加为 SAN(这又在 Node.js 中工作)。
现在我的问题是:不推荐并不意味着错误或禁止。除了不建议Node.js 不支持 CN 中的 IP 地址之外,是否有任何具体原因,或者为什么如果这样做会带来风险(安全性,无论如何,......)?