【学习笔记】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

相关文章

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Nginx之upstream被动式重试机制的实现

《Nginx之upstream被动式重试机制的实现》本文主要介绍了Nginx之upstream被动式重试机制的实现,可以通过proxy_next_upstream来自定义配置,具有一定的参考价值,感兴... 目录默认错误选择定义错误指令配置proxy_next_upstreamproxy_next_upst

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查