正如标题所说,我正在为一个网站添加服务工作者,并且为了使其正常工作,它们需要有效的SSL证书。我一直在使用自签名证书将本地开发服务器传递给https,尽管Chrome一直显示“不安全”消息,但我一直忽略到现在。我在这里看到了很多类似的问题(使用localhost),但没有与我的确切设置匹配(在localhost上使用虚拟主机),而且我尝试过的所有方法都没有起作用。
我会描述我的设置:
我会描述我的设置:
- 这是为了本地开发机器。我不需要非常安全的东西。我只需要Chrome信任它。
- 我的开发堆栈是在Windows 10上运行PHP和ColdFusion的Apache。
- 我本地设置了多个站点(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的“不安全”消息。)
- 缺少主题备用名称:此站点的证书不包含一个包含域名或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? 您还需要将自签名证书放置在适当的信任存储中。 - jww