![使用来自不同域的证书进行网站身份验证](https://linux22.com/image/803985/%E4%BD%BF%E7%94%A8%E6%9D%A5%E8%87%AA%E4%B8%8D%E5%90%8C%E5%9F%9F%E7%9A%84%E8%AF%81%E4%B9%A6%E8%BF%9B%E8%A1%8C%E7%BD%91%E7%AB%99%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
我的问题是:更好的在两个域之间启用身份验证的方法比我下面所做的要多,名称映射是正确的选择吗?
有 2 个域名;一个是主要的公司域名,第二个是较小的子域名。
公司域为公司中的每个用户都建立了帐户,并生成了电子邮件证书(支持客户端身份验证)。子域与公司域之间不能建立信任关系;子域中的用户有两个登录名:一个用于公司域,一个用于子域。
小型子域名托管一个网站,该网站需要用户名和密码。我们希望使用带有电子邮件证书的智能卡,这样登录任一域名对用户来说都是透明的。
我开始手动创建子域名到公司域名颁发的电子邮件证书的名称映射,但我知道如何获取这些证书的唯一方法是让用户向我发送签名的电子邮件,然后将证书导出到文件。
该过程如下:
- 用户向我发送一封签名的电子邮件。
- 我从签名的电子邮件中下载用户证书并将其保存到文件中。
- 运行我创建的脚本,该脚本读取证书,通过 AD 中的电子邮件地址查找用户,并在用户和该证书之间创建名称映射。
因此,现在用户可以使用主域颁发的证书向网站进行身份验证,网站会在子域的域控制器上查找他们的凭据。
注意事项:
- 子域名不能有CA服务器。
- 我没有公司网络的特权。
- 我对子域拥有完全权限,包括网络服务器的配置。
答案1
证书信任可以(并且通常会)独立于 AD 工作。
说得更严谨一点,如果子域是其他 AD 域的子域,则信任关系已经建立,但我怀疑您已将“子”域配置为新林中的新域。虽然有点别扭,但应该可以。
无论如何,除了 AD 之外,要让用户使用客户端证书在网站上进行身份验证,服务器需要信任客户端证书进行身份验证,并且需要有某种方式将证书的主题映射到安全主体(例如用户)。您当前的解决方案就是这样做的,所以它是正确的。
如果您愿意,您可以强制用户(或其 IT 部门)以某种格式(例如 PEM)向您发送导出的证书以及哪些证书对应哪些帐户的信息。这可能更容易,也可能更难,并且将分发与 S/MIME 签名电子邮件分发的完全相同的信息。