检查本地网络上的 TLS 证书、自签名证书和 CA

检查本地网络上的 TLS 证书、自签名证书和 CA

我对 SSL 和 TLS 证书几乎一无所知。抱歉。

这是我的公司要求我的:

  1. 他们需要在本地网络上放置一个服务器,以便全国各地的人们可以通过 VPN 访问。
  2. 他们希望该服务器使用 HTTPS 进行通信。
  3. 他们希望服务器拥有由认证 CA 创建的 TLS 证书。
  4. 他们告诉我该服务器是 Microsoft IIS 服务器。

我目前发现的情况是:

  1. 不可能拥有由认证 CA 为server.mydomain.local无法从互联网访问的内联网服务器创建 SSL 证书。
  2. 为该服务器获取 SSL 证书的唯一方法是自签名证书,但这些证书并不以 iOS 等设备的信任而闻名。iOS 讨厌自签名证书,它们基本上是 iOS 设备访问本地服务器。

我需要确认我是对的,如果不正确,如何解决这个将死问题。

谢谢

答案1

您说得对,公共 CA 只会向公共域名颁发证书(因为他们能够验证这些域名)。但是,您忽略了,这与服务器是否可公开访问并不一定有关,甚至与服务器是否具有公共 IP 地址也不一定有关。服务器不必public 才能拥有公共域名。

CA 仅关心验证 URL 中名称的所有权。一些CA(例如 Let's Encrypt)通常通过 HTTP 连接到服务器来实现此目的(尽管这不再是唯一的选择)。但许多其他 CA 允许您仅验证整个域的所有权(可能通过 Whois 记录),然后自由地为任何子域颁发证书,即使是没有 Web 服务器的子域,或没有任何可公开访问的内容的子域,甚至根本不存在的子域。

因此,我假设该公司已经有一个网站,因此有一个公共域名。您可以采取多种方式,具体取决于公司愿意接受的方式:

  • 您可以让服务器使用常规公共 IP 地址并像往常一样将其放入 DNS...然后让服务器拒绝所有未通过 VPN 建立的连接,例如,使用 Windows 防火墙或某些特定于 IIS 的设置。

    (大多数 VPN 系统可以配置为通过安全隧道路由任何 IP 地址范围,无论 IP 地址是“公共”还是“私有”。通过公司 VPN 路由公司的公共 IP 范围是正常的做法。)

  • 您可以创建一个指向内部 IP 地址的子域名 - 例如,server.corp.mydomain.com可以是指向 192.168.7.1 的公共子域名,这是一个只能通过 VPN 访问的私有 IP 地址 - 但这仍然不会阻止它颁发公开有效的 HTTPS 证书。

    (这不需要任何特殊的 DNS 设置,您实际上可以将域指向您想要的任何地址。)

  • 您可以将实际的 Web 服务器置于私有 IP 地址,但使用公共 IP 地址的“反向代理”前端服务器。反向代理可以处理基于 IP 的访问以及 SSO 或密码身份验证。它甚至可以代表真正的私有服务器处理基于 HTTP 的 Let's Encrypt 证书颁发。

    (我们使用此方法为一些生锈的旧 Web 应用程序提供安全的 HTTPS 访问 - 其中一个仍在 Server 2003 上运行并且根本无法处理现代浏览器,相反,反向代理提供了必要的 TLS 1.2 支持以及 SAML 身份验证。)

(还有其他选择。除了公共 CA,任何人都可以创建自己的 CA,并且大多数运行 Microsoft AD 的公司网络实际上都会有一个 CA——唯一的问题是让设备信任该 CA,但对于公司发行的 iPhone,这应该很容易通过公司使用的任何“移动设备管理”系统来完成。但不要告诉人们在个人系统上安装公司 CA...)

相关内容