我的 IIS 服务器上托管了一个网站,我可以通过 访问它http:localhost
。我制作了一个自签名证书并将其添加到网站,然后可以通过 访问它https:\\localhost
。我希望同一网络中的其他设备可以访问该网站,但我想要它的 https 版本。为了实现这一点,可以做些什么?对此有什么可能的解决方案?
我想到了一个解决方案是使用托管机器的 IP 地址,例如:https:\\176.16.5.136
,但使用自签名证书可以解决这个问题,或者也许我做错了。
以下是我执行的步骤:
- 生成自签名证书
- 将其导入到根 CA
- 当我查看证书时,它显示“此证书没有问题”。
- 将其绑定到 IIS 服务器上的本地站点,端口为 443,用于 https
IIS 绑定:
输出:
答案1
没有理由https:\\192.168.1.4
无法通过 LAN 工作。您可能需要443
在服务器的防火墙中允许端口。
使用自签名证书可能会导致某些浏览器出现问题,但通常可以强制通过。
答案2
证书有不同类型对于“DNS 域名”和“IP 地址”名称。创建证书时,您必须正确指定类型,因为浏览器实际上会注意这一点,并且屏幕截图中非常令人困惑的错误消息来自这样一个事实:即使“名称”是正确的(即它与 URL 匹配),但由于被标记为错误类型(由于使用了该-DnsName
选项)而被拒绝。
不幸的是,PowerShell 似乎没有-IpAddress
选项或任何类似的东西。
虽然有方法可以在 CLI(certutil、openssl)中创建此类证书,但我会大概建议使用西卡为此目的。(请参见其网页上大约 2:20 处的视频,其中添加了“主题替代名称”——请注意名称类型列表。)
(事实上,我建议使用 XCA 来创建一个实际 CA而不是一堆单独的自签名 TLS 证书。拥有自己的 CA 意味着您的用户只需安装单个 CA 证书,而不必安装您最终可能创建的每个 TLS 证书。)
更好的办法是为网站提供一个实际的域名 - 要么是许多公司所拥有的内部域名,要么是仅指向内部 IP 地址的真实互联网域名。