<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>ssl on SecDoc</title>
    <link>https://secdoc.jazor.net/tags/ssl/</link>
    <description>Recent content in ssl on SecDoc</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <copyright>© 2026 黑豆子</copyright>
    <lastBuildDate>Mon, 18 May 2026 00:07:06 +0800</lastBuildDate><atom:link href="https://secdoc.jazor.net/tags/ssl/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>X.509 证书扩展详解</title>
      <link>https://secdoc.jazor.net/posts/x509-certificate-extensions-guide/</link>
      <pubDate>Mon, 18 May 2026 00:07:06 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/x509-certificate-extensions-guide/</guid>
      <description>X.509 证书的核心功能由扩展（Extensions）机制实现。扩展允许在证书中添加额外信息，定义证书的用途、约束、身份验证方式等关键属性。本文详细介绍常见扩展的作用和使用方法。
什么是证书扩展 X.509 v3 引入的扩展机制是现代 PKI 的基础。每个扩展由 OID（对象标识符）、关键性标志和扩展值组成。
扩展分为两类：
关键扩展（Critical）：证书使用者必须理解和处理的扩展，否则证书验证失败 非关键扩展（Non-critical）：可选的扩展，可被忽略但不应影响验证 常见扩展详解 1. Basic Constraints（基本约束） 定义证书是否为 CA（证书颁发机构）以及证书链深度。
1 2 3 4 5 6 7 8 # CA 证书 basicConstraints=CA:TRUE # 终端实体证书 basicConstraints=CA:FALSE # 无限制的 CA 路径长度 basicConstraints=CA:TRUE,pathlen:10 实际输出：
1 2 X509v3 Basic Constraints: CA:TRUE 2. Key Usage（密钥用法） 指定证书密钥的允许用途。
1 2 3 4 5 6 7 8 # 服务器认证证书 keyUsage=digitalSignature,keyEncipherment # CA 签名证书 keyUsage=digitalSignature,keyCertSign,cRLSign # 代码签名证书 keyUsage=digitalSignature,nonRepudiation 常见值：
digitalSignature：数字签名 keyEncipherment：密钥加密 dataEncipherment：数据加密 keyCertSign：证书签名 cRLSign：CRL 签名 3.</description>
    </item>
    
    <item>
      <title>国密 SSL/TLS 配置指南：SM2/SM3/SM4 在 Nginx 中的应用</title>
      <link>https://secdoc.jazor.net/posts/nginx-gmssl-tls-configuration/</link>
      <pubDate>Sun, 17 May 2026 00:09:53 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/nginx-gmssl-tls-configuration/</guid>
      <description>介绍国密 SSL/TLS 算法（SM2/SM3/SM4），讲解在 OpenSSL 和 Nginx 中配置国密加密的实战方法。</description>
    </item>
    
    <item>
      <title>OpenSSL s_time：SSL/TLS 性能测试工具详解</title>
      <link>https://secdoc.jazor.net/posts/openssl-s-time-performance-tool/</link>
      <pubDate>Sat, 16 May 2026 00:08:50 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-s-time-performance-tool/</guid>
      <description>openssl s_time 是 OpenSSL 官方提供的 SSL/TLS 性能基准测试工具。它通过模拟大量握手连接来测量服务器的每秒处理能力，是评估 TLS 性能的重要工具。
基本用法 1 openssl s_time -connect example.com:443 -new -time 10 参数说明：
-connect host:port — 目标服务器地址（默认端口 4433） -new — 测试新建连接（完整握手） -reuse — 测试连接重用（会话恢复） -time seconds — 测试持续时间（默认 30 秒） 实际测试示例 测试 TLS 1.3 新建连接 1 2 3 4 5 6 $ openssl s_time -connect localhost:443 -new -time 3 -tls1_3 Collecting connection statistics for 3 seconds ********************************************************************************************************************************************************************************************************************************** 1243 connections in 1.85s; 671.89 connections/user sec, 0 bytes read per connection 1243 connections in 4 real seconds 测试 TLS 1.</description>
    </item>
    
    <item>
      <title>OpenSSL 交叉签名证书详解与实战</title>
      <link>https://secdoc.jazor.net/posts/openssl-cross-signed-certificates/</link>
      <pubDate>Fri, 15 May 2026 00:09:25 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-cross-signed-certificates/</guid>
      <description>交叉签名证书（Cross Signed Certificate）是 SSL/TLS 基础设施中一个重要但常被误解的概念。本文深入解释交叉签名的原理、适用场景以及 OpenSSL 操作方法。
什么是交叉签名？ 交叉签名是指由一个 CA（证书颁发机构）对另一个 CA 的证书进行签名。签名的对象是 CA 证书本身，而不是终端实体证书。
1 2 3 4 原始链：Root CA → Intermediate CA → Server Certificate 交叉签名链：Root CA (新) → Cross-signed Intermediate CA → Server Certificate ↑ 由新Root CA签名 关键特征：
交叉签名证书的 Subject（主题）与原始中间 CA 相同 Issuer（颁发者）变为进行交叉签名的根 CA 公钥与原始中间 CA 完全相同 典型使用场景 1. 多根 CA 信任 企业可能有两个不同的根 CA（如并购后的整合），需要让一张证书同时被两个根 CA 信任。
1 场景：公司有两个根 CA（Root CA 1 和 Root CA 2），都需要信任同一张服务器证书 2. 旧客户端兼容性 某些老旧客户端只信任特定的根 CA，通过交叉签名让新证书也能被这些客户端接受。</description>
    </item>
    
    <item>
      <title>OpenSSL verify 命令详解：证书链验证原理与实践</title>
      <link>https://secdoc.jazor.net/posts/openssl-verify-certificate-chain-validation/</link>
      <pubDate>Thu, 14 May 2026 00:08:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-verify-certificate-chain-validation/</guid>
      <description>详解 OpenSSL verify 命令的用法，包括证书链验证、CA 存储、partial_chain、trust 设置等核心参数，每个命令都经过实际验证。</description>
    </item>
    
    <item>
      <title>OpenSSL Engine 机制与硬件安全模块集成</title>
      <link>https://secdoc.jazor.net/posts/openssl-engine-hsm-integration/</link>
      <pubDate>Wed, 13 May 2026 00:06:58 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-engine-hsm-integration/</guid>
      <description>深入解析 OpenSSL Engine 架构，讲解如何通过 Engine 接口集成 HSM、PKCS#11 设备、云 KMS 等外部加密服务。</description>
    </item>
    
    <item>
      <title>Nginx 中椭圆曲线配置实战指南</title>
      <link>https://secdoc.jazor.net/posts/nginx-ecdsa-curve-configuration/</link>
      <pubDate>Tue, 12 May 2026 00:06:06 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/nginx-ecdsa-curve-configuration/</guid>
      <description>在配置 HTTPS 时，ECDHE（椭圆曲线 Diffie-Hellman 密钥交换）是实现完全前向保密（PFS）的核心机制。但很多人忽视了曲线选择的重要性——不同的椭圆曲线在安全级别和性能上差异显著。本文详细介绍 Nginx 中如何选择和配置椭圆曲线。
