TLS 1.2 与 TLS 1.3 的主要区别

TLS(Transport Layer Security)协议是 HTTPS 的核心安全保障。从 TLS 1.2 到 TLS 1.3,协议经历了重大改进。本文详细对比两者的主要区别,帮助你理解为什么应该优先使用 TLS 1.3。 握手过程:从 2-RTT 到 1-RTT TLS 1.2 的完整握手需要两次往返(2-RTT): 1 2 3 4 ClientHello + ServerHello + 证书 + 密钥交换 → ← ServerKeyExchange + 证书请求 + ServerHelloDone ClientKeyExchange + 证书验证 + Finished → ← Finished → 应用数据 TLS 1.3 将握手优化为一次往返(1-RTT): 1 2 3 ClientHello + 密钥交换材料 → ← ServerHello + 密钥交换材料 + 证书 + Finished Finished → 应用数据 TLS 1.3 还支持 0-RTT 模式,允许在首次连接时就开始发送加密数据,但需要预先共享密钥。...

April 18, 2026 · 2 min · 黑豆子

双向 TLS 认证实战指南

什么是双向 TLS 认证 普通 HTTPS 连接中,客户端验证服务器证书,确保连接的是真实的服务器。双向 TLS(Mutual TLS,简称 mTLS) 在此基础上增加了服务器对客户端的验证——客户端必须提供有效的证书才能建立连接。 这种认证方式比用户名密码更安全,广泛用于: API 服务间的身份认证 零信任网络架构 企业内部系统访问控制 高安全要求的金融、医疗系统 工作原理 mTLS 握手过程: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 客户端 服务器 | | |---------- ClientHello --------------->| |<--------- ServerHello ----------------| |<--------- Certificate ----------------| (服务器证书) |<--------- CertificateRequest ---------| (请求客户端证书) |<--------- ServerHelloDone ------------| | | |---------- Certificate ---------------->| (客户端证书) |---------- ClientKeyExchange --------->| |---------- CertificateVerify --------->| (证明拥有私钥) |---------- Finished ------------------>| |<--------- Finished -------------------| | | |====== 加密通信通道 ====================| 关键区别:服务器发送 CertificateRequest,客户端响应自己的证书并用私钥签名证明身份。...

April 11, 2026 · 3 min · 黑豆子

HTTPS 混合内容问题及解决方案

当 HTTPS 页面加载 HTTP 资源时,就会产生混合内容(Mixed Content)。浏览器会阻止不安全的请求,导致页面功能异常。本文介绍混合内容的类型、排查方法和解决方案。 什么是混合内容 HTTPS 页面中通过 HTTP 加载的资源称为混合内容: 1 2 3 4 <!-- HTTPS 页面中的混合内容 --> <script src="http://example.com/script.js"></script> <img src="http://example.com/image.jpg"> <link rel="stylesheet" href="http://example.com/style.css"> 混合内容类型 混合被动内容(Mixed Passive Content) 低风险资源,浏览器通常只显示警告: <img> 图片 <audio> / <video> 媒体 <object> 子资源 混合主动内容(Mixed Active Content) 高风险资源,浏览器会直接阻止: <script> 脚本 <link> 样式表 <iframe> 内嵌页面 XMLHttpRequest / Fetch 请求 <frame> / <object> 加载的页面 排查方法 浏览器控制台 打开开发者工具(F12),查看 Console 和 Security 面板: 1 2 3 Mixed Content: The page at 'https://example....

April 5, 2026 · 2 min · 黑豆子

OpenSSL s_client:SSL/TLS 连接调试工具

openssl s_client 是调试 SSL/TLS 连接的利器。它可以建立到远程服务器的 SSL/TLS 连接,显示证书链、协议版本、加密套件等详细信息,是排查 HTTPS 问题的必备工具。 基本用法 连接 HTTPS 服务器 1 openssl s_client -connect example.com:443 执行后会显示完整的 SSL/TLS 握手信息,包括证书链、协议版本、加密套件等。 指定 SNI(Server Name Indication) 对于共享 IP 的虚拟主机,必须指定 SNI: 1 openssl s_client -connect example.com:443 -servername example.com 不指定 SNI 时,服务器可能返回默认证书,导致证书验证失败。 常用场景 1. 查看证书信息 提取服务器证书并查看详情: 1 2 3 4 5 # 获取证书 echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com 2>/dev/null | openssl x509 -noout -text # 只看有效期 echo | openssl s_client -connect www....

April 5, 2026 · 2 min · 黑豆子

使用 OpenSSL 检查证书有效期

证书过期会导致服务不可用,提前监控证书有效期是运维的基本功。OpenSSL 提供了多种检查证书有效期的方法。 检查远程服务器证书 查看有效期 1 echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com 2>/dev/null | openssl x509 -noout -dates 输出: 1 2 notBefore=Jul 9 07:01:02 2025 GMT notAfter=Aug 10 07:01:01 2026 GMT notBefore:证书生效日期 notAfter:证书过期日期 检查本地证书文件 1 openssl x509 -in certificate.crt -noout -dates 查看剩余天数 1 openssl x509 -in certificate.crt -noout -checkend 0 输出: Certificate will not expire:证书未过期 Certificate will expire:证书已过期 检查是否在 30 天内过期(2592000 秒): 1 openssl x509 -in certificate.crt -noout -checkend 2592000 返回码:...

April 5, 2026 · 2 min · 黑豆子

OpenSSL s_client 排查 HTTPS 连接问题

使用 OpenSSL s_client 命令排查 HTTPS 连接问题,包括证书验证、握手过程、TLS 协议版本检测等实用技巧。

April 5, 2026 · 2 min · 黑豆子

OpenSSL 常用命令速查

整理 OpenSSL 最常用的命令,包括版本查看、证书生成、密钥操作、测试连接等,每个命令都经过实际验证。

April 3, 2026 · 2 min · 黑豆子

TLS 1.3 握手过程详解

深入解析 TLS 1.3 协议的握手流程,包括 ClientHello、ServerHello、密钥交换、证书验证等关键步骤,对比 TLS 1.2 的改进。

April 3, 2026 · 2 min · 黑豆子

OpenSSL 证书格式转换:PEM、DER、P7B、PFX 互转

详解 OpenSSL 在 PEM、DER、P7B、PFX 等证书格式之间的转换命令,每个命令都经过实际验证。

April 2, 2026 · 2 min · 黑豆子

SSL/TLS 握手详解:从连接到加密通道

本文深入解析 SSL/TLS 握手过程,理解加密通道如何建立以及密钥交换的原理。

April 2, 2026 · 2 min · 黑豆子