使托管在 IIS 服务器中的网站使用 https 并在内联网内访问它

使托管在 IIS 服务器中的网站使用 https 并在内联网内访问它

我的 IIS 服务器上托管了一个网站,我可以通过 访问它http:localhost。我制作了一个自签名证书并将其添加到网站,然后可以通过 访问它https:\\localhost。我希望同一网络中的其他设备可以访问该网站,但我想要它的 https 版本。为了实现这一点,可以做些什么?对此有什么可能的解决方案?

我想到了一个解决方案是使用托管机器的 IP 地址,例如:https:\\176.16.5.136,但使用自签名证书可以解决这个问题,或者也许我做错了。

以下是我执行的步骤:

  1. 生成自签名证书
  2. 将其导入到根 CA
  3. 当我查看证书时,它显示“此证书没有问题”。
  4. 将其绑定到 IIS 服务器上的本地站点,端口为 443,用于 https

IIS 绑定:

捆绑

输出:

火狐

答案1

没有理由https:\\192.168.1.4无法通过 LAN 工作。您可能需要443在服务器的防火墙中允许端口。

使用自签名证书可能会导致某些浏览器出现问题,但通常可以强制通过。

例如 IIS 配置 - 为端口 443 设置 HTTPS 绑定

答案2

证书有不同类型对于“DNS 域名”和“IP 地址”名称。创建证书时,您必须正确指定类型,因为浏览器实际上会注意这一点,并且屏幕截图中非常令人困惑的错误消息来自这样一个事实:即使“名称”是正确的(即它与 URL 匹配),但由于被标记为错误类型(由于使用了该-DnsName选项)而被拒绝。

不幸的是,PowerShell 似乎没有-IpAddress选项或任何类似的东西。

虽然有方法可以在 CLI(certutil、openssl)中创建此类证书,但我会大概建议使用西卡为此目的。(请参见其网页上大约 2:20 处的视频,其中添加了“主题替代名称”——请注意名称类型列表。)

(事实上​​,我建议使用 XCA 来创建一个实际 CA而不是一堆单独的自签名 TLS 证书。拥有自己的 CA 意味着您的用户只需安装单个 CA 证书,而不必安装您最终可能创建的每个 TLS 证书。)

更好的办法是为网站提供一个实际的域名 - 要么是许多公司所拥有的内部域名,要么是仅指向内部 IP 地址的真实互联网域名。

相关内容