ssllabs response objects官方文档翻译

本文以对www.uestc.edu.cn进行测试为例,对https://github.com/ssllabs/ssllabs-scan/blob/master/ssllabs-api-docs-v3.md中response objects部分内容进行翻译。

Info

在浏览器地址栏中输入 https://api.ssllabs.com/api/v3/info 的结果。
在这里插入图片描述

  • engineVersion SSL Labs的版本
  • criteriaCersion 评级标准版本
  • maxAssessments 允许客户端请求的最大并发数
  • currentAssessments 当前客户提交的持续评估的数目
  • newAssessmentCoolOff 每一次新的评估后的冷却期,以毫秒为单位;在冷却期内,不允许用户提交新的评估,否则会被返回429
  • messages 一些信息

Host

在浏览器中输入https://api.ssllabs.com/api/v3/analyze?host=www.uestc.edu.cn的结果。
在这里插入图片描述

  • host 本次分析的域名或IP地址
  • port 分析的端口号(如443)
  • protocol 分析所使用的协议(如HTTP)
  • isPublic 如果这份评估是可以被公开获取的(在SSL Labs评估板上列出来),则为true
  • status 评估的状态一般会有有——DNS ERROR IN_PROGRESS READY
  • statusMessage 状态信息,如果状态为error,则这里会展示报错星系。
  • start time 评估开始的时间,以毫秒为单位,距离1970年。
  • testTime 评估完成的时间,计量方式同上。
  • engineVersion 评估引擎版本。
  • criteriaVersion 评级标准版本。
  • cacheExpiryTime 评估结果在缓存中过期的时间。
  • certHostnames[] 在评估过程中收集的证书主机名列表。

Endpoint

analyze API中有Endpoint对象,下面对Endpoint对象的内容进行如下的解释。在浏览器中输入链接https://api.ssllabs.com/api/v3/analyze?host=www.uestc.edu.cn
在这里插入图片描述

  • ipAddress 域名的IP地址。
  • serverName 使用反向DNS,根据IP地址查看域名(DNS是正向解析)。可逆DNS的一个应用就是作为垃圾邮件:因为垃圾邮件制造者一般会使用与域名不和的无效IP地址,即不和域名匹配的IP地址。
  • statusMessage 评估状态,如果状态是成功的,就是Ready。
  • statusDetails 状态细节。
  • statusDetailsMessage 状态细节信息。
  • grade 等级,A+、A-、A-F、T(如果不信任)、M(证书不匹配!)。
  • gradeTrustIgnored 等级,在忽略不信任的情况下继续检测。
  • hasWarning 是否存在可能影响评级的警告。
  • isExceptional 当遇到异常的配置时,这个标志将会被使用。
  • duration 持续的时间。
  • eta 评估完成之前的估计时间(以秒为单位)
  • delegation 是否带www前缀。bit 0 = 不带www前缀,bit 1 = 带www前缀。

EndpointDetails