椭圆曲线基础 椭圆曲线密码学（ECC）相比传统 RSA 具有更短的密钥和更高的安全性。以常见的曲线为例：
曲线 密钥长度 安全级别 适用场景 prime256v1 (secp256r1) 256 位 约 128 位 通用场景，推荐 X25519 256 位 约 128 位 现代推荐，更快 secp384r1 384 位 约 192 位 高安全需求 secp521r1 521 位 约 256 位 最高安全级别 注意：X25519 是蒙哥马利曲线，只用于密钥交换；secp256r1 是魏尔斯特拉斯曲线，可同时用于密钥交换和数字签名。
查看 Nginx 支持的曲线 首先确认 Nginx 编译时支持的椭圆曲线列表：
1 2 3 4 5 # 查看 Nginx 支持的曲线 nginx -V 2&amp;gt;&amp;amp;1 | grep -o &amp;#34;X25519\|secp256r1\|secp384r1&amp;#34; # 运行时查看 OpenSSL 支持的曲线 openssl ecparam -list_curves | grep -E &amp;#34;prime256v1|secp384r1|X25519&amp;#34; 输出示例：</description>
    </item>
    
    <item>
      <title>TLS 1.3 Hello Retry Request 机制详解</title>
      <link>https://secdoc.jazor.net/posts/tls13-hello-retry-request/</link>
      <pubDate>Mon, 11 May 2026 00:05:42 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls13-hello-retry-request/</guid>
      <description>在 TLS 1.3 的握手过程中，客户端首先发送 ClientHello 消息，其中包含支持的密码套件、扩展和密钥共享参数。有时候服务端发现客户端提供的参数需要调整，就会发送一个特殊的响应——Hello Retry Request（简称 HRR）。本文详解 HRR 的触发条件、工作原理和实际观察方法。
什么是 Hello Retry Request Hello Retry Request 是 TLS 1.3 引入的一种握手优化机制。当服务端收到的 ClientHello 消息中的参数不符合要求时（比如缺少必要的密钥共享、密码套件不匹配等），服务端不会直接拒绝连接，而是发送一个 HelloRetryRequest 消息，要求客户端重新发送带有正确参数的 ClientHello。
这与 TLS 1.2 的行为形成对比——TLS 1.2 中如果密码套件不兼容，服务端会直接发送 Handshake Failure 警报并终止连接。
HRR 的触发条件 HRR 主要在以下几种情况被触发：
1. Key Share 不符合要求 客户端发送的 key_share 扩展中提供的密钥共享参数不被服务端接受。常见原因包括：
使用了服务端不支持的椭圆曲线 密钥共享参数格式不正确 2. 缺少必要的 Cookie 服务端要求验证客户端身份时，会在 HRR 中包含 cookie 扩展，客户端下一次 ClientHello 必须原样返回这个 Cookie。
3. 密码套件协商 虽然现代 TLS 1.3 实现通常支持所有标准密码套件，但在某些特殊配置下，服务端可能要求客户端使用特定的套件。
HRR 工作流程 完整的 HRR 流程如下：</description>
    </item>
    
    <item>
      <title>TLS Alert Protocol 告警协议详解</title>
      <link>https://secdoc.jazor.net/posts/tls-alert-protocol-explained/</link>
      <pubDate>Sun, 10 May 2026 00:06:28 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-alert-protocol-explained/</guid>
      <description>在 TLS 协议通信过程中，当发生错误或需要通知对方某些情况时，Alert Protocol（告警协议） 就会发挥作用。理解告警协议有助于排查 TLS 连接问题和进行安全调试。
什么是 TLS Alert Protocol TLS Alert Protocol是 TLS 记录层的子协议之一，用于在 TLS 会话中传递告警信息。这些告警可以是：
警告（Warning）：告知对方注意某些情况，但不会中断连接 致命错误（Fatal）：导致连接立即关闭 告警消息通常在以下场景出现：
证书验证失败 握手过程出错 加密操作异常 协议版本不兼容 告警消息格式 每个告警消息包含两个字段：
字段 长度 说明 Alert Level 1 字节 1 = Warning，2 = Fatal Alert Description 1 字节 具体告警类型的编号 1 2 3 4 +----------------+----------------+ | Alert Level | Alert Descr | | (1 byte) | (1 byte) | +----------------+----------------+ 告警级别 Warning（警告） 警告级别告警不会终止连接，但可能影响后续通信。常见警告包括：
close_notify：正常关闭通知 no_certificate：无可用证书 bad_certificate：证书格式有问题 unsupported_certificate：不支持的证书类型 certificate_revoked：证书已吊销 certificate_expired：证书已过期 certificate_unknown：证书未知 Fatal（致命） 致命告警会导致连接立即关闭。常见致命告警包括：</description>
    </item>
    
    <item>
      <title>DNS CAA 记录：控制证书颁发权限的安全机制</title>
      <link>https://secdoc.jazor.net/posts/dns-caa-record-guide/</link>
      <pubDate>Sat, 09 May 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/dns-caa-record-guide/</guid>
      <description>DNS CAA（Certification Authority Authorization）记录是一种 DNS 记录类型，用于声明哪些证书颁发机构（CA）可以为特定域名颁发 SSL/TLS 证书。作为域名所有者，通过配置 CAA 记录，可以有效防止未经授权的证书被颁发，保护网站安全。
什么是 CAA 记录 CAA 记录于 2013 年在 RFC 6844 中定义，允许域名管理者明确指定允许为该域名颁发证书的 CA。CAA 记录的工作原理是：当 CA 收到证书申请时，会查询域名的 DNS CAA 记录，如果发现没有授权给自己，则拒绝颁发证书。
CAA 记录的作用 防止证书被冒领：阻止未经授权的 CA 为你的域名颁发证书 提升安全等级：确保只有指定的 CA 可以提供证书服务 审计追踪：CAA 记录可以要求 CA 在颁发证书时发送通知 CAA 记录格式详解 CAA 记录的基本格式如下：
1 CAA &amp;lt;flags&amp;gt; &amp;lt;tag&amp;gt; &amp;lt;value&amp;gt; 关键字段 字段 说明 flags 8 位标志字段，目前使用 bit 0（关键位） tag 标签，指定 CAA 记录的类型的 value 标签对应的值 常用标签 CAA 记录支持多种标签，常用的包括：
标签 说明 示例 issue 授权指定 CA 颁发证书 issue &amp;quot;letsencrypt.</description>
    </item>
    
    <item>
      <title>TLS 1.3 预共享密钥（PSK）实战指南</title>
      <link>https://secdoc.jazor.net/posts/tls13-psk-pre-shared-key-guide/</link>
      <pubDate>Fri, 08 May 2026 00:05:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls13-psk-pre-shared-key-guide/</guid>
      <description>预共享密钥（PSK，Pre-Shared Key）是 TLS 1.3 引入的重要特性，允许通信双方在握手前共享对称密钥，简化握手流程并提升性能。本文详细介绍 PSK 的原理、使用场景以及 OpenSSL 命令行实战。
