【学习笔记】SSL证书安全机制之证书撤销

2024-09-06 19:12

本文主要是介绍【学习笔记】SSL证书安全机制之证书撤销,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:以往提到过,钓鱼网站会仿冒我们,如果我们的私钥泄露了,如果被不法分子得到了私钥,他们就能假装是我们网站。那现在,我们要做的是生成新私钥并申请新证书。问题来了,旧的证书亦然存在且有效,我们没法阻止不法分子恶意去使用该证书。这时候,我们就需要证书撤销(Certificate Revocation)

1、定义

        Certificate Revocation(证书撤销)是使特定证书失效的过程。

2、有2种方式来检查证书是否被撤销

  • CRL - Certificate Revocation List
  • OCSP - Online Certificate Status Protocol

3、CRL - Certificate Revocation List,证书撤销列表

  • 由CA维护的、被撤销的证书的列表
  • CRL的位置嵌入在每一张证书里
  • CRL包含证书序列号和被撤销的日期,有时CRL条目还包含撤销原因
  • Client如何检查该列表
    • Client向Server请求一张证书,然后Server会提供证书
    • Client一旦得到证书,就会从证书里定位到CRL分发点,然后从CA下载CRL
    • Client会检查CRL的每个条目来找到证书的序列号(如果证书序列号出现在CRL中,说明该证书已经被撤销,不可信了;反之,如果没有在CRL中找到该证书序列号,说明证书没有被撤销,我们可以继续信任它)

    • 对CRL流程的批评
      • 繁琐而缓慢
        • CRL非常长,有成千上万行,每次Client访问新的SSL网站,都要检查证书撤销列表,意味着浏览器要加载很久
        • 此外,这些CRL是公共托管的列表,因而不是实时更新的(CA每5-14天更新一次,如果我证书私钥今天泄露了,而CA昨天刚更新一次CRL,那我后面两周就不安全了)
      • 经常甚至没有被检查
        • 而相比安全,用户更倾向于速度
        • 一些浏览器维护本地CRL
          • Chrome:CRLSet;Firefox:oneCRL

4、OCSP - Online Certificate Status Protocol,在线证书状态协议

  • “OCSP Responder”(OCSP应答器)由CA所维护
    • 提供实时证书状态
  • 优点是可以根据序列号单独请求状态(不用每次都检查成千上万个条目了)
  • OCSP应答器的位置被嵌入在每张证书里(和CRL一样)
  • 请求是通过HTTP
    • 证书状态不是敏感信息
    • 状态由CA所签名(用CA的公钥可以验证是不是对的OCSP应答器)
  • OCSP流程
    • Client向Server请求证书,然后查看证书里的OCSP应答器的URL
    • Client向OCSP应答器(由CA所维护)请求证书状态
    • OCSP应答器会回复状态信息
      • Good;Revoked;Unknown
  • OCSP的2个批评
    • 隐私:每次Client访问Server,CA都会被联系到
      • CA知道Server的访问数据
      • CA知道到Client访问浏览器的历史信息
    • 需要非常有弹性(resilient)的OCSP应答器
      • OCSP应答器要随时准备好应对大量的访问,万一因为访问量过大而导致服务器超载并且宕机了,那么Client就没法查看证书状态了
    • 因为OCSP是通过HTTP进行请求,而HTTP请求能够被中断(虽然因为CA的签名没法更改状态,但可以直接中断)

5、OCSP Stapling(OCSP装订,修正了OCSP的问题)-目前行业内最好的解决方案

  • Server会间歇性地请求自己的状态
    • 刷新间隔:5分钟 - 10天
    • 状态带有时间戳并且被CA签名
  • Client请求证书及其状态
  • Server提供证书以及从CA得到的状态
    • 状态是可信的,因为有CA的签名,而我们信任该CA
  • Server的安全负担
    • 而不是Client(这是好事,Client不需要做太多安全相关的事情)
  • 需要支持TLS1.2+或更高版本
    • 也需要Client和Server支持
    • 目前支持的只有30%多的Server

参考文献

1、网站:Practical Networking.net:Practical TLS

这篇关于【学习笔记】SSL证书安全机制之证书撤销的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142879

相关文章

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

Java 的 Condition 接口与等待通知机制详解

《Java的Condition接口与等待通知机制详解》在Java并发编程里,实现线程间的协作与同步是极为关键的任务,本文将深入探究Condition接口及其背后的等待通知机制,感兴趣的朋友一起看... 目录一、引言二、Condition 接口概述2.1 基本概念2.2 与 Object 类等待通知方法的区别

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示