在官方文档里,写了使用API/getEndpointData?host=www.ssllabs.com&s=173.203.82.166,但作者在进行测试的时候并没有成功。于是,使用了analyze的api,同时将参数all设置为on,并从中提取endpintdetails的内容。
在这里插入图片描述
红色框内即为EndpointsDetails。因为很长很长,所以截图没截完,下面将对重要的测试点进行截图,对每个内容进行解释,对于复杂的概念会剖出好一些的解释网站。

  • hostStartTime 对端点评估的开始时间。

  • certChains 服务器证书的证书链。记录了每一级CA的证书的ID。

    • certIds 这里的ID是使用了证书的sha256Hash值来标记证书的编号。
    • trust 由于不同的操作系统或不同的浏览器保存的根证书是不同的,这里dict记录了应用于每种操作系统的不同的证书链,以及是否被信任的结果。以及如果不被信任,产生的原因是什么。
      如图所示,这个证书链包含了4个证书,它被Windows系统所信任。
      在这里插入图片描述
  • issues 描述链及其问题的标志

    • bit 0 未使用(这里就是0)
      在这里插入图片描述
    • bit 1 不完整的链
    • bit 2 链包含不相关或重复的证书(即不属于同一链的证书)
    • bit 3 证书形成一条链(受信任或不受信任),但是顺序不正确
    • bit 4 包含一个自签名根证书
    • bit 5 证书形成一条链(如果我们添加了外部证书,将设置位1),但是我们无法对其进行验证。
  • noSniSuites (noSni) 仅在不支持服务器名称指示(SNI)的客户端上观察到的密码套件。
    在这里扩展以下SNI的解释。Server Name Indicator, 服务器名称指示,是TLS的一个扩展协议[1],在该协议下,在握手过程开始时客户端告诉它正在连接的服务器要连接的主机名称。这允许服务器在相同的IP地址和TCP端口号上呈现多个证书,并且因此允许在相同的IP地址上提供多个安全(HTTPS)网站(或其他任何基于TLS的服务),而不需要所有这些站点使用相同的证书。1更多阅读可以看:What Is SNI? How TLS Server Name Indication Works

  • protocols 可以看到网站支持的协议。这里有SSL 3.0、TLS 1.0、TLS 1.1和TLS 1.2
    在这里插入图片描述

    扫描二维码关注公众号,回复: 10357339 查看本文章
  • suites[] 每个协议支持的密码套件

    • id 套件RFC ID
    • name 套件的名称(例如:TLS_RSA_WITH_RC4_128_SHA)
    • cipherStrength 套件强度 (例如, 128)
    • kxType 密钥交换类型(例如,ECDH)
    • kxStrength 密钥交换强度,以RSA等效位表示
    • dhP DH参数,p分量
    • dhG DH参数,g分量
    • dhYs DH参数,Ys分量
      在这里插入图片描述
    • namedGroupBits EC位数
    • nameGroupId EC曲线编号
    • namedGroupName EC曲线名称
      在这里插入图片描述
    • q 标记为不安全或弱。 如果套件强或好,则不存在
      • 0 不安全(insecure)
      • 1 脆弱(weak)
        在这里插入图片描述
  • namedGroups 命名组对象的实例(主要是对椭圆曲线的关注)

    • NameGroup 对对象的一组列表
      • id 命名曲线ID
      • name 命名曲线的名称
      • bits EC位数(用来衡量强度)
    • preference 如果服务器具有优先使用的首选曲线,则为true
      在这里插入图片描述
  • serverSignature HTTP Server响应标头的内容
    在这里插入图片描述

  • prefixDelegation 如果可以通过带有www前缀的主机名访问此端点,则为true

  • noprefixDelegation 如果可以通过不带www前缀的主机名访问此端点,则为true
    在这里插入图片描述

  • vulnBeast 如果端点易受BEAST攻击,则为true
    什么是Beast攻击?
    Short for Browser Exploit Against SSL/TLS,此攻击利用CBC的弱点,利用安全套接字层(SSL)/传输层安全性(TLS)协议。 CBC漏洞可以启用对SSL的中间人攻击,以以静默方式解密并获取身份验证令牌,从而使黑客可以在Web服务器和Web浏览器之间传递的数据。
    相关阅读:BEAST: Surprising crypto attack against https && 关于SSL/TLS中AES安全性|BEAST攻击的详细步骤以及RC4强度的一些笔记
    解决方法:升级OpenSSL版本到1.0.1以便支持TLSv1.1和TLSv1.2

  • renegSupport 这是一个整数值,描述端点对重新协商的支持
    什么是renegotiation?什么是secure renegotiation?
    重协商是指在已经协商好的SSL/TLS TCP连接上重新协商,用以更换算法、更换数字证书、重新验证对方身份、更新共享密钥等等。美国某安全公司的研究人员发现SSL/TLS协议重协商机制有严重的安全漏洞,中间人可以利用这个漏洞,将自己的数据注入到客户端与服务器的SSL/TLS“安全连接”之中。该漏洞被发现的第二年,通过RFC 5746引入新的“安全重协商”机制,来解决这个漏洞。
    相关阅读:干货|白话SSL/TLS默认重协商漏洞原理与安全重协商对抗机制

    • bit 0 (1) 如果支持客户端启动的不安全重新协商
    • bit 1 (2) 如果支持安全重新协商
    • bit 2 (4) 如果支持客户端启动的安全的重新协商
    • bit 3 (8) 设置服务器是否需要安全重新协商支持
  • sessionResumption 描述端点对会话恢复的支持
    继续使用上一次会话协商出的结果。
    但是这种机制会有以下两个弊端:1)负载均衡中,多机之间往往没有同步 Session 信息,如果客户端两次请求没有落在同一台机器上就无法找到匹配的信息;2)服务端存储 Session ID 对应的信息不好控制失效时间,太短起不到作用,太长又占用服务端大量资源。Session Ticket(会话记录单)可以解决这些问题,Session Ticket 是用只有服务端知道的安全密钥加密过的会话信息,最终保存在浏览器端。浏览器如果在 ClientHello 时带上了 Session Ticket,只要服务器能成功解密就可以完成快速握手。2

    • 0-会话恢复未启用,我们看到空的会话ID
      1-端点返回会话ID,但会话不恢复
      2-会话恢复已启用
  • compressionMethods 描述支持的压缩方法的整数值。其中DEFLATE设置为bit 0。
    那么什么是压缩方法呢?
    用于压缩由HTML,Javascript和CSS组成的文本数据的方法,这些压缩方法主要由无损压缩算法组成。目前,web上有两种主要的HTTP压缩方案:DEFLATE和GZIP。更多阅读:en.wikipedia.org/wiki/DEFLATE。
    在这里插入图片描述

  • supportsNpn 服务器是否支持Npn

  • npnProtocols 支持的NPN协议列表

  • supportsAlpn 服务器是否支持Alpn

  • alpnProtocols 支持的ALPN协议列表
    什么是NPN和ALPN?
    ALPN(Application-Layer Protocol Negotiation)也是 TLS 层的扩展,用于协商应用层使用的协议。 用来确定建立 TLS 连接后接下来要使用的协议,比如是 HTTP1.1 还是 HTTP/2? ALPN 的前身是 NPN,最初用于协商和切换 HTTP 协议和 Google SPDY 协议,后者现在已经标准化为 HTTP/2。更多阅读:HTTPS 交互过程分析
    在这里插入图片描述

  • sessionTickets 指示是否使用session Tickets

    • bit 0 (1) 如果session Tickets被支持
    • bit 1 (2) 如果session Tickets错误(或未设置)
    • bit 2 (4) 如果服务器不支持Session Tickets扩展
  • ocspStapling 如果OCSP装订被支持,则为True

  • staplingRevocationStatus 如果OCSP装订被响应

  • staplingRevocationErrorMessage 装订的OCSP响应问题的说明(如果有)。

  • sniRequired 访问该网站是否需要SNI支持。
    在这里插入图片描述

  • httpStatusCode 最终HTTP响应的状态代码。 提交HTTP请求时,将遵循重定向,但前提是重定向必须导致相同的主机名。 如果此字段不可用,则表示HTTP请求失败。
    在这里插入图片描述

  • rc4WithModern RC4是否与现代客户一起使用。

  • protocolIntolerance 指示版本不兼容的问题

    • bit 0 (1) - TLS 1.0
    • bit 1 (2) - TLS 1.1
    • bit 2 (4) - TLS 1.2
    • bit 3 (8) - TLS 1.3
    • bit 4 (16) - TLS 1.152
    • bit 5 (32) - TLS 2.152
  • miscIntolerance 表示各种其他类型的不兼容的问题

  • sims SimDetails的实例。这里sims是simulations的缩写,这里列出了ssllabs模拟了不同操作系统或浏览器的客户端尝试与服务器握手后的结果。

    • simDetails
      • results 是simlation的实例
        • client 是SimClient的实例
          • id 指示唯一客户端的ID
          • name 客户端的名称(如,Chrome)
          • platform 平台名称(例如XP SP3)。
          • version 所模拟软件的版本(例如49)
          • isReference 如果认为浏览器代表现代浏览器,则为true,否则为false。 该标志与客户端的功能不相关,但是SSL Labs使用此标志来确定特定配置是否有效。 例如,为了跟踪Forward Secrecy支持,我们将几个代表性的浏览器标记为“现代”,然后进行测试以查看它们是否成功协商了FS套件。 举例来说,现代浏览器目前是Chrome,Firefox(非ESR版本),IE / Win7和Safari。
            在这里插入图片描述
      • errorcode 如果握手成功,则为零;否则,则为1。
      • errorMessage 如果模拟失败,则会显示错误消息。
      • attempts 尝试次数,当前执行中始终为1。
      • certChainId 证书链的ID。
      • protocolId 协商的协议ID。
      • suiteId 协商的套件ID。
      • suiteName 协商的套件名称。
      • kxType 协商的密钥交换,例如“ ECDH”。
      • kxStrength 协商的密钥交换强度,以RSA等效位表示。
      • dhBits D 参数的强度(例如1024)
      • dhP DH参数,p分量
      • dhG DH参数,g分量
      • dhYs DH参数,Ys分量
      • namedGroupBits 协商ECDHE时,EC参数的长度。
      • namedGroupId 协商ECDHE时,EC曲线ID。
      • namedGroupName 协商ECDHE时,EC曲线的nanme(例如“ secp256r1”)。
      • keyAlg 连接证书密钥算法(例如“ RSA”)。
      • keySize 连接证书密钥大小(例如2048)。
      • sigAlg 连接证书签名算法(例如“ SHA256withRSA”)。
        在这里插入图片描述
  • heartbleed 服务器是否容易受到Heartbleed攻击

  • heartbeat 服务器是否支持heartbeat扩展
    什么是heartbleed?3什么是heartbeat扩展?
    心跳扩展为TLS / DTLS提供了新协议,允许在不执行重新协商的情况下使用保持活动功能,用以检查对方是否仍然在场或是否已经离开。没有心跳扩展,做到这一点的唯一方法是通过重新谈判(renegotiation),相对而言,这是昂贵的。
    Heartbleed错误仅存在于SSL和TLS 的OpenSSL实现中。heartbleed的产生是因为在heart extension种存在bug。通过构造出载荷短、长度字段中的数值却很大的请求,向存在缺陷的一方(通常是服务器)发送畸形心跳包,利用心脏出血漏洞,引起受害者的回应,这样,攻击者便可读取到受害者内存中至多64千字节的信息,而这块区域先前OpenSSL有可能已经使用过。例如,正常的心跳请求可能会要求一方“返回4个字符的单词‘bird’”,那一方就返回“bird”;“心脏出血请求”(恶意的心跳请求)如“返回500个字符的单词‘bird’”会导致受害者返回“bird”,紧接着是恰储存在受害者活跃内存中的496个字符。这样,攻击者便可能会收到敏感数据,从而危及受害者其它安全通信的保密性。虽然攻击者能对返回的内存块大小有所控制,但却无法决定它的位置,因而不能指定要显示内容。该程序错误 属于缓冲区 错误读取,即可以读取的数据比应该允许读取的还多。
    应对heartbleed可以通过升级所使用的openssl版本来解决。
    更多阅读:Everything you need to know about the Heartbleed SSL bug

  • openSslCcs CVE-2014-0224测试
    什么是CVE-2014-0224
    SSL / TLS会话过程中服务器和客户端通过ClientHello和ServerHello握手启动协商,协商的内容为使用的协议版本,加密协议,加密密钥,消息身份验证代码(MAC)机密和初始化矢量(IV)以及支持的扩展等。按照标准(RFC 2246,RFC 5246)“ ChangeCipherSpec消息是在握手期间在安全参数已达成共识之后,但在发送验证完成消息之前发送的。” 但是,OpenSSL即使在安全性参数达成一致之前,它也接受了CCS。这就产生了中间人攻击的情况:在安全参数达成一直之前,向双方插入CCS数据包,这导致了OpenSSL使用零长度的主主密钥。数据包被发送到连接的两端。会话密钥是使用零长度的预主密钥导出的。攻击者由此可以解密甚至修改传输中的数据包。
    最简单的解决方案是确保使用发行版提供的最新版本的OpenSSL。
    更多阅读:OpenSSL MITM CCS注入攻击(CVE-2014-0224)
    在这里插入图片描述

    • -1 - test failed
    • 0 - unknown
    • 1 - not vulnerable
    • 2 - possibly vulnerable, but not exploitable
    • 3 - vulnerable and exploitable
  • openSSLLuckyMinus20 CVE-2016-2107测试
    什么是CVE-2016-2017
    允许远程身份验证的用户通过未指定的载体获取敏感信息或修改数据
    可以通过https://filippo.io/cve-2016-2107/对服务器进行测试。
    更多阅读:Yet Another Padding Oracle in OpenSSL CBC Ciphersuites
    在这里插入图片描述

    • -1 - test failed
    • 0 - unknown
    • 1 - not vulnerable
    • 2 - vulnerable and insecure
  • ticketbleed CVE-2016-9244 测试
    什么是CVE-2016-9224?
    ticketbleed类似于heartbleed。Ticketbleed是F5 BIG-IP设备的TLS / SSL堆栈中的软件漏洞,允许远程攻击者一次提取高达31字节的未初始化内存。当客户端提供SessionID和Session Tickets时,服务器应回显SessionID以表示Session Tickets的接受。Session ID的长度可以在1到31个字节之间。即使Session ID再短,F5堆栈总是回显32字节的内存。提供1字节Sessio ID的攻击者将接收到31字节的未初始化内存信息。
    可以通过https://filippo.io/ticketbleed/对网站进行测试
    更多阅读FINDING TICKETBLEED && Ticketbleed:F5 BIG-IP设备TLS/SSL堆栈漏洞(CVE-2016-9244)
    在这里插入图片描述

    • -1 - test failed
    • 0 - unknown
    • 1 - not vulnerable
    • 2 - vulnerable and insecure
  • bleichenbacher the Return Of Bleichenbacher’s Oracle Threat (ROBOT)测试
    什么是the Return Of Of Bleichenbacher’s Oracle Threat?
    这是一种自适应选择密文攻击,如果会话密钥通过RSA算法加密,而填充系统为PKCS #1 1.5,攻击者可简单将随机会话密钥发送给TLS服务器,并询问是否有效,TLS服务器将会以简单的“是”或“否”给出回应。这意味着攻击者可通过简单的暴力破解攻击猜测这个会话密钥,并解密在TLS(HTTPS)服务器和客户端(浏览器)之间交换的所有HTTPS消息。
    解决方法:不适用RSA算法加密(不是RSA不安全,是填充算法不安全),使用椭圆曲线算法。
    可以通过https://myssl.com/robot_detect.html对网站进行检测
    更多阅读:TLS ROBOT Attack漏洞 && Is it still safe to use RSA Encryption?
    在这里插入图片描述

    • -1 - 测试失败
    • 0 - 未知
    • 1 - 不脆弱
    • 2 - 脆弱 (weak oracle)
    • 3 - 脆弱 (strong oracle)
    • 4 - 结果不一致
  • zombiePoodle Zombie POODLE测试

  • goldenDoodle GOLDENDOODLE测试
    什么是Zombie POODLE和GOLDENDOODLE?
    由于TLS 1.2依然支持早已过时的加密方法:密码块链接(CBC)。这些缺陷允许中间人(MitM)攻击用户的加密Web和VPN会话。
    解决方案: 禁用TLS CBC密码
    更多阅读:Introducing Zombie POODLE and GOLDENDOODLE
    在这里插入图片描述

  • zeroLengthPaddingOracle 0-Length Padding Oracle (CVE-2019-1559)测试
    什么是zeroLengthPaddingOracle?
    CBC操作模式允许使用诸如AES或3DES的分组密码对任意长度的明文进行加密。在CBC模式下,每个明文块在被块密码加密之前都与前一个密文块进行异或。
    填充oracle攻击利用了CBC的可延展性。CBC的问题在于,它允许攻击者在不知道对称密钥的情况下执行有意义的明文修改。更具体地说,它允许攻击者通过翻转前一个密文块中的某个位来翻转特定的明文位。此CBC属性已被许多攻击(例如,最近在Efail攻击中)利用。
    更多阅读:https://github.com/RUB-NDS/TLS-Padding-Oracles/blob/master/README.md && 论文Scalable Scanning and Automatic Classification of TLS Padding Oracle Vulnerabilities 产生的原因是
    解决方案:OpenSSL 1.0.2用户应升级到1.0.2r
    在这里插入图片描述

    • -1 - 测试失败
    • 0 - 未知
    • 1 - 不脆弱
    • 6 - 脆弱
    • 7 - 易受攻击的
  • sleepingPoodle Sleeping POODLE测试
    sleepingPoodle没有找到相关的资料,但是在一篇有关ssllab的帖子中4写到:“针对使用CBC(密码块链接)分组密码模式的网站发布了诸如Zombie POODLE, GOLDENDOODLE,0长度OpenSSL和Sleeping POODLE的新漏洞。仅当服务器使用具有CBC密码模式的TLS 1.2或TLS 1.1或TLS 1.0时,这些漏洞才适用。”SSL实验室将从2019年5月底开始对受这些漏洞影响的服务器给予“ F”级评级。
    更多阅读:更多资料 && TLS Fallback Signaling Cipher Suite Value (SCSV)
    for Preventing Protocol Downgrade Attacks
    在这里插入图片描述

    • -1 - 测试失败
    • 0 - 未知
    • 1 - 不脆弱
    • 10 - 脆弱
    • 11 - 易受攻击的
  • poodle 如果端点易受POODLE攻击,则为true;否则为false。

  • poodleTLS POODLE TLS测试

    • -3 - 超时
    • -2 - TLS不被支持
    • -1 - 测试失败
    • 0 - 未知
    • 1 - 不脆弱
    • 2 - 脆弱
  • fallbackScsv 如果服务器支持TLS_FALLBACK_SCSV,则为true,否则为false。 如果无法测试服务器对TLS_FALLBACK_SCSV的支持,则此字段将不可用,因为它仅支持一个协议版本(例如,仅TLS 1.2)。
    fallbackScsv的作用是什么?5
    防止协议降级攻击。本规范适用于TLS 1.0 [RFC2246],TLS 1.1 [RFC4346]和TLS 1.2 [RFC5246]的实现,以及DTLS 1.0 [RFC4347]和DTLS 1.2 [RFC6347]的实现。它实际上并不对应于一套密码系统,并且服务器永远不能在握手中选择它。它在Client Hello消息中的存在是从客户端到服务器的向后兼容信号。
    对于客户端,如果发送消息前ClientHello.cipher_suites中支持的最高的协议版本低于实际的能够支持的最高协议版本,就在消息中包含TLS_FALLBACK_SCSV信号。
    对于服务器,如果客户端在ClientHello.cipher_suites中支持的最高的协议版本低于服务器支持的最高的协议版本,且其中包含了TLS_FALLBACK_SCSV信号时,就返回拒绝链接的消息。
    相关阅读:How Do I Setup TLS_FALLBACK_SCSV On NetScaler? && TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks

  • freak 如果服务器容易受到FREAK攻击,则为true,这意味着它支持512位密钥交换。
    什么是freak攻击?6
    就是使用512位及以下的RSA加密!1990年代时,美国对于货物的出口设立了一些规定,从而引入了这个缺陷。规定中指出,美国软件制造商出口的软件只能使用512位及以下的RSA加密(即所谓的出口级加密)。此举是为了便于NSA破译加密。时至2015年,随着计算能力的发展,破解这种加密已经不再是政府机构才能做到的事,任何人只要拥有充足的计算资源,就能通过普通数域筛选法加上约100美元的云计算服务轻而易举地将其破译。
    在这里插入图片描述

  • hasSct 有关证书透明度信息的可用性的信息(嵌入式SCT)
    关于CT更多的内容可以看博主之前的博客:Certificate Transparency
    在这里插入图片描述

    • bit 0 (1) - 在证书中有SCT
    • bit 1 (2) - OCSP响应中的SCT
    • bit 2 (4) - TLS扩展中的SCT(ServerHello)
  • dhPrimes[] 服务器使用的十六进制编码的DH素数列表。 如果服务器不支持DH密钥交换,则不存在。

  • dhUsesKnownPrimes 服务器是否使用已知的DH素数。 如果服务器不支持DH密钥交换,则不存在。

    • 0 否
    • 1 是,但是他们不脆弱
    • 2 是,而且他们脆弱
  • dhYsReuse-如果DH临时服务器值已重用,则为true。 如果服务器不支持DH密钥交换,则不存在。使用临时Diffie-Hellman(DHE),每个连接使用一个不同的密钥,并且私钥的泄漏仍然意味着所有通信都是安全的。7

  • ecdhParameterReuse 如果服务器重用其ECDHE值,则为true

  • logjam 如果服务器使用的DH参数小于1024位,则为true。
    什么是logjam?8
    Logjam是针对Diffie-Hellman密钥交换的安全漏洞,范围从512位到1024位密钥。作者演示的一种利用此漏洞启用的方法是,使用中间人网络攻击者将传输层安全性(TLS)连接降级,以使用512位DH 出口级加密,从而使他们能够读取交换的数据并将数据注入到连接中。它会影响HTTPS,SMTPS和IMAPS协议等。作者需要一周使用数千个CPU内核才能为单个512位素数预计算数据。但是,一旦完成,使用两个18核Intel Xeon CPU 可以在大约一分钟内解决单个对数问题。其CVE ID为CVE-2015-4000。
    可以使用SSLyzeQualys SSL服务器测试testssl.shkeycdn.com扫描程序等基于TLS的服务(例如提供HTTPS的 Web服务器)检查该漏洞
    在这里插入图片描述

  • chaCha20Preference 如果服务器在决定是否使用ChaCha20套件时考虑了客户端首选项,则为true。
    什么是chaCha20?
    ChaCha是Salsa的变种,是一种流加密算法。
    参考论文:ChaCha, a variant of Salsa20

  • hstsPolicy{} 服务器的HSTS策略,服务器的HSTS策略。 (还在实验中)
    关于HSTS更多的内容可以看博主之前的博客:HSTS 严格传输安全

    • LONG_MAX_AGE 此常数包含SSL LABS认为足够大的最大期限
    • header HSTS响应标头的内容(如果存在)
    • status HSTS状态
      • unkown 未知 服务器被检查之前或其HTTP响应标头不可用时
      • absent 头部中不存在hsts
      • present 头部中存在hsts 且 语法正确
      • invalid 头部存在hsts,但无法解析
      • disabled 头部存在hsts 且语法上正确,但是HSTS被禁用
    • error 遇到错误时的错误消息,否则返回null
    • maxAge 策略中指定的最大年龄值; 如果策略丢失,无效或解析错误,则为null;否则为null。 当前支持的最大值是9223372036854775807
    • includeSubDomains 如果设置了includeSubDomains指令,则为true;否则为false。 否则返回null
    • preload 如果设置了preload(预加载)指令,则为true;否则为false。 否则返回null
      在这里插入图片描述
  • hstsPreloads[] 有关预加载的HSTS策略的信息。
    由于第一次链接时并不知道服务器端设置了HSTS,所以在第一次链接时仍存在中间人攻击。因此可以设置预加载HSTS策略来抵御这种攻击。在SSLLAB结果是使用列表list的形式展开的。相关阅读:解决缺陷,让HSTS变得完美
    HstsPreload对象包含当前主机名的一个源的预加载HSTS状态。 对当前主机名而不是域名进行预加载检查。

  • source 来源名称

  • hostname 主机名

  • status 预加载状态

    • error 错误
    • unknown 未知 在检查预加载状态之前,或者由于某些原因无法获取该信息。
    • absent 缺失
    • present 存在
  • error 错误信息,当状态为error时

  • sourceTime 检索Unix时间戳记的时间,作为Unix时间戳记
    在这里插入图片描述

  • hpkpRoPolicy{} 服务器的HPKP策略9
    HTTP公共密钥固定(HTTP Public Key Pinning,HPKP)是一项安全功能,它是HTTPS网站防止攻击者利用数字证书认证机构(CA)错误签发的证书进行中间人攻击的一种安全机制,用于预防CA遭受入侵或其他会造成CA签发未授权证书的情况。采用公钥固定时,网站会提供已授权公钥的哈希列表,指示客户端在后续通讯中只接受列表上的公钥。
    相关阅读:什么是HTTP公钥固定(HPKP)以及如何添加此功能?

    • header 头部 HPKP响应标头的内容(如果存在)
    • status HPKP状态
      • unkown 未知 检查服务器之前或其HTTP响应头部不可用时
      • absent 缺失 头部不存在(下面结果显示
      • invalid 无效 头部存在,但无法解析
      • disabled 无用的 头部存在并且在语法上正确,但是HPKP已禁用
      • incomplete 不完整的 头部存在且在语法上正确,使用不正确
      • partial 部分的 头部存在且在语法上正确,但并非固定所有路径
      • valid 有效的 头部存在,语法正确且正确使用
        在这里插入图片描述
  • hpkpRoPolicy{} 服务器的Public-Key-Pins-Report-Only策略(与hpkpPolicy数据结构类似)
    HTTP响应头部Public-Key-Pins-Report-Only用于设置在公钥固定不匹配时,发送错误信息到report-uri。 但和Public-Key-Pins不同的是,即便公钥固定异常, 其允许浏览器继续访问服务器。
    在这里插入图片描述

  • staticPkpPolicy{} 服务器的SPKP策略
    浏览器可以预加载(即嵌入到浏览器中)公钥密码,我们称之为静态公钥密码。

    • status SPKP的状态
      • unkown 未知 检查服务器之前或其HTTP响应头部不可用时
      • absent 不存在静态pinning
      • invalid 无效的,静态pinning存在,但不能被正确解析
      • incomplete 存在静态pinning,但与配置不匹配
      • partial 部分的 存在静态pinning,但并非固定所有信任路径
      • forbidden 存在静态pinning,禁止钉扎匹配
      • valid 存在静态pinning,语法正确且正确使用
    • error 错误信息,当政策是无效的
    • includeSubDomains 如果设置了includeSubDomains指令,则为true;否则为false。 否则返回null
    • reportUri 策略中的report-uri值
    • pins [] 策略使用的所有pins的列表
    • matchPins [] 匹配当前配置的pins列表; 每个列表条目都包含一个具有两个字段的对象,分别为hashFunction和value(十六进制编码)
    • forbiddenPins [] 策略使用的所有禁止pins的列表;
    • matchForbiddenPins [] 匹配当前配置的禁止pins列表; 每个列表条目都包含一个具有两个字段的对象,分别为hashFunction和value(十六进制编码)
  • httpTransactions[] HttpTransaction对象的数组。这里是模拟http访问并产生访问结果的对象。使用了https协议链接。

    • requestUrl 请求网址
    • statusCode 响应状态码
    • requestLine 整个请求行作为单个字段
    • requestHeaders [] 请求HTTP头请求头
    • responseLine 响应
    • responseHeadersRaw [] 所有响应标头都作为单个字段使用(如果标头格式错误,则很有用)
    • responseHeaders [] 响应HTTP标头的数组,每个标头都有名称和值
    • fragileServer 如果SSL实验室检查服务器崩溃时为true(在这种情况下,将拒绝完整测试)
      在这里插入图片描述
  • drownHosts[] DROWN主机的列表。
    “DROWN"全称是 Decrypting RSA with Obsolete and Weakened eNcryption,是指"利用过时的脆弱加密算法来对RSA算法进破解”,主要针对SSLv2协议漏洞来对TLS进行跨协议攻击。
    更多资料:DROWN: Breaking TLS using SSLv2

    • ip 在其证书中共享相同RSA密钥/主机名的服务器的IP地址
    • export 如果检测到导出密码套件,则为true
    • port 服务器的端口号
    • special 如果检测到易受攻击的OpenSSL版本,则为true
    • sslv2 如果支持SSL v2,则为true
    • 状态 drown主机状态:
      • error 发生错误
      • unkown 未知 检查状态之前
      • not_checked 不检查是否已经发现易受攻击的服务器
      • not_checked_same_host 未选中(同一主机)
      • handshake_failure 服务器不支持SSL v2
      • sslv2 支持SSL v2,但不同的RSA密钥
      • key_match 易受攻击(与SSL v2相同的密钥)
      • hostname_match 易受攻击(与SSL v2相同的主机名)
  • drownErrors 如果DROWN测试中发生错误,则为true。

  • drownVulnerable 如果服务器容易受到DROWN攻击,则为true。
    在这里插入图片描述

  • implementsTLS13MandatoryCS 如果服务器支持强制性TLS 1.3密码套件(TLS_AES_128_GCM_SHA256),则为true;如果不支持TLS 1.3,则为null。

  • zeroRTTEnabled 0-RTT测试的结果。 仅在启用TLS 1.3的情况下才执行此测试。
    什么是0-RTT?
    同等情况下,TLS1.3比1.2少一个RTT时间。
    客户端完成TCP握手需要一个RTT时间, TLS1.2完成TLS密钥协商需要2个RTT时间, TLS1.3只需要1个RTT时间。

  • certs 证书集合。

    • id 证书ID,在这里使用的是每个证书的sha256Hash
    • subject 证书主题
    • serialNumber 证书序列号(十六进制编码)
    • commonNames[] 从主题中提取的CommonName(CN)
    • altNames[] 替代名称
    • notBefore 证书无效之前的时间戳(Unix时间戳)
    • notAfter 证书无效之后的时间戳记(Unix时间戳记)
    • issuerSubject 发行人主体
    • sigAlg 证书签名算法
    • revocationInfo 代表证书中存在的吊销信息的数字
      • bit 0 (1) CRL列表
      • bit 1 (2) OCSP列表
    • crlURIs[] 从证书中提取的CRL URI
    • ocspURIs[] 从证书中提取的OCSP URI
    • revocationStatus 一个描述证书吊销状态的数字
      • 0 没有检查
      • 1 证书被吊销
      • 2 证书没有被吊销
      • 3 吊销检查错误
      • 4 没有吊销信息
      • 5 内部错误
    • crlRevocationStatus 与revocationStatus相同,但仅用于CRL信息(如果有)
    • ocspRevocationStatus 与revocationStatus相同,但仅用于OCSP信息(如果有)
    • dnsCaa 如果支持CAA,则为true,否则为false
      CAA(Certification Authority Authorization,证书颁发机构授权)是一项防止HTTPS证书错误颁发的安全措施。相关阅读:什么是CAA?
    • caaPolicy CAA政策,如果不支持CAA,则为Null
    • mustStaple - OCSP装订,服务器在TLS握手时发送事先缓存的OCSP响应,用户只需验证该响应的有效性而不用再向数字证书认证机构(CA)发送请求。相关阅读:OCSP装订若支持stapling则返回True,否则返回False
    • sgc SGC技术是在现有的SSL证书标准基础上,增加的一种增强密钥用法(EKU)相关阅读:SGC概览
      • bit 1 (1) - Netscape SGC
      • bit 2 (2) - Microsoft SGC
    • validationType E表示扩展验证证书; 如果无法确定,则可以为null。扩展验证(EV)SSL证书是目前最高水平的SSL证书。商家信息必须通过SSL证书颁发机构验证后,证明该商家是真实的,才能颁发此证书。
    • issues 证书问题列表,每个问题一位
      • bit 0 (1) - no chain of trust
      • bit 1 (2) - not before
      • bit 2 (4) - not after
      • bit 3 (8) - hostname mismatch
      • bit 4 (16) - revoked
      • bit 5 (32) - bad common name
      • bit 6 (64) - self-signed
      • bit 7 (128) - blacklisted
      • bit 8 (256) - insecure signature
      • bit 9 (512) - insecure key
    • sct 如果证书包含嵌入式SCT,则为true; 否则为假
    • sha1Hash 证书的sha1 hash值
    • sha256Hash 证书的sha256 hash值
    • pinSha256 公钥的sha256 hash值
    • keyAlg 密钥算法
    • keySize密钥长度,以适合密钥算法的位为单位。
    • keyStrength 密钥强度,等效于RSA位
    • raw PEM编码的证书

Limitation in SSL Labs Detections4
These tests are specific to protocol/cipher suite, SSL Labs only checks with preferred Protocol and CBC Cipher suite. There is a probability that the server could be vulnerable with other set of protocol/cipher suite.
SSL Labs only checks with a limited set of CBC cipher suite


  1. 服务器名称指示_维基百科 ↩︎

  2. TLS 握手优化详解 ↩︎

  3. 心脏出血漏洞_维基百科 ↩︎

  4. Zombie POODLE and GOLDENDOODLE Vulnerabilities ↩︎ ↩︎

  5. TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks ↩︎

  6. FREAK缺陷 ↩︎

  7. Ephemeral Diffie-Hellman with RSA (DHE-RSA) ↩︎

  8. Logjan_维基百科 ↩︎

  9. HPKP_维基百科 ↩︎

发布了9 篇原创文章 · 获赞 6 · 访问量 2390

猜你喜欢

转载自blog.csdn.net/Sunny_Ducky/article/details/100890096