更新:似乎一个芬兰人能够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 被证明是好的,并不意味着那里没有愿意以“客户便利”的名义妥协。