HTTPS之TLS证书

article/2025/10/16 22:13:29

文章目录

    • 一. TLS概述
      • 1. TLS概述
      • 2. `HTTPS` 协议栈与 `HTTP` 的唯一区别
      • 3. TLS协议版本
    • 二. TLS证书格式
      • 1. 概述
      • 2. 示例:知乎网站证书解析(mac系统)
      • 3. 通过openssl获取证书的含义
    • 三. 证书链(Certificate Chain)
      • 1. 背景
      • 2. 概述
      • 3. 背景问题的解释
    • 参考资料


一. TLS概述

1. TLS概述

  1. TLS 握手的作用之一是身份认证),被验证的一方需要提供一个身份证明。在 HTTPS 的世界里,这个身份证明就是 「TLS 证书」,或者称为 「HTTPS 证书」。
    • 例如,我们在访问 https://www.youzan.com 时,浏览器会得到一个 TLS 证书,这个数字证书用于证明我们正在访问的网站和证书的持有者是匹配的,否则因为身份认证无法通过,连接也就无法建立。
      在这里插入图片描述

    • 浏览器得到的是一个证书的链表,这个链表叫证书链(Certificate Chain)。

2. HTTPS 协议栈与 HTTP 的唯一区别

  • HTTPS 多了一个安全层(Security Layer),即 TLS/SSL
  • SSL 是最早的安全层协议, TLSSSL 发展而来,下面我们统称 TLS
    v2-29fee3e54e584905453e69c3df133e05_1440w.jpg

3. TLS协议版本

  • OkHttp是android端最火热的一个轻量级框架,用于替代HttpUrlConnectionApache HttpClient
  • 它用一个 enum 类型来表示 TLS 协议的不同版本。可以看到最早的版本是 SSLv3,诞生于 1996 年,最新的版本是 TLSv1.3。
public enum TlsVersion {TLS_1_3("TLSv1.3"), // 2016. (最新的版本)TLS_1_2("TLSv1.2"), // 2008.TLS_1_1("TLSv1.1"), // 2006.TLS_1_0("TLSv1"),   // 1999.SSL_3_0("SSLv3"),   // 1996.(最早的版本);final String javaName;
}

二. TLS证书格式

1. 概述

  1. 所有 CA 机构会遵守 X.509 规范来签发公钥证书(Public Key Certificate),证书内容的语法格式遵守 ASN.1,证书大致包含如下内容:
    在这里插入图片描述
  2. Certificate Issuer表示证书的签发者/颁发者。如访问网址 https://www.youzan.com[*.youzan.com]证书,它的签发者是它的父节点[GeoTrust RSA CA 2018]Issuer字段的内容是一组符合X.500规范的DN(Distinguished Name),其中DN是由逗号连接的相对专有名称(RDN,relative distinguished names)的序列。Issuer通常表示为:

Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=GeoTrust RSA CA 2018

属性名称属性值
DCdomainComponent
CNcommonName
OUorganizationUnitName
OorganizationName
STREETstreetAddress
LlocalityName
STstateOrProvinceName
UIDuserid

2. 示例:知乎网站证书解析(mac系统)

  1. 从浏览器导出网站的HTTPS证书到本地文件夹,网址为https://link.zhihu.com/?target=https%3A//www.youzan.com/。具体步骤,windows系统可以按照教程 (如何从浏览器导出HTTPS证书)完成,mac系统目前不知道如何导出。
  2. 将导出的证书文件拖入「Keychain Access」
    在这里插入图片描述
  3. 从 「Keychain Access」中导出证书,格式选择 pem
    在这里插入图片描述

-证书导出包含四种格式。但不知道为什么我导出的cer文件格式openssl解析失败。

证书:Certificate (.cer)
增强保密邮件:Privacy Enhanced Mail (.pem)
证书包Certificate Bundle (.p7b)
个人信息交换:Personal Information Exchange (.p12)

  1. terminal通过openssl命令查看证书内容

