我目前正在为 uni 课程编写证书颁发机构,我目前正在努力解决创建证书的概念。
CA 通常如何决定是否应该向实体提供证书,是否足以通过使用其私钥签署证书请求来证明该实体是公钥的所有者?
如果不是,CA 通常如何确定实体是否值得信赖?
谢谢,
我目前正在为 uni 课程编写证书颁发机构,我目前正在努力解决创建证书的概念。
CA 通常如何决定是否应该向实体提供证书,是否足以通过使用其私钥签署证书请求来证明该实体是公钥的所有者?
如果不是,CA 通常如何确定实体是否值得信赖?
谢谢,
CA 是一家企业。它通过出售认证来赚钱。它出售的证书越多,它赚的钱就越多。如果 CA 没有审慎地验证实体,它将失去其声誉,并且没有人愿意为获得它的认证而付费。
一般来说,CA 在这两种相反力量的张力下运作
我担心你的问题表明存在严重的误解。
通过使用其私钥签署证书请求来证明实体是公钥的所有者是否足以证明?
让实体用私钥签署某些东西当然是不够的。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 将向实体收取此类服务的费用。但是,如果该实体想要为其客户提供高度的信心,即该公钥确实属于 XYZ Inc,那么这就是必须要做的事情。
正如 Iain Collins 所建议的,CA 可以为只需要少量身份验证的人提供廉价的服务,而为其他人提供昂贵的服务。CA 提供的证书将包含已发生的身份验证级别的指示。考虑使用证书进行交易的人可以查看 CA 的认证实践声明以了解此级别的含义以及已执行的身份检查类型。
最后,CA 没有对实体的可信度做出任何断言。请记住,证书是公钥和身份之间的链接。CA 所做的检查只是确保公钥确实与该特定实体相关,而不是冒充该实体的人。该实体可能非常邪恶!
总之,在颁发证书之前,您不能使用公钥密码术来确定某人的身份。证书表明 CA 使用了某种其他形式的身份检查,并允许其他人依赖该检查。
实体身份的确定对被认证实体的类型非常主观。根据我的经验,在申请域名证书时,例如 www.stackoverflow.com,CA 通常会联系 whois 中提到的技术联系人。
或者,CA 可以将 PKCS #9 密码短语提供给可信实体以在 CSR 中提供。然后,CA 可以对照列表检查密码,并确定所请求的实体对该实体是否合法。
不同类型的证书有不同的信任级别。
基本 SSL 证书:
例如,网站的基本 SSL 证书通常是一个自动化过程 - 它通过发送与域 WHOIS 记录相关联的唯一过期 URL(或必须在在线表格中输入的代码)来验证电子邮件地址。
对于扩展验证:
对于更强的验证(例如在 SSL“扩展验证”的情况下,您会在现代浏览器中看到绿色地址栏),通常的做法是通过关联多个信息源来确定所有者的合法性,例如请求公用事业账单/公司注册证书/注册公司详细信息(例如 Dun and Bradstreet/Companies House Registration (UK) 或同等学历)和域名 whois 信息,以确保它们都与相同的地址和公司名称完全匹配。
在个人证书的情况下,通常需要带有照片或护照的驾驶执照复印件。
通常的做法也是通过已识别的电话回电以确认订单是否合法。电话号码的合法性通常基于 WHOIS 信息中的一个,或公用事业公司提供的电话账单上列出的号码。
扩展验证证书的流程通常与代码签名证书的流程非常相似(如果与代码签名证书的流程不同)(其中用作记录的电子邮件联系人的域通常被视为您必须控制其 WHOIS 信息的域)。
它从注册商到注册商略有不同,有时可能有点非正式和临时(因为小公司容易提供的一些东西在大公司很难掌握,反之亦然,所以他们倾向于接受多种替代方法)。
恕我直言,实践中最重要的事情是 CA 的订户(即正在验证证书的那些)了解 CA 在做什么,以便他们可以对证书给予适当的信任,并且证书永远不会重新颁发相同的身份到两个不同的实体。
如果证书中的名称是客观的,那么审查用户的身份很重要。例如,应包含特定域/主机名(例如 www.example.com)的 Web 服务器证书,应确保证书的所有者拥有该域名。