SSL证书之神秘预证书

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

时间: 2024-10-21 12:22:41

SSL证书之神秘预证书的相关文章

用openssl生成SSL使用的私钥和证书,并自己做CA签名(转)

本 文记叙的是一次基于SSL的socket通讯程序开发中,有关证书,签名,身份验证相关的步骤. 我们的场景下,socket服务端是java语言编写的,客户端是c语言.使用了一个叫做matrixssl的c语言库.自己做CA签名,不等同于“自签 名”. 自签名的情况,RSA的公钥私钥只有一对,用私钥对公钥证书做签名.而我们的场景是,自己做CA,有一个CA的公钥私钥对. 而socket的服务端也有一个公钥私钥对. 用CA的私钥对socket服务端的公钥证书做签名. openssl genrsa -ou

Tomcat SSL配置及Tomcat CA证书安装

Tomcat既可以作为独立的Servlet容器,也可以作为其他HTTP服务器附加的Servlet容器.如果Tomcat在非独立模式下工作, 通常不必配置SSL,由它从属的HTTP服务器来实现和客户的SSL通信.Tomcat和HTTP服务器之间的通信无须采用加密机制,HTTP服务器将解 密后的数据传给Tomcat,并把Tomcat发来的数据加密后传给客户. 如果Tomcat作为独立的Java Web服务器,则可以根据安全需要,为Tomcat配置SSL,它包含以下两个步骤: (1) 准备安全证书.

iOS开发HTTPS实现之信任SSL证书和自签名证书

iOS开发HTTPS实现之信任SSL证书和自签名证书 转自:http://www.jianshu.com/p/6b9c8bd5005a/comments/5539345 (收录一下供自己学习用的) 字数1566 阅读5025 评论76 喜欢30 首先来分析一下什么是HTTPS以及了解HTTPS对于iOS开发者的意义 HTTPS 以及SSL/TSL 什么是SSL? SSL(Secure Sockets Layer, 安全套接字层),因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点,比如

SSL 流tcp payload和证书提取

PRETTY_NAMES = { 'alert_level': { 1: 'warning', 2: 'fatal' }, 'alert_description': { 0: 'close_notify', 10: 'unexpected_message', 20: 'bad_record_mac', 21: 'decryption_failed', 22: 'record_overflow', 30: 'decompression_failure', 40: 'handshake_failur

iOS注册远程推送消息证书后提示此证书签发者无效的解决办法

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们在编写关于远程推送消息的App时需要注册一个相关的证书,我们可以到Apple开发网站的Certificates, Identifiers & Profiles页面首先创建一个App ID. 其中进入Push Notifications选项,并且在其子项Development SSL Certificate中选择创建证书(因为该证书是调试用的,所以在Deve

iOS开发证书及推送证书的生成教程

以下是我自己摸索出来的证书生成过程,如有错误欢迎指正~ 一.生成开发证书 这里的证书包括开发(development)证书和生产(production)证书. 1.打开钥匙串访问-->证书助理-->从证书颁发机构请求证书,输入邮箱和常用名,常用名将作为你的密钥名,选择保存到磁盘,名字默认就可以,存到桌面. 2.登录苹果的开发者中心,登录自己的开发者账号进入,选择证书. 单击这里的Development,(注意,这里最多同时存在2个证书)点击右上角的加号,选择iOS App Developmen

APP 上线-测试证书的制作(调试证书)

上一篇我们已经知道了发布证书是怎么制作的了,如果还有那里不甚明白的,可以留言,我会一一解答(我要是会的话). 那么,今天我们就开看看测试证书是怎么制作的,虽然 xcode7出来后,真得可以不需要测试证书了,但是我想还是有许多不用 Xcode7的朋友,所以,我们说一说,测试证书是怎么制作流程. 再次说明一下,因为上一篇我们已经制作了发布证书了,因此,我在这里直接上图,不详细介绍了! 1.登录开发者官方网站(https://developer.apple.com).(图1)[请原谅我直接把上次的截图

Windows AD证书服务系列---管理证书还原(1)

秘钥归档和还原的概述 在有些时候保障证书和对应的配对秘钥的安全是很重要的,例如,如果我们使用一个证书去对Email或文档的内容进行加密,但是我们把公钥和私钥遗失了,那么我们就无法访问被证书的公钥加密的数据了,因此对公钥和私钥进行归档和还原就显得非常重要了.我们可以将证书结合一个私钥导出,然后将它保存在一个安全的位置,例如独立媒体或者特定的云存储,以这样的方式来归档或备份私钥.但是这种方法要求每个用户都要备份自己的私钥,这样就算不上一个可靠的备份方式了,那么我们可以选择在CA上集中秘钥归档来作为替

CA服务器迁移之后,使用IE浏览器申请证书提示无法找到证书模板

问题描述: CA服务器迁移之后,使用IE浏览器申请证书提示无法找到证书模板,截图如下: 问题原因分析: ---------------------------------------------------------------- 使用certutil命令查看当前证书信息,发现有两个证书条目信息截图如下 运行certutil ca 命令发现DNSname指向的还是旧的服务器,于是判定在ADSI 配置信息中肯定有某个键值没有更改. 打开ADSI编辑器配置 展开enrollment service