如何防止我的用户代表我获得为我的域颁发的证书?

信息安全 证书 证书颁发机构 网络服务 dns 域
2021-08-27 12:30:57

我有一个域,其他一些用户有权上传文件、使用电子邮件、使用 XMPP 等。

如何防止这些用户前往证书颁发机构并为我的域获取证书? 除非 CA 要求个人联系,否则他们如何在技术上证明域的所有权?

(假设一个有点“受信任”的 CA,即浏览器列表中的一个。这不是关于他们该如何做,而是他们在实践中如何做或可能做的。一个具有弱进程的 CA 就足够了被妥协。)

例如:

  • 我是否应该禁止在特定位置上传/编辑具有特定名称的文件?是否有某种保留的文件位置/名称用于所有者验证?
  • 我应该不允许提供特定的电子邮件地址吗?是否有 CA 使用的保留地址?
    • 或者是否使用了来自 Whois 的电子邮件地址?但是,如果没有指定电子邮件怎么办?
  • 我是否应该禁止提供特定的 Jabber ID?是否有任何 CA 使用 XMPP?
  • 任何其他可能使用的协议?DNS中有什么东西?

这个问题是相关的,但它是关于首先不应该访问服务器的攻击者。然而,就我而言,我想授予人们访问权限;我只是想确定我不应该允许什么他们去做。)

2个回答

更新:似乎一个芬兰人能够live.fi通过拥有 address为域颁发证书来证明这种“攻击” hostmaster@live.fi


去年,我和一个朋友打赌,我可以通过他的域名获得一个浏览器信任的证书,以便成功地对他的登录表单发起 MiTM 攻击以窃取他的密码。长话短说:我赌输了;我无法说服我联系的 16 个 CA 中的任何一个相信我是该域的合法所有者。即使我在他的邮件服务器上有一个电子邮件帐户,并且可以通过 FTP 访问 WWW 目录下的用户目录。

让我们回去一点。CA 在向您颁发基本证书之前会做什么?他们有一个称为域控制验证 (DCV) 的过程。好消息是 DCV 使某人难以代表您颁发证书。坏消息是每个 CA 都可以对 DCV 进行自定义修改和修改,这使得无法判断哪个 CA 将是最薄弱的环节。

一般来说,CA 使用以下方法之一:

1. 域电子邮件验证:他们会将验证链接/代码发送到以下电子邮件地址之一:

  • 无论您在 WHOIS 记录中使用什么电子邮件(如果您有 WHOIS 隐私,他们会要求您联系您的注册者并设置电子邮件转发)。
  • 管理员@YourDomain
  • 管理员@YourDomain
  • 主机管理员@YourDomain
  • 根@你的域
  • 站长@YourDomain
  • 邮政局长@YourDomain


2. 域 CNAME 验证:他们会要求您创建自定义 CNAME 条目。它通常涉及您的证书签名请求 (CSR) 的哈希值或他们选择的随机生成的密钥。这种条目的一个例子是

<MD5(CSR)>.yourdomain.com.  CNAME  <SHA1(CSR)>.CA.com


3. HTTP 请求验证:他们会要求您将特定的文本文件上传到您的域的根目录。该文件应该可以通过以下 HTTP 请求访问

http://YourDomain/<MD5(CSR)>.txt

它应该包含SHA1(CSR).

有趣的发现:在我的“挑战”期间,我设法让一个 CA (SSL.COM) 同意上传文本文件Domain/MyUserName/Something.txt并将验证链接通过电子邮件发送给MyUserName@Domain. 但是,他们坚持必须通过拨打 WHOIS 记录中的电话号码来验证我的身份。我还发现有些 CA 需要电话作为第一步验证,甚至在电子邮件验证之前。此类 CA 不会使用隐私选项为域名颁发证书。

因此,要直接回答您的问题,请阻止您的用户创建特殊的电子邮件地址(如上所述。您可能还需要添加it@hostadmin@等;阻止您的用户创建 CNAME 条目;最后,阻止他们将文件添加到根目录您的域。

注意:仅仅因为 16 个 CA 被证明是好的,并不意味着那里没有愿意以“客户便利”的名义妥协。

根据我的经验,CA 会做以下两件事之一:

  • 向 WHOIS 中列出的域所有者发送质询电子邮件。
  • 请求客户创建自定义但临时的 DNS 记录。

有时他们可能会同时问。

由于这个答案有点轶事,我建议您实施强大的安全性,无论他们是否可以创建假证书。例如, Google Apps请求网站创建 CNAME 记录,但会接受上传的 HTML 文档。虽然这不是 CA,但他们仍在验证域所有权。

通常,让用户能够将内容上传到您的网站是有问题的。