什么是 PSK？ PSK 是一种在 TLS 握手前就共享的对称密钥。在传统 TLS 握手过程中，客户端和服务端需要通过公钥密码学协商出共享密钥；而使用 PSK 时，双方直接使用预先共享的密钥进行加密通信。
PSK 的优势 减少握手延迟：省去公钥协商步骤，缩短握手时间 降低计算开销：无需执行昂贵的非对称加密运算 适用于特定场景：物联网设备、CDN 加速等对性能要求高的场景 PSK 的使用场景 会话恢复（Session Resumption）：TLS 会话恢复本质上使用 PSK 物联网设备：计算资源受限的设备间安全通信 CDN 边缘节点：需要快速建立大量连接的场景 内部服务通信：在可信网络中使用对称密钥 PSK 密钥生成 PSK 密钥通常是 256 位（32 字节）的随机数据。使用 OpenSSL 生成：
1 2 # 生成 256 位 PSK 密钥（32 字节 = 64 个十六进制字符） openssl rand -hex 32 输出示例：
1 779cfa0b22020c13ae4e841e0c96b1b90b3afa48f6bcb85192f1694156676aac ⚠️ 注意：PSK 密钥必须安全存储和传输，不要在代码中硬编码或通过网络明文传输。
OpenSSL s_client PSK 测试 基础连接测试 使用 PSK 连接到支持 PSK 的服务器：</description>
    </item>
    
    <item>
      <title>TLS 1.3 密钥更新机制解析</title>
      <link>https://secdoc.jazor.net/posts/tls13-key-update-mechanism/</link>
      <pubDate>Wed, 06 May 2026 00:06:32 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls13-key-update-mechanism/</guid>
      <description>TLS 1.3 作为最新版本的传输层安全协议，在握手效率和安全性方面做了重大改进。其中，密钥更新（Key Update）机制是一个重要的安全特性，允许在不重新握手的情况下更新加密密钥，从而延长加密会话的生命周期，同时保持前向安全性。
什么是密钥更新机制？ 密钥更新（Key Update）是 TLS 1.3 协议定义的 POST-HANDSHAKE 消息之一。在 TLS 1.3 中，握手完成后的加密通信使用两类密钥：
应用流量密钥（Application Traffic Keys）：用于加密实际的应用数据 握手流量密钥（Handshake Traffic Keys）：仅用于加密握手消息 传统的 TLS 1.2 想要更新密钥必须重新握手，这会增加延迟。TLS 1.3 引入了 KeyUpdate 消息，允许双方在不中断连接的情况下动态更新应用流量密钥。
为什么需要密钥更新？ 1. 限制单密钥加密数据量 现代加密算法在加密大量数据后，理论上存在被破解的风险（尽管概率极低）。定期更新密钥可以：
减少每个密钥加密的数据量 降低潜在的安全风险 满足某些合规要求 2. 保持前向安全性 TLS 1.3 的密钥派生使用 HKDF，从原始握手密钥派生出应用流量密钥。即使某个会话密钥被破解，之前的通信仍然是安全的。密钥更新机制让这一特性在长会话中持续生效。
3. 减少握手开销 相比完整的重新握手，KeyUpdate 消息只包含几个字节，延迟几乎可以忽略不计。
KeyUpdate 消息格式 TLS 1.3 的 KeyUpdate 消息结构简洁高效：
1 2 3 4 5 6 7 8 9 struct { KeyUpdateRequest request; } KeyUpdate; enum { update_not_requested(0), update_requested(1), (255) } KeyUpdateRequest; update_not_requested(0)：我已更新密钥，但不希望对方也更新 update_requested(1)：我已更新密钥，并请求对方也更新 工作流程详解 密钥更新的完整流程如下：</description>
    </item>
    
    <item>
      <title>证书固定实战指南：防止中间人攻击</title>
      <link>https://secdoc.jazor.net/posts/certificate-pinning-guide/</link>
      <pubDate>Wed, 06 May 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/certificate-pinning-guide/</guid>
      <description>证书固定（Certificate Pinning）是一种安全加固技术，通过将网站的身份与特定的证书或公钥绑定，防止攻击者使用伪造证书进行中间人攻击（MITM）。本文详细介绍证书固定的工作原理、实现方式和实战配置。
什么是证书固定 传统 HTTPS 验证依赖证书链信任机制：由浏览器内置的根证书库验证网站证书是否由可信 CA 签发。然而，如果攻击者能控制用户的根证书（如通过恶意软件或某些网络审查工具），就可以使用任意 CA 签发的伪造证书实施中间人攻击。
证书固定的核心思想是：不仅验证证书是否可信，还验证证书是否是我们预期的那一个。通过预先在客户端保存服务器的公钥指纹或证书指纹，客户端只会接受固定的那个证书，其他任何证书（包括合法 CA 签发的）都会被拒绝。
固定方式 1. 公钥指纹固定 直接固定服务器的公钥指纹，这是最推荐的方式。公钥是证书中最稳定的部分，即使证书续期，只要不更换密钥，指纹就保持不变。
1 2 3 4 5 6 # 提取证书公钥并计算 SHA-256 指纹 openssl s_client -connect example.com:443 2&amp;gt;/dev/null | \ openssl x509 -pubkey -noout | \ openssl pkey -pubin -outform der | \ openssl dgst -sha256 -binary | \ base64 输出示例：
1 aqQ4L+Pac7Qy3Or7l6f9IypN8w1H64i48B4weiXJ2v4= 2. 证书指纹固定 直接固定整个证书的 SHA-256 指纹：
1 2 3 # 提取证书 SHA-256 指纹 openssl s_client -connect example.</description>
    </item>
    
    <item>
      <title>SNI 原理与安全考量：TLS 扩展详解</title>
      <link>https://secdoc.jazor.net/posts/sni-server-name-indication-guide/</link>
      <pubDate>Tue, 05 May 2026 00:05:57 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/sni-server-name-indication-guide/</guid>
      <description>什么是 SNI？ SNI（Server Name Indication，服务名称指示） 是 TLS 协议的一个扩展，允许客户端在 TLS 握手开始时提前声明要访问的服务器域名。这一看似简单的机制，彻底解决了 HTTPS 早期的核心痛点——单 IP 多域名 问题。
为什么需要 SNI？ 在 SNI 出现之前，TLS 握手存在一个困境：
客户端发送 ClientHello 消息时，还没有指定要访问的具体域名 服务器收到 ClientHello 后，无法确定客户端想要哪个虚拟主机 服务器只能返回一个&amp;quot;默认&amp;quot;证书，无法为每个域名提供正确证书 这意味着：
一个 IP 地址只能部署一个 HTTPS 网站 要托管多个 HTTPS 网站，必须为每个网站分配独立 IP SNI 的出现改变了这一局面。客户端在 ClientHello 中直接携带 server_name 扩展，声明目标域名，服务器据此返回对应证书。
工作原理 TLS 握手中的 SNI SNI 作为 TLS 扩展（Extension），在 ClientHello 消息中发送：
1 2 3 4 5 6 7 8 9 ClientHello ├── Version: TLS 1.2 / TLS 1.</description>
    </item>
    
    <item>
      <title>TLS 1.3 0-RTT 重放攻击与防护</title>
      <link>https://secdoc.jazor.net/posts/tls13-0rtt-replay-attack-protection/</link>
      <pubDate>Sun, 03 May 2026 00:05:56 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls13-0rtt-replay-attack-protection/</guid>
      <description>TLS 1.3 引入了 0-RTT（Zero Round Trip Time）早期数据机制，可以在一个 RTT 内完成握手，大幅降低连接延迟。然而，这一特性带来了安全隐患：0-RTT 数据可能遭受重放攻击。本文详解攻击原理与防护措施。
