问题描述
我正在尝试通过 https 连接到 localhost,以便我可以使用 Service Worker。我尝试了许多解决方案,例如 this 等帖子中描述的 chrome 标志,但没有一个奏效。最后,我使用 OpenSSL 使自己成为证书颁发机构并签署了自己的证书。但是,尽管一切正常,Chrome(和其他浏览器)仍然拒绝了我的证书。
这是由于缺少主题替代名称。然后我添加了我的 IP 地址作为备用名称,但它也未被接受 - chrome 告诉我“域来自 [IP 地址]”,以及错误消息 ERR_CERT_COMMON_NAME_INVALID
我可以使用哪些其他主题替代名称来证明我在 localhost 上的身份? (或者,还有其他解决方案吗?)我将 Apache 与 XAMPP 一起使用。
解决方法
SAN 必须与您使用的 URL 中的域匹配。如果您使用 https://localhost
,那么必须有一个值为 localhost
的 DNS 类型的 SAN。如果您使用 https://127.0.0.1
,那么必须有一个值为 127.0.0.1
的 IP 类型的 SAN。不是正确类型的重要性,而不仅仅是值的重要性。
我使用 localhost 作为通用名称。根据我的理解,SAN 必须不同,但仍指同一个域...
没有。 CN 实际上是无关紧要的,如果给出 SAN,通常甚至不会查看(或者在 Chrome 的情况下:它永远不会查看 CN 并且始终需要 SAN)。所以只要确保 SAN 是正确的。