SSL预证书是用于证书透明度(CT)另一种特殊类型的SSL证书。SSL预证书与日常的SSL证书有所不同,SSL预证书并不是用于通过验证服务器身份后生成HTTPS链接,而是允许将证书透明度数据直接嵌入到最终SSL证书中。
SSL预认证证书与传统SSL证书不同,SSL预证书很少直接显示给最终用户,所以用户并不能正确判断自己的证书是否存在SSL预证书。
下面一起来认识预认证在证书透明度RFC中定义,什么是预认证证书,它的工作原理是什么。
为什么要使用预认证?
L预证书是提交证书透明度日志(SCT)证明与证书的多种方式之一。预验证的优点是可以将 CT数据嵌入SSL证书本身,而不需要另存为单独的文件发送(日常的方式是在握手期间将SCT作为单独的文件发送,与OCSP Stapling类似)。
CT日志的数据在SSL预证书中自动生成一个有效的签名(SCT)。目前CA颁发最终的SSL证书时需要在日志中生成SCT。而SSL预证书可解决此类问题,允许日志生成正确的签名,而不需要最终的证书。
SSL预证书工作原理
1、证书颁发机构(CA)向客户签署并颁发SSL证书时。该SSL证书必须要符合浏览器的CT策略,所以CA需将证书提交CT日志。
2、CA机构提供CT日志有多种方式,其中如果他们想将证书的CT日志直接嵌入最终的SSL证书,那么就需要使用SSL预证书。
3、CA在签署最终证书之前,首先要创建一个预认证,其中该证书包含CT日志的数据,格式为指定格式,否则将被视为无效证书。
4、CA将预认证提交到CT日志并接收SCT(签名证书时间戳)。这是一个日志签署的文件,可用于证明客户端证书已被记录。
5、CA的SCT,可以将其放入最终的证书,并将其作为签名数据的一部分。CA发布最终证书,SCT可嵌入其中。
6、最后,客服端可以部署证书,并证明他们的证书中包含了CT合规性。这是包含SCT的最佳方法。
如果用户搜索证书透明度日志,就可能会遇到预证书,但不能检查其关联系的(有效的)证书。因为CA不需要将后续证书提交到日志。即使预认证不被客户视为有效,但是仍然保留相同的发行标准。最新的CT RFC规定,“预认证的错误等同于最终证书的错误。”
预证书的扩展
预证书的证书与常规证书不同,它的的扩展名为X.509 v3格式。该格式具有灵活性,允许采用新功能,而不需要新版本的格式。
预证书的证书包含一个专门为扩展而创建的“毒药扩展”(“poison extension”)。之所以以此为名是因为它是一个被标记为关键的扩展(意味着如果不能正确解析这个证书,就会被视为无效的),并且被设计成不接受客户端软件的支持。
这意味着当客户端(例如web浏览器或操作系统)访问一个预先证书时,能处理未知的扩展,并查看到扩展的内容,则该预验证将被视为无效,因为这是一个关键的扩展,是无法解读的(假设客户端能够读取,则该证书将标记为无效)。
这种“毒药扩展”的存在是常规证书和预认证证书之间的唯一区别(这是对于CT标准的版本1的情况)。
“毒药扩展”的扩展名是用唯一的OID指示:1.3.6.1.4.1.11129.2.4.3。OID 或对象标识符是分配给某些用于提供计算机可解析格式的标准化字符串。例如,可以查看该OID号码,并看到它已被分配了以下目的:“证书透明度预认证毒药扩展”。其他OID(如1.3.6.1.5.5.7.48.1)用于SSL证书中以指示该证书的OCSP URL。
如果用户在Windows中下载并打开一个预认证,它看起来与常规SSL证书非常相似。但在Windows“证书查看器”的“ 常规”窗格中,将注意到它将显示为“证书包含未标识为”关键“的扩展名。”在“ 详细信息”中,您会看到底部附近列出的毒药扩展名(查找OID)。
如果您在Windows中下载并打开一个预认证,那么它看起来与普通的SSL证书非常相似。但是,在Windows“证书查看器”的General窗格上,您会注意到它将显示为“证书包含未标识为‘关键’的扩展名”。在“ 详细信息”中,会看到底部附近列出的毒药扩展名(查找OID)。
因为这个扩展是存在的,Windows将预认证视视为无效。这将防止在使用SSL证书(例如在HTTPS连接中)时使用它。在macOS上,证书查看器会显示“这个证书不能使用(未被识别的临界扩展)。”
在证书透明度协议2.0版本中(仍在开发中的RFC6962),预认证的格式将从X.509更改为CMS(加密消息语法)。这意味着预证书的技术格式和编码将会发生改变,并且将不再是与常规SSL证书相同的格式。
这意味着,在部署了CT 2.0之后,将不再需要使用这个恶意扩展,因为没有必要将预认证证书与有效的X.509 SSL证书区分开来。
稿源:The ssl store
文章转载:https://www.trustauth.cn/news/security-news/18033.html