如何在本地Windows虚拟主机开发机上创建/安装自签名SSL证书,使Chrome信任?

6
正如标题所说,我正在为一个网站添加服务工作者,并且为了使其正常工作,它们需要有效的SSL证书。我一直在使用自签名证书将本地开发服务器传递给https,尽管Chrome一直显示“不安全”消息,但我一直忽略到现在。我在这里看到了很多类似的问题(使用localhost),但没有与我的确切设置匹配(在localhost上使用虚拟主机),而且我尝试过的所有方法都没有起作用。
我会描述我的设置:
  • 这是为了本地开发机器。我不需要非常安全的东西。我只需要Chrome信任它。
  • 我的开发堆栈是在Windows 10上运行PHP和ColdFusion的Apache。
  • 我本地设置了多个站点(127.0.0.1)与Apache虚拟主机一起使用,例如:
  • 为了使每个站点的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 Dev Tools的安全选项卡中,我有两个错误:
  • 缺少主题备用名称:此站点的证书不包含一个包含域名或IP地址的主题备用名称扩展。
    • 我该如何添加它?但是对于我的设置,我应该使用什么值?它应该是michael.domain1.com吗?
  • 证书错误:该站点的证书链存在问题(net::ERR_CERT_COMMON_NAME_INVALID)。
    • michael.domain1.com不是正确的值吗?我是否在上面的openssl命令中添加了正确的位置?
谢谢。

1
CN=www.example.com 可能不正确。主机名始终在 SAN 中。如果它出现在 CN 中,则必须在 SAN 中出现两次(在这种情况下,您必须将其列出两次)。更多规则和原因,请参见 How do you sign Certificate Signing Request with your Certification AuthorityHow to create a self-signed certificate with openssl? 您还需要将自签名证书放置在适当的信任存储中。 - jww
1个回答

1

我终于搞定了!这个被Drakes埋的评论帮助我使用.sh文件生成了正确的证书文件。最后我不太确定是什么起了作用,但我最终得到了与之前略有不同命名的文件。现在我有了michael.domain1.com.cer而不是michael.domain1.cer。新的证书文件解决了Chrome Dev Tools安全选项卡中的Subject Alternative Name Missing和ERR_CERT_COMMON_NAME_INVALID错误,但我遇到了一个新的关于它是不受信任的授权机构的错误。然后我用Windows和Chrome本身将同样的文件以几种不同的方式导入到Trusted Root Authority中(您可以在Chrome的“设置”>“高级”>“管理证书”>“导入”下导入)。最后我重新启动了Apache并关闭并重新打开了Chrome,一切正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接