0-RTT 快速回顾 TLS 1.3 的 0-RTT 模式允许客户端在首次握手时立即发送加密数据，无需等待服务器完成握手。典型场景：
1 2 3 4 5 6 7 客户端 服务器 | | |-------- ClientHello (+ EarlyData) ---------&amp;gt;| | (立即发送加密数据) | | | |&amp;lt;-------- ServerHello + Finished ------------| | (握手完成) | 适用场景：需要快速建立连接的 HTTP/2 预热、频繁断连的移动应用等。
重放攻击原理 攻击场景 0-RTT 数据的核心风险在于缺乏前向安全性和可能重放：
客户端首次请求（包含敏感操作，如转账） 攻击者嗅探并记录这个加密的 0-RTT 数据包 攻击者重放这个数据包到服务器 服务器误认为是有效请求，重复执行 攻击条件 重放攻击需要满足以下条件：
0-RTT 数据包被攻击者截获 服务器未对 0-RTT 数据添加足够的时间限制 某些敏感操作（如只读操作）被重复执行不会造成危害 实际影响 典型的可重放场景：
操作类型 重放风险 GET 请求（幂等） 低风险 POST 表单提交 中等风险 支付/转账 高风险 状态变更操作 高风险 攻击演示 以下演示如何在 OpenSSL 中观察 0-RTT 数据传输：</description>
    </item>
    
    <item>
      <title>私有 CA 与内部证书颁发实战指南</title>
      <link>https://secdoc.jazor.net/posts/private-ca-internal-certificate-guide/</link>
      <pubDate>Sat, 02 May 2026 00:05:28 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/private-ca-internal-certificate-guide/</guid>
      <description>在企业内网、测试环境或私有服务中，使用公共 CA 签发的证书不仅成本高昂，还可能带来安全风险。搭建私有 CA（Certificate Authority）可以完全掌控证书生命周期，实现内部服务的 HTTPS 加密和双向认证（mTLS）。本文将详细介绍如何使用 OpenSSL 搭建私有 CA 并签发内部证书。
什么是私有 CA 私有 CA 是组织内部自行搭建和维护的证书颁发机构，与 Let&amp;rsquo;s Encrypt、DigiCert 等公共 CA 类似，但不向外部公开。私有 CA 通常用于：
内网 HTTPS：内部系统之间的安全通信 开发测试：模拟生产环境的 HTTPS 流程 mTLS 双向认证：验证客户端和服务端双方身份 物联网设备：无法访问公共 CA 的嵌入式设备 搭建私有 CA 架构 典型的私有 CA 采用两级结构：
根 CA（Root CA）：信任的起点，长期有效（10-20 年），离线存储 颁发 CA（Issuing CA）：实际签发终端证书，有效期较短（1-3 年） 这种设计更安全：根 CA 离线保存，日常签发由颁发 CA 完成，泄露风险更低。
创建根 CA 根 CA 是整个 PKI 体系的信任根基，需要妥善保管。
1. 生成根 CA 私钥 1 openssl genrsa -out root-ca.key 4096 生成 4096 位 RSA 私钥。私钥必须严格保密，建议设置文件权限为 600。</description>
    </item>
    
    <item>
      <title>TLS Session Resumption：会话恢复机制详解</title>
      <link>https://secdoc.jazor.net/posts/tls-session-resumption-guide/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-session-resumption-guide/</guid>
      <description>TLS 握手是 HTTPS 连接建立的开销大头。每次完整握手都需要额外的往返时延和计算资源。Session Resumption（会话恢复） 技术允许客户端和服务器复用之前的会话密钥，跳过昂贵的公钥加密步骤，大幅降低连接延迟。
为什么要会话恢复？ 指标 完整握手 会话恢复 往返次数 2-RTT 或 1-RTT 0-RTT RTT 时间 ~30-100ms ~5-10ms CPU 消耗 高（RSA/ECDHE） 极低 适用场景 首次连接 短间隔重复访问 对于需要频繁建立连接的 HTTPS 场景（如 Web 攻击面扫描、API 调用），会话恢复可以将 TLS 握手耗时降低 80% 以上。
Session Resumption 的三种方式 1. Session ID（TLS 1.2 及更早） 服务端维护会话缓存，用 Session ID 作为 key。
1 2 3 4 5 # 客户端：保存会话 echo &amp;#34;&amp;#34; | openssl s_client -connect example.com:443 -sess_out session.pem # 客户端：恢复会话 echo &amp;#34;&amp;#34; | openssl s_client -connect example.</description>
    </item>
    
    <item>
      <title>OpenSSL verify 命令详解：证书链验证实战</title>
      <link>https://secdoc.jazor.net/posts/openssl-verify-command-usage/</link>
      <pubDate>Thu, 30 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-verify-command-usage/</guid>
      <description>openssl verify 是 OpenSSL 中最常用的证书验证工具，用于验证证书链的完整性和有效性。本文详细介绍其常用选项和实战场景。
基本语法 1 openssl verify [options] certificate.pem 常用选项 指定可信 CA 选项 说明 -CAfile &amp;lt;file&amp;gt; 指定一个包含可信 CA 证书的文件 -CApath &amp;lt;dir&amp;gt; 指定可信 CA 证书目录（需要哈希索引） -CAstore &amp;lt;uri&amp;gt; 从 URI 加载可信证书 1 2 3 4 5 # 使用 CAfile 验证 openssl verify -CAfile ca.crt server.crt # 同时使用 CAfile 和 CApath openssl verify -CAfile ca.crt -CApath /etc/ssl/certs server.crt 指定中间证书 1 2 # -untrusted 指定中间证书（证书链中的非可信证书） openssl verify -CAfile root.crt -untrusted intermediate.crt server.crt 常用验证选项 选项 说明 -partial_chain 接受部分链验证（只要链到某个可信 CA 即可） -show_chain 显示完整的证书链信息 -purpose &amp;lt;purpose&amp;gt; 验证证书用途（sslserver, sslclient, etc.</description>
    </item>
    
    <item>
      <title>后量子密码学与 NIST PQC 标准化</title>
      <link>https://secdoc.jazor.net/posts/post-quantum-cryptography-nist-standard/</link>
      <pubDate>Wed, 29 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/post-quantum-cryptography-nist-standard/</guid>
      <description>量子计算的快速发展对现代密码学构成了前所未有的威胁。当前广泛使用的 RSA、ECDSA 等公钥密码算法依赖于大整数分解或离散对数问题的计算难度，但量子计算机的 Shor 算法可以在多项式时间内解决这些问题。这意味着当大规模量子计算机成熟时，现有的 SSL/TLS 证书、SSH 密钥、数字签名都将面临被破解的风险。
