我在 Active Directory 域中拥有两台服务器。两台服务器都有在 Tomcat 中运行的应用程序。我正在为这两台服务器订购 PKI 证书。
这些服务器是 AD 域“ourInternalNetwork.com”的成员。此域中的大多数系统都无法从公共互联网访问。这两台服务器将可从‘Net’访问。
由于政治原因,我们没有注册“ourInternalNetwork.com”,而是注册了“ExternalNetwork.com”域名。进入系统属性后,服务器会将自己标识为“server1.ourInternalNetwork.com”和“server2.ourInternalNetwork.com”。但是,我们希望 Internet 连接的用户通过“server1.externalNetwork.com”和“server2.externalNetwork.com”访问服务器。
这需要主题备用名称,对吗?我的理解是,如果我们创建没有 SAN 的 CSR,则 CSR 将用于“server1.ourInternalNetwork.com”,并且我们的 CA 不会为“server1.ExternalNetwork.com”颁发证书?但是,如果我们指定 SAN,则我们的 CA 将为“server1.ourInternalNetwork.com”和“server1.ExternalNetwork.com”颁发证书。
我说得对吗?
答案1
如果您服务器上运行的应用程序只能从外部接口访问,则您根本不需要担心 SAN。只需购买外部名称的标准证书即可。即使内部人员正在访问应用程序,这也有效,您只需告诉他们在连接时使用外部名称即可。没有什么需要将服务器的内部标识与应用程序的外部名称配对。
如果您需要使用内部和外部名称访问应用程序,则除非您运行自己的 CA,否则您将无法使用单个证书来实现这一点。正如 Grant 所提到的,没有公共 CA 会为您不拥有的 DNS 域颁发证书。使用您自己的 CA,您可以在技术上生成包含两个名称的证书。如果您真的想要,您甚至可以为“google.com”生成证书。但是,您无法管理的外部客户端将收到证书警告,除非他们选择将您的 CA 的证书添加到他们的受信任根列表中。这就是为什么您通常选择使用公共 CA 的原因;默认信任。
我不确定它如何或是否与 Tomcat 配合使用,但假设您可以在同一服务器内的不同接口上托管应用程序。内部接口将使用您自己生成的证书。外部接口将使用购买的证书。
答案2
如果您不是 ourinternalnetwork.com 的当前注册人,则任何合法 CA 在任何情况下都不应为您颁发该网站或其子域名的证书。
不要使用不属于您自己的域名。