openssl x509 -in /Users/zijikanwa/*.zhihu.com.pem -text

Certificate:Data:Version: 3 (0x2)Serial Number:0e:3c:c1:49:94:b3:e1:74:a6:34:54:d9:90:64:66:d7Signature Algorithm: sha256WithRSAEncryptionIssuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=GeoTrust RSA CA 2018ValidityNot Before: Dec 25 00:00:00 2017 GMTNot After : Dec 24 12:00:00 2020 GMTSubject: C=CN, L=\xE5\x8C\x97\xE4\xBA\xAC\xE5\xB8\x82, O=\xE6\x99\xBA\xE8\x80\x85\xE5\x9B\x9B\xE6\xB5\xB7\xEF\xBC\x88\xE5\x8C\x97\xE4\xBA\xAC\xEF\xBC\x89\xE6\x8A\x80\xE6\x9C\xAF\xE6\x9C\x89\xE9\x99\x90\xE5\x85\xAC\xE5\x8F\xB8, OU=IT, CN=*.zhihu.comSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)Modulus:00:a0:a8:71:88:cf:5e:1b:e6:c8:45:ed:60:89:ce:d2:76:a0:af:03:a6:c1:18:bb:8c:8c:c7:cb:b6:93:ce:46:4f:46:74:66:49:1a:80:2c:ae:4f:1b:db:c1:5c:8d:ad:b6:23:06:dc:97:c0:d0:c4:7d:a9:f8:4e:79:e4:b4:d1:ed:41:c3:52:87:6c:ac:f3:05:86:5f:57:52:a0:d2:93:34:7c:6f:d5:4e:21:c4:7c:5b:be:6f:b0:3e:ef:6c:4c:8f:90:f7:ae:50:c9:a0:b7:dd:42:eb:c2:c0:58:0e:da:65:01:be:c1:43:6e:2f:f2:59:fd:b6:c4:59:1f:cd:ee:af:55:44:06:c4:8b:6e:b8:f7:1a:e1:ad:89:4a:0a:a2:9c:a3:a8:bc:65:41:f3:7d:e0:29:03:fb:84:a3:da:7b:fb:c9:ec:87:aa:87:5c:58:02:0e:02:d8:c1:cf:b1:1c:25:f7:df:ac:0a:a6:7b:c5:5d:d0:51:e2:97:c6:ff:01:17:21:a6:c0:fd:88:b1:a6:2d:aa:d0:4f:61:3c:35:13:dc:ff:51:ce:2d:48:18:c3:cd:05:43:60:e2:9a:4c:01:55:98:31:9d:f3:c4:4b:3b:49:17:d4:bd:0b:34:e1:24:05:a7:48:87:49:69:77:76:d0:d3:f2:70:f2:e7:c0:90:b1Exponent: 65537 (0x10001)X509v3 extensions:X509v3 Authority Key Identifier: keyid:90:58:FF:B0:9C:75:A8:51:54:77:B1:ED:F2:A3:43:16:38:9E:6C:C5X509v3 Subject Key Identifier: 31:63:1F:A1:0B:43:D7:A5:8C:3D:F6:2E:85:69:D4:E1:E3:56:91:46X509v3 Subject Alternative Name: DNS:*.zhihu.com, DNS:zhihu.comX509v3 Key Usage: criticalDigital Signature, Key EnciphermentX509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client AuthenticationX509v3 CRL Distribution Points: Full Name:URI:http://cdp.geotrust.com/GeoTrustRSACA2018.crlX509v3 Certificate Policies: Policy: 2.16.840.1.114412.1.1CPS: https://www.digicert.com/CPSPolicy: 2.23.140.1.2.2Authority Information Access: OCSP - URI:http://status.geotrust.comCA Issuers - URI:http://cacerts.geotrust.com/GeoTrustRSACA2018.crtX509v3 Basic Constraints: CA:FALSESignature Algorithm: sha256WithRSAEncryption54:73:e6:02:db:5d:49:30:4d:61:71:ac:ef:6d:f1:52:af:45:f2:0f:81:94:0b:5c:0e:bd:b6:c2:98:af:08:6c:11:45:25:e9:8d:7d:80:d8:3e:78:50:5d:f8:4d:bf:ef:6d:fd:8a:74:d9:6c:90:65:55:b6:d1:59:3a:07:25:42:6a:74:b0:dd:31:e2:a0:50:04:4a:03:fe:61:24:e7:74:33:c9:69:94:70:79:d9:89:20:c3:80:b2:e7:73:72:b6:73:00:10:8f:8e:25:0e:1f:41:b6:bc:86:da:d2:b4:ae:c7:b9:1d:80:fa:58:e7:ba:79:2c:ef:63:5a:96:af:03:22:98:78:58:57:9f:70:45:a3:0a:22:87:c3:ef:45:7d:2a:ed:d8:1b:38:2e:9e:d7:27:7e:53:d1:44:62:3d:cb:d0:e6:01:e6:3a:5c:86:8c:d5:b8:91:4c:d8:55:07:e6:23:03:71:23:ce:19:f6:4e:a4:ba:69:55:eb:d9:11:49:32:09:ee:b8:58:43:69:ff:51:6b:c6:17:7f:74:83:50:19:a0:99:79:64:6a:e0:ff:5b:f5:51:53:fb:22:3a:10:a4:4f:ed:25:b2:ca:cb:8a:1b:1e:bc:db:5d:46:95:31:fe:03:c8:cc:42:dc:b6:e4:29:d9:85:f9:6a:4e:39:d8
-----BEGIN CERTIFICATE-----
MIIFCTCCA/GgAwIBAgIQDjzBSZSz4XSmNFTZkGRm1zANBgkqhkiG9w0BAQsFADBe
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMR0wGwYDVQQDExRHZW9UcnVzdCBSU0EgQ0EgMjAxODAe
Fw0xNzEyMjUwMDAwMDBaFw0yMDEyMjQxMjAwMDBaMHkxCzAJBgNVBAYTAkNOMRIw
EAYDVQQHDAnljJfkuqzluIIxMzAxBgNVBAoMKuaZuuiAheWbm+a1t++8iOWMl+S6
rO+8ieaKgOacr+aciemZkOWFrOWPuDELMAkGA1UECxMCSVQxFDASBgNVBAMMCyou
emhpaHUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoKhxiM9e
G+bIRe1gic7SdqCvA6bBGLuMjMfLtpPORk9GdGZJGoAsrk8b28Fcja22Iwbcl8DQ
xH2p+E555LTR7UHDUodsrPMFhl9XUqDSkzR8b9VOIcR8W75vsD7vbEyPkPeuUMmg
t91C68LAWA7aZQG+wUNuL/JZ/bbEWR/N7q9VRAbEi2649xrhrYlKCqKco6i8ZUHz
feApA/uEo9p7+8nsh6qHXFgCDgLYwc+xHCX336wKpnvFXdBR4pfG/wEXIabA/Yix
pi2q0E9hPDUT3P9Rzi1IGMPNBUNg4ppMAVWYMZ3zxEs7SRfUvQs04SQFp0iHSWl3
dtDT8nDy58CQsQIDAQABo4IBpjCCAaIwHwYDVR0jBBgwFoAUkFj/sJx1qFFUd7Ht
8qNDFjiebMUwHQYDVR0OBBYEFDFjH6ELQ9eljD32LoVp1OHjVpFGMCEGA1UdEQQa
MBiCCyouemhpaHUuY29tggl6aGlodS5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1Ud
JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjA+BgNVHR8ENzA1MDOgMaAvhi1odHRw
Oi8vY2RwLmdlb3RydXN0LmNvbS9HZW9UcnVzdFJTQUNBMjAxOC5jcmwwTAYDVR0g
BEUwQzA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGln
aWNlcnQuY29tL0NQUzAIBgZngQwBAgIwdQYIKwYBBQUHAQEEaTBnMCYGCCsGAQUF
BzABhhpodHRwOi8vc3RhdHVzLmdlb3RydXN0LmNvbTA9BggrBgEFBQcwAoYxaHR0
cDovL2NhY2VydHMuZ2VvdHJ1c3QuY29tL0dlb1RydXN0UlNBQ0EyMDE4LmNydDAJ
BgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQBUc+YC211JME1hcazvbfFSr0Xy
D4GUC1wOvbbCmK8IbBFFJemNfYDYPnhQXfhNv+9t/Yp02WyQZVW20Vk6ByVCanSw
3THioFAESgP+YSTndDPJaZRwedmJIMOAsudzcrZzABCPjiUOH0G2vIba0rSux7kd
gPpY57p5LO9jWpavAyKYeFhXn3BFowoih8PvRX0q7dgbOC6e1yd+U9FEYj3L0OYB
5jpchozVuJFM2FUH5iMDcSPOGfZOpLppVevZEUkyCe64WENp/1Frxhd/dINQGaCZ
eWRq4P9b9VFT+yI6EKRP7SWyysuKGx68211GlTH+A8jMQty25CnZhflqTjnY
-----END CERTIFICATE-----

3. 通过openssl获取证书的含义

  1. 一个 证书(Certificate) 由 数据(Data) 和 签名(Signature) 两部分组成
  2. 数据(Data)包含内容如下
    • 证书版本号(Version):X.509v3
    • 序列号(Serial Number):一个 CA 机构内是唯一的,但不是全局唯一
    • 签名算法(Signature Algorithm):签名的计算公式为RSA(sha256(Data), IssuerPrivateKey)
    • 签发者(Issuer):DN(Distinguished Name)
    • 有效期(Validity):证书的有效期间 [Not Before, Not After]
    • 证书拥有者(Subject):也是一个 DN公钥长度一般是 2048bit,1024bit已经被证明不安全
    • 扩展字段(X509v3 extensions):证书所携带的域名信息会配置在 SAN 中(X509v3 Subject Alternative Name)
  3. 签名(Signature):位于证书最末尾,签名算法 sha256WithRSAEncryption 在 Data 域内已经指明 ,而 RSA 进行非对称加密所需的私钥(Private Key)是由 Issuer 提供。
    • Issuer 是一个可以签发证书的证书,由证书权威 CA 提供,CA 需要保证证书的有效性,而且 CA 的私钥需要绝密保存,一旦泄露出去,证书可能会被随意签发。
    • 生成签名的公式:Signature = RSA(sha256(Data), IssuerPrivateKey)

三. 证书链(Certificate Chain)

1. 背景

  • UA(如客户端/浏览器)拿到TLS证书之后,需要Issuer的公钥(Public Key)才能解码出Data的信息摘要。但是证书只携带了Issuer的DN,并没有公钥,那客户端是如何获取到公钥的?
    在这里插入图片描述

2. 概述

  • X.509 除了规范证书的内容之外,还规范了如何获取 CRL 以及 证书链(Certificate Chain) 的验证算法。

3. 背景问题的解释

  1. 在访问网址(https://www.youzan.com)时,浏览器并非只拿到一个证书,而是一个证书链:
DigiCert Global Root CA|__  GeoTrust RSA CA 2018|__  *.zhihu.com
  1. 证书「*.zhihu.com」的 签发者(Issuer)就是它的父节点「GeoTrust RSA CA 2018」。因为 UA(浏览器或操作系统)中会预先内置一些权威 CA签发的根证书(Root Certificate)或中间证书(Intermediate Certificate),例如上面的 「GeoTrust RSA CA 2018」「DigiCert Global Root CA」
    在这里插入图片描述

  2. 当获得证书链之后,我们就可以很轻松的往上回溯到被 UA 信任的证书,虽然 UA 内置的可能是中间证书(Intermediate Certificate)。

  3. 但是如果一个 End-Entity 证书即使回溯到跟证书(Root Certificate)也没有在 UA 的受信列表中找到,那么这个站点就会被标记为不安全。例如 12306 的主页被标记为 “Not Secure",因为它的根证书不被信任。
    在这里插入图片描述


参考资料

  • HTTPS 精读之 TLS 证书校验

http://chatgpt.dhexx.cn/article/CT3rTIr0.shtml

相关文章

SSL和TLS简单概述

SSL和TLS简单概述 本文不会只有几个比较重要的概念,科普性质的文章,方便自己记忆,极大概率存在缺陷 如果想了解这方面的内容,请参阅官方文档。 SSL和TLS TLS是更安全版本的ssl,先出的的ssh,一个基于加密机制的应用,之后为了方便给其他应用层使用然后引入了ssl,最…

动态内存管理——tlsf

定义 TLSF(全称Two-Level Segregated Fit) 源码 https://github.com/mattconte/tlsf 代码 结构体 typedef struct block_header_t {/* 指向上一个物理块。*/struct block_header_t * prev_phys_block;/* 此块的大小,不包括块头。*/size_t size;/* 下一个和上一…

SSL与TLS协议详解

写在最前面的话:这篇文章是我借鉴了Eric Rescorla的《SSL and TLS》一书之后对该书的前半部分内容整合而做。如您需要开发围绕SSL、TLS的程序建议参阅原著或者RFC相关文档。 一、关于SSL、TLS与HTTPS的三两事 什么是SSL、TLS: 众所周知,真…

TLS协议/SSL协议

历史背景 SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层,最初是由网景公司(Netscape)研发,后被IETF(The Internet Engineering Task Force - 互联网工程任务组)标准化后写入&#xf…

TLS加密体系

谈到这个词,可能大家的第一印象就是加密,而对TLS了解甚少。那么在介绍 TLS 加密体系之前先来讲一讲加密。 一提到加密,可能很多人脑海中会浮现出电视剧里特务的场景,他们拿出一台电报机,“滴滴滴滴”按下情报报文&…

TLS概述

握手过程 可分为5步(使用Diffie – Hellman算法): 第一步,浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。 第二步,服务器确认双方使用的…

SSL与DTLS简介

目录 SSL简介 DTLS-基于UDP的TLS 记录层 传输层映射 早期我们在访问web时使用HTTP协议,该协议在传输数据时使用明文传输,会带来了以下风险: 信息窃听风险,第三方可以获取通信内容; 信息篡改风险,第三方…

TLS/SSL 协议

TLS/SSL 协议的工作原理 TLS/SSL 协议的工作原理 • 身份验证 • 保密性 • 完整 TLS/SSL 发展 TLS 协议 • Record 记录协议 • 对称加密 • Handshake 握手协议 • 验证通讯双方的身份 • 交换加解密的安全套件 • 协商加密参 TLS 安全密码套件解 对称加密的工作原理&am…

SSL/TLS详解

SSL/TLS详解 1. 前言 ​ 我们都知道Https就是加密协议中采用了SSL/TLS协议,这是面试常客,如果被问到了,你懂的越多,答得越深,你的面评相应来说也就会越高,对于SSL/TLS,我们不仅仅要知道其为数…

TLS协议简单介绍

TLS简介 介绍 TLS(Transport Layer Security)即安全传输层协议,在两个通信应用程序之间提供保密性和数据完整性。最典型的应用就是HTTPS。HTTPS,即HTTP over TLS,就是安全的HTTP,运行在HTTP层之下&#x…

esp-idf的内存管理——tlsf之上的封装

目录 1 为什么要封装2 先看结构2.1 multi heapnote1note2 2.2 heap caps2.3 层次关系 3 再看接口3.1 内存的申请3.2 内存的释放3.2 堆完整性检测3.3 其它 参考 1 为什么要封装 封装通常会降低效率,但能够带来诸如通用性提升等好处,idf在tlsf的基础上增加…

SSL/TLS 证书管理

SSL 证书发现 随着组织的 IT 基础架构的扩展,他们为每台计算机获取证书以保护其资源和域。此外,开发人员通常会创建许多自签名证书,以便在产品的开发阶段保护内部网络。组织通常最终会拥有数千个证书。自动发现证书提供了对证书基础结构的完…

TLS协议。

IPSec通过安全关联实现IP分组安全关联两端之间的安全传输过程,TLS通过建立安全连接实现数据在两个应用进程之间的安全传输过程。TLS建立安全连接时,实现安全连接两端应用进程之间的双向身份鉴别过程,保证经过安全连接传输的数据的保密性和完整…

SSL/TLS协议

SSL/TLS协议 文章目录 SSL/TLS协议1 协议历史2 协议的目标3 SSL体系结构4 两个主要的协议5 SSL的两个重要概念6 会话状态参数7 连接状态参数8 SSL Record Protocol9 SSL记录协议中的操作10 SSL握手协议使用的消息11 SSL握手协议的流程 1 协议历史 1994年Netscape开发了SSL(Sec…

tls协议

tls 前言一、TLS 协议的组成二、ECDHE1.连接过程 三、TLS1.31.过程 前言 tls是ssl协议的标准化,处于应用层(5层架构)和会话层(OSI),有着rsa方式和ecdhe两种, 一、TLS 协议的组成 握手协议:负责在客户端和服务器之间协商决定密码算…

TLS协议详解!

TLS简介 SSL 即安全套接字层,它在 OSI 七层网络模型中处于第五层,SSL 在 1999 年被 IETF(互联网工程组)更名为 TLS ,即传输安全层,直到现在,TLS 一共出现过三个版本,1.1、1.2 和 1.3 ,目前最广…

esp-idf的内存管理——tlsf算法

目录 1 最初还不是tlsf2 为什么要引入tlsf3 tlsf算法概览4 idf中使用的tlsf算法的设计与实现4.1 先看结构4.1.1 管理内存块的结构4.1.2 管理tlsf堆的结构 4.2 优化内存块的元数据开销4.3 一二级位图索引的计算4.4 tlsf堆的创建与销毁4.4.1 tlsf堆的创建4.4.2 tlsf堆的销毁 4.5 …

TLSF算法1:二级索引的计算

TLSF算法1:二级索引的计算 一、什么是TLSF算法二,f的确定三、s的确定四、实验结果一、什么是TLSF算法 在嵌入式系统中,内存需要在分配和释放时有一个确定的相应时间,才能进一步分析其实时任务的可调度性。因此TLSF算法是一个十分适用嵌入式领域的动态内存分配算法。在关于T…

TLSF 内存分配算法详解

文章目录 1. DSA 背景介绍1.1 mmheap1.2 mmblk 2. TLSF 原理2.1 存储结构2.2 内存池初始化2.3 free2.4 malloc 参考资料 1. DSA 背景介绍 动态内存管理算法 DSA,Dynamic storage allocation。RTOS 一般情况下动态内存使用malloc申请分配,但是存在两个缺…

tlsf算法-概念、原理、内存碎片问题分析

文章目录 一、tlsf算法介绍二、tlsf代码分析2.1 mapping_search2.2 search_suitable_block 三、参考链接 一、tlsf算法介绍 tlsf(全称Two-Level Segregated Fit,内存两级分割策略算法),第一级(first level&#xff0c…