什么是后量子密码学 后量子密码学（Post-Quantum Cryptography，PQC）是指能够在经典计算机上运行，但能够抵御量子计算机攻击的密码学算法。这些算法不依赖量子力学原理，而是基于量子计算机也难以高效求解的数学问题，如格密码（Lattice-Based）、编码密码（Code-Based）、多变量密码（Multivariate）等。
与量子密钥分发（QKD）不同，PQC 是软件层面的解决方案，可以在现有硬件和网络上部署，无需专门的量子通信设备。
NIST PQC 标准化进程 美国国家标准与技术研究院（NIST）自 2016 年启动后量子密码学标准化项目，经过多轮筛选，于 2024 年 8 月发布了首批三个最终标准。
首批发布的三个标准 标准名称 类型 底层技术 用途 ML-KEM 密钥封装机制 模块格（Module-Lattice） 密钥交换、TLS 握手 ML-DSA 数字签名 模块格（Module-Lattice） 证书签名、代码签名 SLH-DSA 数字签名 哈希（Hash-Based） 替代签名方案 ML-KEM（原 Kyber）是基于格理论的密钥封装机制，将取代传统的 Diffie-Hellman 密钥交换，用于 TLS 1.3 握手阶段的密钥协商。
ML-DSA（原 Dilithium）是基于格理论的数字签名算法，将作为主要的签名方案，用于 SSL/TLS 证书、代码签名等场景。
SLH-DSA（原 SPHINCS+）是基于哈希的签名算法，作为备份方案，安全性基于哈希函数的抗碰撞性。
正在标准化的候选算法 除了首批三个标准，NIST 还在评估以下算法：
Falcon：基于格的高效签名算法，签名更短，适用于带宽受限场景 HQC：基于编码的密钥封装机制，提供额外的安全保障 实际影响与迁移时间线 对 TLS/SSL 的影响 当前的 TLS 协议使用 RSA 或 ECDSA 进行身份验证，使用 ECDHE 进行密钥交换。迁移到 PQC 后：</description>
    </item>
    
    <item>
      <title>证书透明度原理与验证</title>
      <link>https://secdoc.jazor.net/posts/certificate-transparency-%E5%8E%9F%E7%90%86%E4%B8%8E%E9%AA%8C%E8%AF%81/</link>
      <pubDate>Tue, 28 Apr 2026 00:06:06 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/certificate-transparency-%E5%8E%9F%E7%90%86%E4%B8%8E%E9%AA%8C%E8%AF%81/</guid>
      <description>什么是证书透明度 证书透明度（Certificate Transparency，简称 CT）是 Google 提出的一个开源框架，旨在为 TLS 证书提供公开的审计和监控机制。它的核心目标是检测恶意或错误签发的证书，防止证书颁发机构（CA）未经授权签发证书。
在 CT 出现之前，如果某个 CA 被攻击或故意签发虚假证书，这些证书可能在很长时间内不被发现。CT 通过要求所有证书必须记录在公开的日志服务器上，使得任何人都可以审计证书签发行为。
CT 架构解析 证书透明度由三个核心组件构成：
1. 日志服务器（Log Server） 日志服务器是 CT 的核心，是一个仅追加（append-only）的 Merkle 树结构数据库。每个日志服务器接收并存储证书条目，主要特性：
仅追加：一旦记录被添加，就不能删除或修改 Merkle 树：使用密码学哈希树结构，可以高效验证数据完整性 公开可访问：任何人都可以提交证书或查询日志 主流的公开日志服务器包括：
Google Argon（ct.googleapis.com/pki/argon) DigiCert Log（ct.digicert.com/log) Let&amp;rsquo;s Encrypt（ct.letsencrypt.org) 2. 监控器（Monitor） 监控器定期检查日志服务器，查找可疑的证书签发行为。例如：
为知名域名签发的异常证书 仿冒知名网站的证书 来自不可信 CA 的证书 常见的监控服务包括：
crt.sh - 免费证书搜索数据库 Google Monitor Cloudflare Monitor 3. 审计员（Auditor） 审计员验证日志服务器的行为，确保它们：
正确记录了所有提交的证书 没有作弊或隐瞒记录 响应一致的查询 浏览器通常内置审计员功能，在验证证书时自动检查 SCT。
SCT：签名证书时间戳 当证书被提交到 CT 日志时，日志服务器会返回 Signed Certificate Timestamp（SCT）。SCT 包含：
日志服务器 ID：签发 SCT 的日志服务器标识 序列号：该证书在日志中的唯一编号 时间戳：证书被记录的时间 签名：日志服务器对上述信息的数字签名 浏览器在验证 TLS 连接时，会检查证书是否附带有效的 SCT。根据浏览器策略，通常要求至少 1-2 个 SCT 才能完全信任证书。</description>
    </item>
    
    <item>
      <title>TLS 1.3 密钥派生：HKDF 原理与实战</title>
      <link>https://secdoc.jazor.net/posts/tls13-hkdf-key-derivation/</link>
      <pubDate>Mon, 27 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls13-hkdf-key-derivation/</guid>
      <description>深入解析 TLS 1.3 密钥派生机制，HKDF 工作原理以及在 OpenSSL 中的实际应用。</description>
    </item>
    
    <item>
      <title>TLS 记录协议工作原理</title>
      <link>https://secdoc.jazor.net/posts/tls-record-protocol-explained/</link>
      <pubDate>Sun, 26 Apr 2026 00:05:46 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-record-protocol-explained/</guid>
      <description>TLS 记录协议（Record Protocol）是 TLS 协议栈的最底层，负责对数据进行分片、压缩、计算 MAC、加密和传输。理解它的工作原理有助于深入掌握 TLS 安全机制。
记录协议的核心功能 记录协议接收上层数据后，依次经过以下处理流程：
分片：将数据切分为固定大小的记录块 压缩：对数据进行压缩（TLS 1.3 已废弃） MAC 计算：添加消息认证码 加密：对数据加密 传输：发送加密后的数据 分片机制 每个 TLS 记录包含一个 5 字节的头部和可变长度的载荷：
1 2 3 4 5 +-----------+------------+----------------+ | 类型(1) | 版本(2) | 长度(2) | &amp;lt;- 头部 (5 字节) +-----------+------------+----------------+ | 加密数据... | &amp;lt;- 载荷 +-----------+---------------------------+ 类型：Content Type，1 字节，标识记录类型 0x14 = ChangeCipherSpec 0x15 = Alert 0x16 = Handshake 0x17 = Application Data 版本：Protocol Version，2 字节（TLS 1.2 为 0x0303，TLS 1.</description>
    </item>
    
    <item>
      <title>TLS 1.3 0-RTT：原理、安全风险与配置</title>
      <link>https://secdoc.jazor.net/posts/tls13-early-data-zero-rtt/</link>
      <pubDate>Sat, 25 Apr 2026 00:05:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls13-early-data-zero-rtt/</guid>
      <description>TLS 1.3 引入了 0-RTT（Zero Round Trip Time，零往返时间）模式，旨在减少连接延迟，提升用户体验。本文深入解析 0-RTT 的工作原理、安全风险以及如何正确配置。
什么是 0-RTT？ 0-RTT 是 TLS 1.3 引入的新特性，允许客户端在首次握手时就开始发送加密数据，无需等待服务器完成握手。相比传统的 1-RTT 或 2-RTT 模式，这可以显著减少建立连接所需的时间。
各版本 TLS 的往返次数 TLS 版本 模式 往返次数（RTT） TLS 1.2 RSA 完整握手 2-RTT TLS 1.2 ECDHE 完整握手 1-RTT TLS 1.3 完整握手 1-RTT TLS 1.3 0-RTT 0-RTT 工作原理 首次连接（建立会话） 1 2 3 4 客户端 ───── ClientHello ────&amp;gt; 服务器 客户端 &amp;lt;─── ServerHello ───── 服务器 客户端 &amp;lt;─── 加密完成 ───────── 服务器 (+Session Ticket) 客户端发送 ClientHello，请求建立 TLS 1.</description>
    </item>
    
    <item>
      <title>TLS ALPN 协议协商：HTTP/2 如何与 HTTPS 握手同步完成</title>
      <link>https://secdoc.jazor.net/posts/tls-alpn-protocol-negotiation/</link>
      <pubDate>Wed, 22 Apr 2026 00:05:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-alpn-protocol-negotiation/</guid>
      <description>什么是 ALPN ALPN（Application-Layer Protocol Negotiation，应用层协议协商）是 TLS 协议的一个扩展，定义于 RFC 7301。它允许客户端和服务器在 TLS 握手阶段就协商好使用哪个应用层协议，而无需额外的往返通信。
