【问题标题】:How does a CA decide if entity is trustworthyCA 如何确定实体是否值得信赖
【发布时间】:2011-01-02 12:54:09
【问题描述】:

我目前正在为 uni 类编写证书颁发机构,我目前正在努力解决创建证书的概念。

CA 通常如何决定是否应向实体提供证书,是否足以通过使用其私钥签署证书请求来证明该实体是公钥的所有者?

如果不是,CA 通常如何确定实体是否值得信赖?

谢谢,

【问题讨论】:

    标签: java security encryption certificate x509


    【解决方案1】:

    CA 是一家企业。它通过出售认证来赚钱。它出售的证书越多,它赚的钱就越多。 如果 CA 没有审慎地验证实体,它将失去其声誉,并且没有人愿意为获得它的认证而付费。

    一般来说,CA 是在这两种对立力量的张力下运作的

    【讨论】:

    • 这是非常正确的。竞争的加剧无疑带来了规则的放松(特别是因为用户并不真正关心 /who/ 颁发证书,只要它是由他们的操作系统/浏览器认可的 CA)。
    • 现在我想知道,CA 需要什么才能被 IE8 识别?
    • 在 Windows 和 Mac 操作系统中属于根 CA 的证书存在于操作系统中(这些证书分别由 IE 和 Safari 使用),在 Linux 中它可以在任何地方(在 Debian 中它位于 /etc/ssl/证书/,例如)。像 Mozilla 这样的应用程序通常包含它们自己的根 CA 列表,尽管有些应用程序使用操作系统中包含的那些。在 Windows Vista 和 Windows 7 中,Microsoft 能够以静默方式将新的根 CA“推送”(和撤销)到操作系统(用户甚至无需运行 Windows 更新)。购买证书时,最好检查根 CA 是否包含在较旧的操作系统/浏览器中。
    • 作为一家 CA 企业,出现在 Windows 上的受信任 CA 列表中对我来说有巨大的经济利益(例如)。我想知道我需要付钱给谁,要付多少钱才能做到这一点。
    【解决方案2】:

    我担心您的问题表明存在严重的误解。

    通过用他们的私钥签署证书请求来证明实体是公钥的所有者是否足以证明?

    肯定不够让实体用私钥签署某些东西。 CA 如何知道使用哪个公钥来验证签名?它必须信任提供它的实体。所以任何人都可以联系 CA 并说:

    “我是microsoft.com,在这里,我用我的私钥签署了这个。你甚至可以用我的公钥检查它。现在,你能证明这个公钥属于microsoft.com吗? ?我给你1000美元!”

    (事实上,这一步是必要的,只是还不够。如果我没有用私钥签署某些东西,那么我可以将任何公钥——甚至是微软的——发送给 CA,然后让他们证明它是我的。然后我可以声称微软签名的东西(可能是专利申请)实际上是我签名的!所以CA在证明公钥之前肯定会检查我是否有对应的私钥。证书。)

    所以问题是,CA 可以做些什么来验证请求证书的人的身份? CA 以前没有人听说过这个实体!

    一个可以在 CA 端完全自动化的简单选项是让实体提供一个电子邮件地址。 CA 将向该电子邮件地址发送质询(例如 CA 网站上带有长随机数的特殊 URL)。如果有人使用该 URL 向服务器发出请求,则可能是拥有或有权访问该电子邮件地址的人。

    如果您前往 Verisign 并申请免费试用 SSL 证书,您可以自己尝试。

    限制是此证书可以证明的唯一关系是公钥和电子邮件地址之间的关系。这对某些人来说可能已经足够了,但对所有人来说还不够。

    如果我想确信某个特定证书(或其中的公钥)属于 Elbonia 的 XYZ Inc,因为我即将向他们发送一些敏感的业务详细信息,我想要的不仅仅是一个电子邮件地址。我想确定 CA 已经进行了一些认真的调查。 CA 应该会收到带有信笺抬头的请求。他们应该使用电话簿中的电话号码联系公司。 (冒名顶替者也必须欺骗电话人员。)CA 应与企业名称注册办公室核实,以检查 XYZ Inc 是否在此地址注册。他们应该向注册地址邮寄一份文件(里面有一个很长的随机数)。 (这意味着冒名顶替者也必须拦截邮件。)CA 可能会亲自前往该组织的业务注册办事处,以确认已提出请求。

    所有这些身份检查都是耗时且昂贵的。 CA 将向实体收取此类服务的费用。但是,如果该实体希望为其客户提供高度的信心,即该公钥确实属于 XYZ Inc,那么这就是必须要做的事情。

    正如 Iain Collins 所建议的,CA 可以为只需要少量身份验证的人提供廉价的服务,而为其他人提供昂贵的服务。 CA 提供的证书将包含已发生的身份验证级别的指示。考虑使用证书进行交易的人可以查看 CA 的认证实践声明以了解此级别的含义以及已执行的身份检查类型。

    最后,CA 没有对实体的可信度做出任何断言。请记住,证书是公钥和身份之间的链接。 CA 所做的检查只是确保公钥确实与该特定实体相关,而不是冒充该实体的人。该实体可能非常邪恶!

    总而言之,在颁发证书之后之前,您不能使用公钥加密来确定某人的身份。证书表明 CA 使用了某种其他形式的身份检查,并允许其他人依赖该检查。

    【讨论】:

    • 哇,很好的答案,它确实消除了很多疑问。谢谢!!
    【解决方案3】:

    不同类型的证书有不同的信任级别。

    基本 SSL 证书:

    例如,网站的基本 SSL 证书通常是一个自动化过程 - 通过发送一个唯一的过期 URL(或必须在在线表单中输入的代码)与域 WHOIS 相关联的电子邮件地址来验证记录。

    对于扩展验证:

    为了加强验证(例如在 SSL“扩展验证”的情况下,您会在现代浏览器中看到绿色地址栏),通常的做法是通过关联多个信息来源来确定所有者的合法性,例如作为请求水电费账单/公司注册证书/注册公司详细信息(例如 Dun and Bradstreet/Companies House Registration(英国)或同等学历)和域名 whois 信息,以确保它们都与相同的地址和公司名称完全匹配。

    如果是个人证书,通常需要带照片或护照的驾驶执照复印件。

    通常的做法也是通过已识别的电话回电以确认订单是否合法。电话号码的合法性通常基于 WHOIS 信息中的一个,或公用事业公司提供的电话账单上列出的号码。

    扩展验证证书的流程通常与代码签名证书的流程非常相似(如果不完全相同的话)(其中用作记录的电子邮件联系人的域通常被视为您必须控制 WHOIS 信息的域为)。

    不同的注册商略有不同,有时可能有点非正式和临时性(因为小公司容易提供的一些东西在大公司很难掌握,反之亦然,所以它们往往被多种替代方法接受)。

    【讨论】:

      【解决方案4】:

      实体身份的确定对被认证实体的类型非常主观。根据我的经验,在申请域名证书时,例如www.stackoverflow.com,CA 通常会联系 whois 中提到的技术联系人。

      或者,CA 可以向受信任的实体提供 PKCS #9 密码以在 CSR 中提供。然后,CA 可以根据列表检查密码,并确定请求的实体对该实体是否合法。

      【讨论】:

        【解决方案5】:

        恕我直言,在实践中最重要的事情是 CA 的订户(即验证证书的人)了解 CA 正在做什么,以便他们可以对证书给予适当的信任,并且证书永远不会重新颁发对两个不同的实体具有相同的身份。

        如果证书中的名称是客观的,那么审查用户的身份很重要。例如,应包含特定域名/主机名(例如 www.example.com)的 Web 服务器证书,应确保证书的所有者拥有该域名。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-22
          • 1970-01-01
          • 2022-05-05
          相关资源
          最近更新 更多