文档章节

什么是SSL预证书?

亚洲诚信
 亚洲诚信
发布于 2017/06/22 09:06
字数 1352
阅读 2
收藏 0

预验证是用作证书透明度(CT)一部分的特殊类型的SSL证书。 预先证书与常规SSL证书不同,因为它们不是(也不可以)用于验证服务器或形成经过身份验证的连接(例如HTTPS连接)。它们的唯一目的是允许证明证书已被记录以直接嵌入到证书中。顾名思义,预认证出现在正式证书之前。而预证书几乎很少暴露给最终用户,也就是说你可能收到了预证书但从不知道它的存在。

预证书在证书透明度RFC中定义。本文将用简单的语言解释什么是预先证书,如何使用它们以及它们的工作机制。

为什么需要预证书?

预证书的存在是为了允许将证书透明度数据直接嵌入到最终证书中。

预验证是将证明提交到证书透明度日志(SCT)的证书的几种方式之一。 预处理的优点是允许将CT数据嵌入SSL证书本身,而不是作为单独的数据提供(其他方法要求在握手期间将SCT作为单独的文件发送,与OCSP Stapling类似)。

CT日志需要能够为该证书的数据生成一个有效的签名(SCT),但是CA还需要日志中的SCT才能创建最终的证书。 于是需要预证书来解决这个问题,它允许日志生成正确的签名,而不需要最终的证书。

以下是需要用到预证书的场景:

  • 证书颁发机构(CA)将向客户签名并颁发证书。他们需要使其符合浏览器的CT策略,因此他们需要将证书提交到CT Log。
  • CA对如何提供证书已被记录的证据有不少选择。如果他们想直接将该证明嵌入证书,他们将需要使用预认证。
  • 在CA签署最终证书之前,他们首先创建一个预认证,其中包含相同的数据,但格式化为特定方式,以使其不被视为有效的SSL证书。
  • CA将预认证提交到CT日志并接收SCT(签名证书时间戳)。这是一个由日志签署的文件,可用于密码证明客户端证书已被记录。
  • CA发布最终证书,SCT嵌入其中。
  • 终端用户可以部署他们的证书,并证明他们的证书中包含它们的CT合规性。这是包含SCT的最佳方式。

当你搜索证书透明度日志时,可能会遇到预认证,但不能检查关联的(有效的)证书。 这是因为CA不需要将后续证书提交到日志。 即使预先认证不被客户视为有效,但是仍然保留相同的发行标准。 CT RFC规定,“预认证的错误被认为等于最终证书的错误”。

预证书如何运作?

预证书不同于普通证书的点在于它使用X.509 v3格式的扩展名的数据字段区。扩展为X.509格式提供了灵活性,并允许采用新功能,而不需要新版本的格式。

预证书包含一个“有毒的扩展”。是的你没看错,这个扩展有毒!之所以这么称呼它是因为该扩展十分关键还不支持客户端。如果它没有被正确解析,那么正式证书就要GG(被判无效)了。而当客户端遇上预认证,十之八九都会把它认作无效。“有毒”扩展的存在可以说是常规证书和预证书之间唯一的区别了。

毒性扩展使用一种独一无二的OID:1.3.6.1.4.1.11129.2.4.3。OID又称对象标识符,是分配给某些目的并用于提供计算机可解析格式的标准化字符串。例如,您可以查看该OID号码,并看到它已被分配了以下目的:“证书透明度预认证毒药扩展(poison extension)”。其他OID(如1.3.6.1.5.5.7.48.1)用于SSL证书中以指示该证书的OCSP URL。

举个栗子,如果你在Windows中下载并打开一个预认证,它将看起来与常规SSL证书非常相似。 但是,在Windows“证书查看器”的“常规”窗格中,您将注意到它将显示为“证书包含未标识为”关键“的扩展名。”在“详细信息”中,您会看到底部附近列出的毒药扩展名(查找OID)。

ssl precertificates

因为这个扩展是存在的,Windows将预认证视为无效。 这样可以防止在使用SSL证书的情况下使用SSL,例如在HTTPS连接中。 在macOS上,证书查看器会说“不能使用此证书(无法识别的关键扩展)”。

在证书透明度协议(仍在开发中,RFC6962)的2.0版本中,预认证的格式将从X.509更改为CMS(加密消息语法)。 这意味着预制证的技术格式和编码将会大大改变,并且将不再是与常规SSL证书相同的格式。也就是说,当部署CT 2.0时将不会再有毒药扩展,因为不需要区分预密码和有效的X.509 SSL证书。

本文转载自:https://www.sslchina.com/what-is-ssl-precertificate/

亚洲诚信
粉丝 4
博文 102
码字总数 76101
作品 0
程序员
私信 提问
curl 证书访问https站点

curl+个人证书(又叫客户端证书)访问https站点(双向认证) 什么是双向认证模式?对于面向公众用户的https的网站,大部分属于单向认证模式,它不需要对客户端进行认证,不需要提供客户端的个...

TsingCall
2016/01/03
0
0
【大量干货】史上最完整的Tengine HTTPS原理解析、实践与调试

本文邀请阿里云CDN HTTPS技术专家金九,分享Tengine的一些HTTPS实践经验。内容主要有四个方面:HTTPS趋势、HTTPS基础、HTTPS实践、HTTPS调试。 一、HTTPS趋势 这一章节主要介绍近几年和未来H...

樰篱
2018/05/29
0
0
Configuring SSL in Wildfly 8

Configuring SSL in Wildfly 8 一:什么是SSL   SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递...

Zhao-Qian
2015/03/10
0
0
Volley实现Https的单向认证

实现Https的单向认证,首先需要生成一个公钥和私钥,并且拿公钥到CA机构进行签名。生成签名证书。证书里面包含数字签名和公钥。然后客户端需要将公钥证书预埋在自己的APK中。在建立SSL连接的...

pyzhou
2018/05/10
0
0
PKI信息安全知识点详细解答包含HTTPS

1. 什么是X.509? X.509标准是ITU-T设计的PKI标准,他是为了解决X.500目录中的身份鉴别和访问控制问题设计的。 2. 数字证书 数字证书的意义在于回答公钥属于谁的问题,以帮助用户安全地获得对...

诸葛西门
2017/07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rsync之中文编码同步失败的问题

rsync -avzPu --iconv="GBK,UTF-8" --size-only rsync -avzPu --iconv="UTF-8,GBK" --size-only

perofu
6分钟前
0
0
【数据库】windows安装Mysql数据库

简介 本文介绍如何从windows上安装数据库。 1、安装步骤 1.1、安装包下载 https://dev.mysql.com/downloads/mysql/ 1.2、配置 将文件下载之后解压,进入解压包的bin目录。依次执行如下命令 ...

Areya
6分钟前
0
0
常见的Web攻击手段——XSS攻击

一、什么是XSS? 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意的Script代...

Lienson
7分钟前
0
0
Docker-002-常用命令

1、查看容器启动情况 #查看当前运行的容器docker ps#查看所有容器,包括停止的docker ps -a#查看最新创建的容器,只列出最后创建的docker ps -l#-n=x选项,会列出最后创建...

moon888
10分钟前
0
0
ZXing——二维码扫描案例及横竖屏切换问题

ZXing是Google官方提供的一个开源Java类库用于解析多种格式的1D/2D条形码。 GitHub地址:https://github.com/zxing/zxing 最近项目中需要用到二维码扫描,所以对ZXing进行了精简,完工后在这...

QGlaunch
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部