如果没有 ALPN，客户端只能先建立 TLS 连接，再通过 NPN（Next Protocol Negotiation，已废弃）或在 TLS 握手完成后通过额外协商来确定使用 HTTP/1.1 还是 HTTP/2。ALPN 将这个过程整合到 TLS 握手中，减少了延迟。
ALPN 的工作原理 在 TLS ClientHello 消息中，客户端通过 application_layer_protocol_negotiation 扩展发送自己支持的协议列表，按优先级排序。服务器从中选择一个双方都支持的协议，并在 ServerHello 中回显该选择。
整个协商过程在 TLS 握手内部完成，对应用层透明：
1 2 3 4 5 6 7 8 9 10 11 12 Client Server | | |-------- ClientHello ----------&amp;gt;| | + ALPN: [h2, http/1.1] | | | |&amp;lt;------- ServerHello -----------| | + ALPN: h2 | | | |-------- 后续 TLS 握手 --------&amp;gt;| | | |&amp;lt;===== TLS 加密通道建立 ========&amp;gt;| | 使用 HTTP/2 通信 | 常见的 ALPN 协议标识符 协议标识符 说明 h2 HTTP/2 over TLS http/1.</description>
    </item>
    
    <item>
      <title>OCSP Stapling 详解：原理、配置与排查</title>
      <link>https://secdoc.jazor.net/posts/ocsp-stapling-deep-dive/</link>
      <pubDate>Tue, 21 Apr 2026 00:05:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ocsp-stapling-deep-dive/</guid>
      <description>什么是 OCSP Stapling OCSP Stapling（正式名称为 TLS Certificate Status Request）是一种 TLS 扩展机制，允许服务端在 TLS 握手过程中主动向客户端提供证书的状态信息，而无需客户端自行向 CA 的 OCSP 响应服务器发起查询。
它的核心价值在于：将证书状态验证的责任从客户端转移到服务端，同时保护用户隐私、提升连接速度。
为什么需要 OCSP Stapling 要理解 OCSP Stapling 的价值，先看没有它时证书撤销检查的三种方式。
方式一：CRL（证书吊销列表） CA 定期发布一个包含所有已吊销证书序列号的列表（CRL），客户端下载后自行检查。
1 2 # 查看 CRL 分布点（CRL Distribution Points） openssl x509 -in cert.pem -noout -text | grep -A2 &amp;#34;CRL Distribution&amp;#34; 问题很明显：CRL 文件会随着时间不断增长，下载和解析开销越来越大。即使使用增量 CRL（Delta CRL），也难以应对大规模部署。
方式二：OCSP（在线证书状态协议） 客户端直接向 CA 的 OCSP 响应服务器发送查询，获取单张证书的实时状态。
1 2 3 # 提取证书的 OCSP 响应器 URL openssl x509 -in cert.pem -noout -ocsp_uri # 示例输出: http://ocsp.</description>
    </item>
    
    <item>
      <title>TLS 密码套件命名规范解析</title>
      <link>https://secdoc.jazor.net/posts/tls-cipher-suite-naming/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-cipher-suite-naming/</guid>
      <description>在配置 TLS/SSL 时，我们经常看到类似 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 这样的密码套件名称。对于初学者来说，这串字符可能令人困惑。本文将详细解析 TLS 密码套件的命名规范，帮助你理解每个部分的含义。
什么是密码套件 密码套件（Cipher Suite）是 TLS 协议的核心组件，它定义了一整套加密算法组合，包括：
密钥交换算法 身份认证算法 加密算法 哈希算法 一个密码套件决定了 TLS 握手期间如何协商安全参数，以及如何加密传输的数据。
TLS 1.2 密码套件命名格式 TLS 1.2 采用以下命名格式：
1 TLS_密钥交换算法_认证算法_加密算法_哈希算法 以 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 为例：
组成部分 含义 TLS 协议名称 ECDHE 密钥交换算法（Elliptic Curve Diffie-Hellman Ephemeral） RSA 身份认证算法 AES_256_GCM 加密算法（AES，256位，GCM模式） SHA384 哈希算法 各组件详解 密钥交换算法（Key Exchange）
ECDHE：椭圆曲线临时 Diffie-Hellman（推荐，前向安全） DHE：临时 Diffie-Hellman（传统但性能较低） RSA：基于 RSA 的密钥交换（已被废弃，不提供前向安全） ECDH：椭圆曲线 Diffie-Hellman（静态） 认证算法（Authentication）
RSA：RSA 公钥证书 ECDSA：椭圆曲线数字签名算法 DSS：数字签名标准（较老） 加密算法（Cipher）
AES_256_GCM：AES 加密，256位密钥，GCM 模式（推荐） CHACHA20-POLY1305：Google 开发的流密码（移动设备友好） AES_128_CCM：AES 加密，128位密钥，CCM 模式 ARIA256-GCM：韩国标准加密算法 哈希算法（MAC/Hash）</description>
    </item>
    
    <item>
      <title>HSTS：强制 HTTPS 访问的安全机制</title>
      <link>https://secdoc.jazor.net/posts/hsts-http-strict-transport-security/</link>
      <pubDate>Sun, 19 Apr 2026 00:05:56 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/hsts-http-strict-transport-security/</guid>
      <description>什么是 HSTS？ HSTS（HTTP Strict Transport Security）是一种网络安全策略机制，允许网站声明浏览器必须仅通过 HTTPS 连接访问。一旦服务器发送 Strict-Transport-Security 响应头，浏览器就会记住这个指令，在指定时间内（max-age）自动将所有 HTTP 请求转换为 HTTPS。
HSTS 响应头格式 1 Strict-Transport-Security: max-age=&amp;lt;过期时间&amp;gt;; includeSubDomains; preload 参数说明 参数 说明 max-age 浏览器记住该规则的时长，单位为秒。例如 31536000 代表一年 includeSubDomains 可选指令，作用范围包含所有子域名 preload 可选指令，表示该域名申请加入 HSTS 预加载列表 实际案例 查看主流网站的 HSTS 头配置：
1 2 # 使用 curl 查看 HSTS 响应头 curl -sI https://cloudflare.com | grep -i strict-transport-security 输出示例：
1 Strict-Transport-Security: max-age=15552000; includeSubDomains 验证多个网站 1 2 3 4 5 # 检查不同网站的 HSTS 配置 for domain in cloudflare.</description>
    </item>
    
    <item>
      <title>TLS 1.2 与 TLS 1.3 的主要区别</title>
      <link>https://secdoc.jazor.net/posts/tls12-vs-tls13-differences/</link>
      <pubDate>Sat, 18 Apr 2026 00:05:45 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls12-vs-tls13-differences/</guid>
      <description>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 模式，允许在首次连接时就开始发送加密数据，但需要预先共享密钥。</description>
    </item>
    
    <item>
      <title>双向 TLS 认证实战指南</title>
      <link>https://secdoc.jazor.net/posts/mtls-mutual-tls-authentication/</link>
      <pubDate>Sat, 11 Apr 2026 00:05:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/mtls-mutual-tls-authentication/</guid>
      <description>什么是双向 TLS 认证 普通 HTTPS 连接中，客户端验证服务器证书，确保连接的是真实的服务器。双向 TLS（Mutual TLS，简称 mTLS） 在此基础上增加了服务器对客户端的验证——客户端必须提供有效的证书才能建立连接。
