11

假设我有一个 Web 应用程序,可以通过http://webapp.mydomain.com外部访问,内部通过http://webapp.intranetservername/ 访问

我需要两个 SSL 证书吗?或者可以使用相同的 SSL 证书吗?

4

3 回答 3

8

您将需要两个 SSL 证书,一个用于 Intranet 服务器的证书必须是自签名的,因为禁止证书颁发机构为内部域签署证书(因为无法验证此类域的所有权)。

通常可以创建对多个域有效的单个 SSL 证书(通过使用主题备用名称扩展)。但是,CA 不能签署一个,除非他们可以验证它声称对其有效的所有域。

于 2013-08-14T15:38:36.520 回答
6

原则上,您可以拥有一个证书,其中包含 和 的两个主题备用webapp.mydomain.com名称webapp.intranetservername。在实践中,这是不现实的,因为没有 CA 会向 发布.intranetservername内容,除非它也是一个正确的公共域名。

一般来说,如果.intranetservername不是注册域,没有CA会为其颁发证书,所以无论如何你都必须使用自己的CA。

  • 如果您可以期望两种类型的客户端(内部和外部)都信任您自己的 CA,那么您当然可以使用该 CA 颁发带有两个 SAN 的证书。

  • 如果您期望不同类型的用户(仅信任默认的 CA 捆绑包或也信任您的 CA),则必须使用两个证书,每个证书一个颁发。您可能还需要将它们绑定到单独的 IP 地址(但 LAN 上额外的内部 IP 地址的可用性不一定是问题)。

更根本的是,无论您是在内部还是外部访问它,您是否有充分的理由使用两个不同的名称调用在同一台机器上运行的同一个 Web 应用程序?为什么内网内的人不能通话webapp.mydomain.com

我认为这可能是为了以某种方式提高安全性,但如果它是同一台机器,无论如何它都会在两个网络上,所以我不确定这种名称分离带来了哪些安全性改进。

如果您真的想要单独的名称,您可以将它们都放在您的外部域(例如webapp.mydomain.comintranet.mydomain.com)上,并拥有由知名 CA 为两者颁发的证书(我仍然不确定在同一台机器,但)。事实上,证书验证仅基于名称,您可以轻松地让您的 DNS 服务器指向intranet.mydomain.com一个私有 IP 地址(例如10.1.1.1)。来自外部的人将无法访问该地址,仅仅是因为它不会被路由,但它会在您的 Intranet 中正常工作(假设 Intranet 上的机器能够发出 DNS 请求,某些环境会阻止此请求)。

于 2013-08-15T11:50:38.880 回答
2

您将需要两个,因为 SSL 认证适用于域名,并且您在那里有两个域名。

您可以在两者上使用相同的方法,但大多数浏览器中都会显示一条错误消息,警告用户证书不真实。

您可以通过对 Intranet 站点进行自我认证并将自我认证分发到您的所有员工浏览器来规避必须向 Verisign 注册的成本影响。

根据企业的规模和将访问“webapp.intranetservername”的用户数量,这可能会或可能不会比简单地使用 Verisign 注册两个域更便宜和更容易。

于 2013-08-14T15:11:47.450 回答