如何在 Chrome 信任的本地 Windows 虚拟主机开发机器上创建/安装自签名 SSL 证书? [复制]

Posted

技术标签:

【中文标题】如何在 Chrome 信任的本地 Windows 虚拟主机开发机器上创建/安装自签名 SSL 证书? [复制]【英文标题】:How do I create/install self-signed SSL cert on local Windows virtualhost dev machine that Chrome will trust? [duplicate] 【发布时间】:2017-10-26 11:00:09 【问题描述】:

正如标题所说。我开始将 Service Worker 添加到站点,并且为了工作,他们需要有效的 SSL 证书。我已经让我的本地开发服务器使用自签名证书通过 https 交付了一段时间,尽管 Chrome 给出了我直到现在才忽略的“不安全”消息。我在这里看到了很多类似的问题(使用 localhost),但没有与我的确切设置匹配(使用 localhost 上的虚拟主机),而且我尝试过的任何方法都没有奏效。

我将描述我的设置:

这适用于本地开发机器。我不需要任何超级安全的东西。我只需要 Chrome 信任它。 我的开发堆栈是 Windows 10 上的 Apache(运行 php 和 ColdFusion)。 我在本地 (127.0.0.1) 使用 Apache 虚拟主机设置了多个站点,例如: https://michael.domain1.com(www.domain1.com 的本地开发副本) https://michael.domain2.com(www.domain2.com 的本地开发副本) 等等…… 为了让 https 能够在每一个上运行,我使用了 Shining Light Productions 的 Win64 OpenSSL v.1.1.0e 安装程序,并在我的 Apache httpd-vhosts.conf 中为每个域设置了一个证书。 我使用以下创建我的证书: openssl req –x509 –nodes -sha256 –days 3650 –newkey rsa:2048 –keyout michael.domain1.key –out michael.domain1.crt -subj "/C=US/ST=Michigan/L=SomeCity/O=CompanyName/OU=Dev/CN=michael.domain1.com" 我打开了我的虚拟主机正在使用的 .crt 文件并将其安装到 Windows 受信任的根证书颁发机构。 (到目前为止,这一切都运行良好。我可以通过 https://michael.domain1.com 访问该网站,但我看到 Chrome 的“不安全”消息。)

在 Chrome 开发工具安全选项卡中,我有两个错误:

缺少主题备用名称:此站点的证书不包含包含域名或 IP 地址的主题备用名称扩展。 如何添加这个?而且对于我的设置,我用什么来获得价值?应该是 michael.domain1.com 吗? 证书错误:站点的证书链存在问题 (net::ERR_CERT_COMMON_NAME_INVALID)。 michael.domain1.com 的值不正确吗?我是否使用上面的 openssl 命令将其添加到正确的位置?

谢谢。

【问题讨论】:

CN=www.example.com 可能是错误的。主机名始终位于 SAN 中。如果它出现在 CN 中,那么它也必须出现在 SAN 中(在这种情况下您必须列出两次)。有关更多规则和原因,请参阅 How do you sign Certificate Signing Request with your Certification Authority 和 How to create a self-signed certificate with openssl? 您还需要将自签名证书放在适当的信任库中。 【参考方案1】:

我终于明白了!这个somewhat buried comment by Drakes 帮助我使用 .sh 文件生成正确的证书文件。我不完全确定它最终为我做了什么,但我最终得到的命名文件与以前略有不同。我现在有 michael.domain1.com.cer 而不是 michael.domain1.cer。新的证书文件修复了 Chrome Dev Tools 安全选项卡中的 Subject Alternative Name Missing 和 ERR_CERT_COMMON_NAME_INVALID 错误,但我确实有一个关于它是不受信任的权威的新错误。然后,我使用 Windows 和 Chrome 本身以几种不同的方式将相同的文件导入受信任的根权限(您可以在设置 > 高级 > 管理器证书 > 导入下从 Chrome 导入它们)。在我最后一次重新启动 Apache 并关闭并重新打开 Chrome 后,一切正常。

【讨论】:

以上是关于如何在 Chrome 信任的本地 Windows 虚拟主机开发机器上创建/安装自签名 SSL 证书? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Linux Chrome 和 Firefox 上信任自签名 localhost 证书

如何信任 Windows Powershell 中的证书

解决win7系统chrome证书错误问题,证书无效,不受信任的网站问题 - windows没有足够信息不能验证该证书

MacOS 上的 Chrome 停止信任自签名 CA 颁发的证书

解决Chrome 70版本以后谷歌不再信任赛门铁克证书问题

我已经遵循了受信任的网络活动的所有步骤,但使用 chrome dev 仍然可以看到地址栏。如何在受信任的网络活动中获取 webview?