这种认证方式比用户名密码更安全，广泛用于：
API 服务间的身份认证 零信任网络架构 企业内部系统访问控制 高安全要求的金融、医疗系统 工作原理 mTLS 握手过程：
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 客户端 服务器 | | |---------- ClientHello ---------------&amp;gt;| |&amp;lt;--------- ServerHello ----------------| |&amp;lt;--------- Certificate ----------------| (服务器证书) |&amp;lt;--------- CertificateRequest ---------| (请求客户端证书) |&amp;lt;--------- ServerHelloDone ------------| | | |---------- Certificate ----------------&amp;gt;| (客户端证书) |---------- ClientKeyExchange ---------&amp;gt;| |---------- CertificateVerify ---------&amp;gt;| (证明拥有私钥) |---------- Finished ------------------&amp;gt;| |&amp;lt;--------- Finished -------------------| | | |====== 加密通信通道 ====================| 关键区别：服务器发送 CertificateRequest，客户端响应自己的证书并用私钥签名证明身份。</description>
    </item>
    
    <item>
      <title>HTTPS 混合内容问题及解决方案</title>
      <link>https://secdoc.jazor.net/posts/https-mixed-content-solution/</link>
      <pubDate>Sun, 05 Apr 2026 17:20:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/https-mixed-content-solution/</guid>
      <description>当 HTTPS 页面加载 HTTP 资源时，就会产生混合内容（Mixed Content）。浏览器会阻止不安全的请求，导致页面功能异常。本文介绍混合内容的类型、排查方法和解决方案。
什么是混合内容 HTTPS 页面中通过 HTTP 加载的资源称为混合内容：
1 2 3 4 &amp;lt;!-- HTTPS 页面中的混合内容 --&amp;gt; &amp;lt;script src=&amp;#34;http://example.com/script.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;img src=&amp;#34;http://example.com/image.jpg&amp;#34;&amp;gt; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;http://example.com/style.css&amp;#34;&amp;gt; 混合内容类型 混合被动内容（Mixed Passive Content） 低风险资源，浏览器通常只显示警告：
&amp;lt;img&amp;gt; 图片 &amp;lt;audio&amp;gt; / &amp;lt;video&amp;gt; 媒体 &amp;lt;object&amp;gt; 子资源 混合主动内容（Mixed Active Content） 高风险资源，浏览器会直接阻止：
&amp;lt;script&amp;gt; 脚本 &amp;lt;link&amp;gt; 样式表 &amp;lt;iframe&amp;gt; 内嵌页面 XMLHttpRequest / Fetch 请求 &amp;lt;frame&amp;gt; / &amp;lt;object&amp;gt; 加载的页面 排查方法 浏览器控制台 打开开发者工具（F12），查看 Console 和 Security 面板：
1 2 3 Mixed Content: The page at &amp;#39;https://example.</description>
    </item>
    
    <item>
      <title>OpenSSL s_client：SSL/TLS 连接调试工具</title>
      <link>https://secdoc.jazor.net/posts/openssl-s-client-ssl-tls-tool/</link>
      <pubDate>Sun, 05 Apr 2026 17:20:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-s-client-ssl-tls-tool/</guid>
      <description>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&amp;gt;/dev/null | openssl x509 -noout -text # 只看有效期 echo | openssl s_client -connect www.</description>
    </item>
    
    <item>
      <title>使用 OpenSSL 检查证书有效期</title>
      <link>https://secdoc.jazor.net/posts/openssl-check-certificate-validity/</link>
      <pubDate>Sun, 05 Apr 2026 17:20:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-check-certificate-validity/</guid>
      <description>证书过期会导致服务不可用，提前监控证书有效期是运维的基本功。OpenSSL 提供了多种检查证书有效期的方法。
检查远程服务器证书 查看有效期 1 echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com 2&amp;gt;/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 返回码：</description>
    </item>
    
    <item>
      <title>OpenSSL s_client 排查 HTTPS 连接问题</title>
      <link>https://secdoc.jazor.net/posts/openssl-s-client-troubleshoot-https/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-s-client-troubleshoot-https/</guid>
      <description>使用 OpenSSL s_client 命令排查 HTTPS 连接问题，包括证书验证、握手过程、TLS 协议版本检测等实用技巧。</description>
    </item>
    
    <item>
      <title>OpenSSL 常用命令速查</title>
      <link>https://secdoc.jazor.net/posts/openssl-common-commands/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-common-commands/</guid>
      <description>整理 OpenSSL 最常用的命令，包括版本查看、证书生成、密钥操作、测试连接等，每个命令都经过实际验证。</description>
    </item>
    
    <item>
      <title>TLS 1.3 握手过程详解</title>
      <link>https://secdoc.jazor.net/posts/tls-13-handshake-process/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-13-handshake-process/</guid>
      <description>深入解析 TLS 1.3 协议的握手流程，包括 ClientHello、ServerHello、密钥交换、证书验证等关键步骤，对比 TLS 1.2 的改进。</description>
    </item>
    
    <item>
      <title>OpenSSL 证书格式转换：PEM、DER、P7B、PFX 互转</title>
      <link>https://secdoc.jazor.net/posts/openssl-certificate-format-conversion/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-certificate-format-conversion/</guid>
      <description>详解 OpenSSL 在 PEM、DER、P7B、PFX 等证书格式之间的转换命令，每个命令都经过实际验证。</description>
    </item>
    
    <item>
      <title>SSL/TLS 握手详解：从连接到加密通道</title>
      <link>https://secdoc.jazor.net/posts/ssl-tls-handshake-explained/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssl-tls-handshake-explained/</guid>
      <description>本文深入解析 SSL/TLS 握手过程，理解加密通道如何建立以及密钥交换的原理。</description>
    </item>
    
    <item>
      <title>TLS 1.3 核心特性与配置实践</title>
      <link>https://secdoc.jazor.net/posts/tls13-features-and-configuration/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls13-features-and-configuration/</guid>
      <description>介绍 TLS 1.3 的核心改进，包括握手优化、加密套件精简、0-RTT 等特性，以及 Nginx、Apache 配置方法。</description>
    </item>
    
    <item>
      <title>使用 OpenSSL 检测 TLS 版本支持</title>
      <link>https://secdoc.jazor.net/posts/tls-version-check-guide/</link>
      <pubDate>Wed, 01 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-version-check-guide/</guid>
      <description>介绍如何使用 OpenSSL 命令检测服务器支持的 TLS 版本，用于安全审计和配置验证。</description>
    </item>
    
    <item>
      <title>OpenSSL 证书链验证详解</title>
      <link>https://secdoc.jazor.net/posts/openssl-certificate-chain-validation/</link>
      <pubDate>Tue, 31 Mar 2026 00:00:56 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-certificate-chain-validation/</guid>
      <description>OpenSSL 证书链验证详解 证书链验证是 SSL/TLS 安全的核心机制。本文将详细介绍如何使用 OpenSSL 工具进行证书链验证，确保连接的安全性。
什么是证书链？ 证书链（Certificate Chain）是一系列证书的有序集合，用于验证终端实体证书的有效性。典型的证书链包含：
终端实体证书：最终服务的证书 中间证书：由 CA 签发的证书 根证书：受信任的根 CA 证书 OpenSSL 验证命令 基本验证 1 2 3 # 验证证书和私钥匹配 openssl x509 -noout -modulus -in server.crt | openssl md5 openssl rsa -noout -modulus -in server.key | openssl md5 证书链验证 1 2 # 验证证书链 openssl verify -CAfile root.crt -untrusted intermediate.crt server.crt 实战案例：完整证书链验证 场景描述 验证包含终端证书、中间证书和根证书的完整证书链。
1. 准备证书文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # 创建测试目录 mkdir -p /tmp/cert-test cd /tmp/cert-test # 生成根证书 openssl genrsa -out root.</description>
    </item>
    
    <item>
      <title>SSL/TLS 握手性能优化：Session Resumption 实战</title>
      <link>https://secdoc.jazor.net/posts/ssl-handshake-optimization/</link>
      <pubDate>Sat, 28 Mar 2026 00:00:49 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssl-handshake-optimization/</guid>
      <description>SSL/TLS 握手是 HTTPS 性能的关键瓶颈。本文聚焦会话恢复（Session Resumption）技术，帮助你减少握手延迟。
问题：SSL 握手的开销 完整的 TLS 握手需要多次网络往返：
1 2 3 4 5 # 测试握手时间 curl -w &amp;#34;Time: %{time_total}s\n&amp;#34; -o /dev/null -s https://example.com # 使用 openssl 测试连接时间 time openssl s_client -connect example.com:443 &amp;lt;/dev/null 对于 TLS 1.2，完整握手需要 2 个 RTT。通过会话恢复可以降至 0-1 个 RTT。
Session ID 复用 工作原理 服务器为每个会话分配唯一 ID，客户端在后续连接时发送该 ID，服务器据此恢复会话状态。
Nginx 配置 1 2 3 4 5 6 7 8 9 10 11 12 server { listen 443 ssl; server_name example.</description>
    </item>
    
    <item>
      <title>Nginx HTTPS 重定向最佳实践</title>
      <link>https://secdoc.jazor.net/posts/https-redirect-best-practice/</link>
      <pubDate>Thu, 26 Mar 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/https-redirect-best-practice/</guid>
      <description>将 HTTP 流量重定向到 HTTPS 是网站安全的基本要求。本文聚焦 Nginx 中的最佳实践配置。
标准配置（推荐） 使用两个 server 块分离 HTTP 和 HTTPS 流量：
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # HTTP server - 重定向到 HTTPS server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; } # HTTPS server server { listen 443 ssl http2; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # HSTS - 告诉浏览器始终使用 HTTPS add_header Strict-Transport-Security &amp;#34;max-age=31536000; includeSubDomains; preload&amp;#34; always; root /var/www/html; index index.</description>
    </item>
    
    <item>
      <title>SSL 协议为何被弃用：从安全漏洞到 TLS 演进</title>
      <link>https://secdoc.jazor.net/posts/ssl-deprecation-why/</link>
      <pubDate>Wed, 25 Mar 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssl-deprecation-why/</guid>
      <description>SSL（Secure Sockets Layer）协议曾是最广泛使用的加密协议，但如今已被彻底弃用。本文聚焦分析 SSL 协议的安全缺陷，解释为何必须迁移到 TLS。
SSL 的三个版本 版本 发布年份 状态 SSL 1.0 未发布 存在严重缺陷，从未公开 SSL 2.0 1995 2011年正式弃用 (RFC 6176) SSL 3.0 1996 2015年正式弃用 (RFC 7568) 致命漏洞：POODLE 攻击 2014年发现的 POODLE（Padding Oracle On Downgraded Legacy Encryption）攻击是 SSL 3.0 的&amp;quot;死刑判决&amp;quot;。
漏洞原理 SSL 3.0 的 CBC 模式填充验证存在缺陷：
1 2 3 明文块: D1 D2 D3 D4 D5 D6 D7 D8 填充后: D1 D2 D3 D4 D5 D6 D7 01 (填充1字节) 或: D1 D2 D3 D4 D5 D6 02 02 (填充2字节) 攻击者可以：</description>
    </item>
    
    <item>
      <title>CSR（证书签名请求）详解与实践</title>
      <link>https://secdoc.jazor.net/posts/csr-certificate-signing-request/</link>
      <pubDate>Tue, 24 Mar 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/csr-certificate-signing-request/</guid>
      <description>什么是 CSR？ CSR（Certificate Signing Request，证书签名请求） 是申请 SSL/TLS 证书时向证书颁发机构（CA）提交的文件。它包含了申请者的公钥和身份信息，由申请者的私钥签名。
CSR 的用途 申请 SSL/TLS 证书 - 向 CA 提交 CSR 申请服务器证书 身份验证 - CSR 中的信息用于验证申请者身份 密钥关联 - 将公钥与域名/组织信息绑定 CSR 包含哪些信息？ 一个标准的 CSR 包含以下信息：
字段 说明 示例 C (Country) 国家代码 CN ST (State) 州/省 Beijing L (Locality) 城市 Beijing O (Organization) 组织名称 Example Corp OU (Organization Unit) 部门 IT Department CN (Common Name) 通用名称/域名 example.com emailAddress 电子邮件 admin@example.com 此外，CSR 还包含：
公钥 - 与私钥配对的公钥 签名 - 使用私钥生成的数字签名 可选扩展 - 如 Subject Alternative Name (SAN) 使用 OpenSSL 生成 CSR 基本命令格式 1 2 3 4 5 # 生成私钥的同时生成 CSR（交互式） openssl req -new -newkey rsa:2048 -nodes -keyout domain.</description>
    </item>
    
    <item>
      <title>SSL/TLS 证书深度解析：从原理到实践</title>
      <link>https://secdoc.jazor.net/posts/ssl-tls-certificates-deep-dive/</link>
      <pubDate>Tue, 24 Mar 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssl-tls-certificates-deep-dive/</guid>
      <description>SSL/TLS 证书是互联网信任体系的基石。本文深入剖析证书的工作原理、类型选择、配置最佳实践，以及常见问题的排查方法。
一、证书工作原理 TLS 握手过程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 客户端 服务器 | | | 1. ClientHello | | (支持的加密套件、TLS版本、随机数) | | --------------------------------------&amp;gt; | | | | 2. ServerHello | | (选定加密套件、TLS版本、随机数) | | + Certificate (服务器证书链) | | + ServerKeyExchange (可选) | | + CertificateRequest (可选,双向认证) | | &amp;lt;-------------------------------------- | | | | 3.</description>
    </item>
    
  </channel>
</rss>
