<?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>SecDoc</title>
    <link>https://secdoc.jazor.net/</link>
    <description>Recent content on SecDoc</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <copyright>© 2026 黑豆子</copyright>
    <lastBuildDate>Tue, 19 May 2026 00:06:56 +0800</lastBuildDate><atom:link href="https://secdoc.jazor.net/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>使用 SSLKEYLOGFILE 在 Wireshark 中解密 TLS 流量</title>
      <link>https://secdoc.jazor.net/posts/wireshark-tls-decryption-sslkeylogfile/</link>
      <pubDate>Tue, 19 May 2026 00:06:56 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/wireshark-tls-decryption-sslkeylogfile/</guid>
      <description>在排查 HTTPS 连接问题时，能够解密 TLS 流量是极其重要的技能。Wireshark 支持通过 SSLKEYLOGFILE 方式解密 TLS 流量，本文详细介绍其工作原理和实操步骤。
工作原理 TLS 加密通信的安全性来自密钥交换过程。如果能够获取客户端和服务端协商出的密钥（Master Secret 或 Traffic Keys），就能解密捕获的 TLS 流量。
SSLKEYLOGFILE 是 NSS 密码库引入的一个特性，被 Chrome、Firefox、curl 等支持。客户端在建立 TLS 连接时，会将密钥材料写入指定文件，Wireshark 读取该文件即可解密流量。
⚠️ 注意：本文仅用于调试自己的 TLS 连接。请勿用于窃听他人通信。
前置要求 Wireshark（支持 TLS 1.2 和 TLS 1.3 解密） 支持 SSLKEYLOGFILE 的客户端（如 Chrome、Firefox、curl、OpenSSL s_client） 环境准备 1. 创建 Keylog 文件 1 2 3 # 创建空文件用于存储密钥 touch ~/ssl-keylog.txt chmod 600 ~/ssl-keylog.txt 2. 配置环境变量 在 Linux/macOS 上：
1 export SSLKEYLOGFILE=~/ssl-keylog.txt 在 Windows 上（PowerShell）：</description>
    </item>
    
    <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>SSH Agent 转发配置与安全指南</title>
      <link>https://secdoc.jazor.net/posts/ssh-agent-forwarding-guide/</link>
      <pubDate>Sun, 03 May 2026 00:05:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-agent-forwarding-guide/</guid>
      <description>在日常开发和运维工作中，我们经常需要通过多台跳板机 SSH 到内网服务器。每次都需要在每台机器上配置密钥或者输入密码，非常麻烦。SSH Agent 转发（Agent Forwarding）正是解决这一问题的利器。
什么是 SSH Agent SSH Agent 是一个后台运行的程序（守护进程），它负责管理用户的私钥。当你使用 SSH 连接服务器时，SSH Agent 会自动提供私钥进行认证，无需每次都输入密码或指定密钥文件。
核心组件 ssh-agent：后台守护进程，启动后会在环境变量中设置 SSH_AUTH_SOCK ssh-add：用于将私钥添加到 agent 管理列表 工作原理 1 2 [本地主机] ----SSH 隧道----&amp;gt; [跳板机] ----SSH----&amp;gt; [目标服务器] (持有私钥) (转发请求) (验证签名) 当启用 Agent Forwarding 后，跳板机会作为代理，将服务器的认证请求转发回本地主机，由本地的 SSH Agent 完成签名验证。
配置步骤 第一步：启动 SSH Agent 1 2 3 4 5 6 # 启动 ssh-agent $ ssh-agent -s # 输出示例： # SSH_AUTH_SOCK=/tmp/ssh-XXXX/agent.259996; export SSH_AUTH_SOCK; # SSH_AGENT_PID=260133; export SSH_AGENT_PID; 第二步：添加私钥 1 2 3 4 5 6 7 # 将私钥添加到 agent $ ssh-add ~/.</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>SSH 证书认证实战指南</title>
      <link>https://secdoc.jazor.net/posts/ssh-certificate-authentication-guide/</link>
      <pubDate>Wed, 29 Apr 2026 00:05:37 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-certificate-authentication-guide/</guid>
      <description>SSH 证书认证是一种比传统公钥认证更安全的方案。本文介绍 SSH 证书的工作原理和配置方法。
传统公钥认证的问题 传统的 SSH 公钥认证需要在每台服务器上添加用户的公钥：
1 2 # 用户将公钥发送到服务器 ssh-copy-id user@server 这种方式在大规模环境中存在以下问题：
密钥管理困难：新增或撤销用户需要手动更新所有服务器 无时效性：公钥永久有效，离职后难以撤销 无法追踪：无法知道谁在什么时候登录过 扩展性差：成百上千台服务器时维护成本极高 SSH 证书认证的原理 SSH 证书认证引入**证书颁发机构（CA）**的概念：
CA 密钥：管理员创建一个 CA 私钥，用于签发证书 用户证书：CA 使用私钥对用户公钥进行签名，生成证书 服务器信任 CA：服务器只需配置信任 CA 公钥，无需逐个添加用户公钥 证书验证：用户登录时提交证书，服务器通过 CA 公钥验证证书有效性 证书包含的信息 用户公钥 用户 ID（Key ID） 有效期（起始时间 + 结束时间） 允许的登录用户名（Principals） CA 签名 创建 SSH CA 首先创建 CA 密钥对。建议使用 ED25519 算法：
1 2 3 4 5 # 创建用户证书CA ssh-keygen -t ed25519 -f ~/.ssh/user_ca -C &amp;#34;SSH User CA&amp;#34; # 创建主机证书CA（可选，用于验证服务器身份） ssh-keygen -t ed25519 -f ~/.</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 完美前向保密（PFS）深度解析</title>
      <link>https://secdoc.jazor.net/posts/perfect-forward-secrecy-guide/</link>
      <pubDate>Thu, 23 Apr 2026 00:08:06 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/perfect-forward-secrecy-guide/</guid>
      <description>完美前向保密（Perfect Forward Secrecy, PFS）是现代 TLS 连接的核心安全特性。它确保即使服务器的长期私钥在未来被泄露，攻击者也无法解密过去捕获的加密通信。
本文将深入理解 PFS 的工作原理、密钥交换机制差异，以及如何在实战中验证和配置 PFS。
什么是完美前向保密 要理解 PFS，先看一个没有 PFS 的场景：
1 2 3 4 5 6 7 8 Client Server | | | --- ClientHello -------&amp;gt;| | &amp;lt;--- ServerHello --------| (包含服务器 RSA 公钥) | | | -- PreMasterSecret ----&amp;gt;| (用服务器 RSA 公钥加密) | | | &amp;lt;-- Encrypted Data ----&amp;gt;| (双方用派生的会话密钥加密) 在传统的 RSA 密钥交换中，客户端生成一个 PreMasterSecret，用服务器的 RSA 公钥加密后发送。服务器用自己的 RSA 私钥解密。这里的致命问题是：任何人如果记录了这段加密通信，并且在未来获得了服务器的 RSA 私钥，就能解密 PreMasterSecret，进而解密所有历史通信数据。
引入 PFS 后，情况完全不同：
1 2 3 4 5 6 7 8 9 10 Client Server | | | --- ClientHello -------&amp;gt;| | &amp;lt;--- ServerHello --------| (包含服务器临时 ECDHE 公钥) | | | -- Client ECDHE Pub ---&amp;gt;| (客户端临时公钥) | | | (双方各自独立计算共享密钥，不通过网络传输) | | | &amp;lt;-- Encrypted Data ----&amp;gt;| (通信结束后临时密钥立即销毁) 使用 ECDHE 或 DHE 等临时密钥交换时，每次连接都会生成一对新的临时密钥。双方通过 Diffie-Hellman 计算得到一个共享密钥，这个密钥从未在网络上传输过，并且在连接结束后就被销毁。</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>AES 分组加密模式详解：ECB、CBC、CTR、GCM</title>
      <link>https://secdoc.jazor.net/posts/aes-block-cipher-modes/</link>
      <pubDate>Fri, 17 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/aes-block-cipher-modes/</guid>
      <description>深入解析 AES 分组加密的四种工作模式：ECB、CBC、CTR、GCM，理解各模式的原理、安全性和适用场景。</description>
    </item>
    
    <item>
      <title>OCSP 证书状态在线检查</title>
      <link>https://secdoc.jazor.net/posts/ocsp-certificate-status-check/</link>
      <pubDate>Thu, 16 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ocsp-certificate-status-check/</guid>
      <description>OCSP（Online Certificate Status Protocol）是用于实时检查证书是否被吊销的协议。相比 CRL，OCSP 无需下载完整吊销列表，查询效率更高。本文介绍 OCSP 原理及 OpenSSL 命令行操作。
什么是 OCSP？ 当浏览器验证 TLS 证书时，除了检查证书链和有效期，还需确认证书未被吊销。传统方式是下载 CRL（Certificate Revocation List），但列表会随时间增长。OCSP 允许客户端直接查询证书颁发机构，获取特定证书的实时状态。
OCSP 响应类型 状态 含义 good 证书有效，未被吊销 revoked 证书已被吊销 unknown 响应者不知道该证书 从证书提取 OCSP 信息 获取证书的 OCSP 响应者地址 1 openssl x509 -in certificate.crt -noout -ocsp_uri 输出示例：
1 http://ocsp.digicert.com 获取颁发者信息 OCSP 查询需要知道证书的颁发者（CA）：
1 2 3 4 5 # 获取证书颁发者 openssl x509 -in certificate.crt -noout -issuer # 获取颁发者证书 openssl x509 -in certificate.crt -noout -issuer_hash 实际 OCSP 查询示例 使用 OpenSSL 进行 OCSP 查询 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 获取目标证书和颁发者证书 openssl s_client -connect google.</description>
    </item>
    
    <item>
      <title>ECDSA 数字签名算法详解</title>
      <link>https://secdoc.jazor.net/posts/ecdsa-digital-signature-algorithm/</link>
      <pubDate>Wed, 15 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ecdsa-digital-signature-algorithm/</guid>
      <description>ECDSA（Elliptic Curve Digital Signature Algorithm）是基于椭圆曲线密码学的数字签名算法，广泛应用于比特币、区块链以及 TLS 证书中。本文介绍其原理及 OpenSSL 命令行操作。
什么是 ECDSA？ ECDSA 是 DSA（Digital Signature Algorithm）的椭圆曲线版本，利用椭圆曲线离散对数问题的计算难度来保证签名安全性。相比传统 RSA，ECDSA 在相同安全强度下密钥更短，运算更快。
常见曲线 曲线 位数 应用场景 prime256v1 (P-256) 256 位 主流 TLS 证书、Web 应用 secp384r1 (P-384) 384 位 高安全场景、政府、金融 secp521r1 (P-521) 521 位 极高安全需求 生成 ECDSA 密钥对 生成私钥 1 2 3 openssl genpkey -algorithm EC \ -pkeyopt ec_paramgen_curve:prime256v1 \ -out ecdsa_private.pem 导出公钥 1 openssl pkey -in ecdsa_private.pem -pubout -out ecdsa_public.pem 查看密钥详情 1 openssl pkey -in ecdsa_private.</description>
    </item>
    
    <item>
      <title>RSA 填充方案：OAEP 与 PSS 安全实践</title>
      <link>https://secdoc.jazor.net/posts/rsa-padding-schemes-oaep-pss/</link>
      <pubDate>Tue, 14 Apr 2026 00:10:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/rsa-padding-schemes-oaep-pss/</guid>
      <description>详解 RSA 加密和签名中的填充方案，解释为什么 PKCS#1 v1.5 不安全，以及如何使用 OAEP 和 PSS 提升安全性。</description>
    </item>
    
    <item>
      <title>Diffie-Hellman 密钥交换原理与实践</title>
      <link>https://secdoc.jazor.net/posts/diffie-hellman-key-exchange/</link>
      <pubDate>Mon, 13 Apr 2026 00:05:46 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/diffie-hellman-key-exchange/</guid>
      <description>Diffie-Hellman（DH）密钥交换协议是现代密码学的基石之一，它解决了在不安全信道上协商共享密钥的难题。本文将讲解 DH 的原理，并通过 OpenSSL 演示实际操作。
问题背景 假设 Alice 和 Bob 想要通过公开信道协商一个共享密钥，用于后续的加密通信。如果信道被窃听者监听，如何安全地交换密钥？
传统方案需要一个安全的密钥传输渠道，但这往往不现实。Diffie-Hellman 协议巧妙地解决了这个问题：双方可以在公开信道上协商出共享密钥，而窃听者无法得知最终密钥。
数学原理 离散对数难题 DH 的安全性基于离散对数难题：
对于素数 p 和生成元 g，已知 g^a mod p 很容易计算，但从结果反推 a 却极其困难（当 p 足够大时）。
密钥交换流程 假设参数 p（大素数）和 g（生成元）已公开：
1 2 3 4 5 6 7 8 9 10 11 12 13 Alice Bob ---------------------------------------------- 1. 选择私钥 a（随机数） 1. 选择私钥 b（随机数） 2. 计算公钥 A = g^a mod p 2. 计算公钥 B = g^b mod p 3. 发送 A 给 Bob --------&amp;gt; 3.</description>
    </item>
    
    <item>
      <title>Ed25519 密钥算法详解</title>
      <link>https://secdoc.jazor.net/posts/ed25519-key-algorithm-guide/</link>
      <pubDate>Sun, 12 Apr 2026 00:05:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ed25519-key-algorithm-guide/</guid>
      <description>Ed25519 是一种基于 EdDSA（Edwards-curve Digital Signature Algorithm）的数字签名算法，使用 Curve25519 椭圆曲线的变形 Ed25519。相比传统的 RSA 和 ECDSA，Ed25519 在安全性、性能和易用性上都有显著优势，已成为现代密码学的首选签名算法之一。
Ed25519 的核心优势 1. 密钥体积小 Ed25519 的密钥非常紧凑，公钥仅 32 字节，私钥 32 字节（种子）。这相比 RSA 2048 的 256 字节公钥和 1700+ 字节的私钥，存储和传输成本大幅降低。
公钥长度对比：
1 2 3 Ed25519 公钥: 82 字节（Base64 编码后） RSA 2048 公钥: 382 字节（Base64 编码后） ECDSA P-256 公钥: 162 字节（Base64 编码后） 2. 签名速度快 Ed25519 的签名和验证速度都非常快。其设计充分利用了现代 CPU 的特性，比 ECDSA 快约 3-5 倍，比 RSA 快得多。
3. 安全性高 128 位安全强度：等效于 RSA 3072 位或 AES-128 抗侧信道攻击：实现设计避免了时序攻击等侧信道风险 确定性签名：不需要随机数生成器，避免了 ECDSA 的随机数重用漏洞 4.</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>OpenSSL passwd 命令：生成密码哈希</title>
      <link>https://secdoc.jazor.net/posts/openssl-passwd-password-hash/</link>
      <pubDate>Fri, 10 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-passwd-password-hash/</guid>
      <description>OpenSSL passwd 命令用于生成 Unix 密码哈希，支持 SHA-512、SHA-256、MD5 等算法，适用于系统管理和脚本场景。</description>
    </item>
    
    <item>
      <title>OpenSSL rand 命令详解：随机数生成</title>
      <link>https://secdoc.jazor.net/posts/openssl-rand-random-generation/</link>
      <pubDate>Wed, 08 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-rand-random-generation/</guid>
      <description>随机数是密码学的基石。密钥、IV、盐值、Session ID 等都需要高质量的随机数。OpenSSL 的 rand 命令是生成密码学安全随机数的实用工具。
基本语法 1 openssl rand [选项] 字节数 常用选项：
-hex：输出十六进制格式 -base64：输出 Base64 编码格式 -out &amp;lt;文件&amp;gt;：输出到文件 常用示例 生成十六进制随机数 1 2 # 生成 16 字节（128 位）的十六进制随机数 openssl rand -hex 16 输出示例：
1 5254ce50aaf9b31ae6c6ecf2ef75f4de 生成 Base64 随机数 1 2 # 生成 32 字节（256 位）的 Base64 随机数 openssl rand -base64 32 输出示例：
1 n8EZAZAQ4PL60cFHcP0KIeT8dlhsa8m1K8QP1dQVnlQ= 生成不同长度的随机数 1 2 3 4 5 6 7 8 9 10 # 8 字节（64 位） openssl rand -hex 8 # 输出：67194de56e50d52b # 32 字节（256 位） openssl rand -hex 32 # 输出：7be8420779779ecd1253f6be94e7d717b9a75e7aa5d0767c95414e8f811d6b29 # 64 字节（512 位） openssl rand -hex 64 实战场景 1.</description>
    </item>
    
    <item>
      <title>OpenSSL enc 文件加密实战</title>
      <link>https://secdoc.jazor.net/posts/openssl-enc-file-encryption/</link>
      <pubDate>Tue, 07 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-enc-file-encryption/</guid>
      <description>使用 OpenSSL enc 命令进行文件对称加密，包括密码加密、密钥文件加密、Base64 编码等实战场景。</description>
    </item>
    
    <item>
      <title>SSH 配置文件详解</title>
      <link>https://secdoc.jazor.net/posts/ssh-config-file-guide/</link>
      <pubDate>Mon, 06 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-config-file-guide/</guid>
      <description>每次 SSH 连接都要输入一长串参数？~/.ssh/config 配置文件可以简化连接命令，还能统一管理多个主机的配置。
配置文件位置 SSH 客户端配置按以下顺序读取（后读取的优先级更高）：
/etc/ssh/ssh_config — 系统全局配置 ~/.ssh/config — 用户个人配置 用户配置会覆盖全局配置中的同名选项。
基本语法 配置文件由多个 Host 块组成，每个块定义一组主机的配置：
1 2 3 4 5 6 Host 别名 选项1 值1 选项2 值2 Host 另一个别名 选项1 值1 注意：每行的缩进使用空格（通常 4 个空格或 1 个 Tab），不是必须但推荐。
常用配置选项 选项 说明 示例 HostName 实际主机名或 IP HostName 192.168.1.100 User 登录用户名 User admin Port SSH 端口 Port 2222 IdentityFile 指定私钥文件 IdentityFile ~/.ssh/id_ed25519 PreferredAuthentications 首选认证方式 PreferredAuthentications publickey ServerAliveInterval 心跳间隔秒数 ServerAliveInterval 60 ServerAliveCountMax 心跳失败次数上限 ServerAliveCountMax 3 ProxyJump 跳板机 ProxyJump bastion 实战示例 简化连接命令 不使用配置文件：</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-dgst-hash-calculation/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-dgst-hash-calculation/</guid>
      <description>使用 OpenSSL dgst 命令计算文件的 SHA-256、SHA-512、MD5 等哈希值，用于文件完整性校验和密码存储。</description>
    </item>
    
    <item>
      <title>SSH 密钥认证配置指南</title>
      <link>https://secdoc.jazor.net/posts/ssh-key-auth-setup/</link>
      <pubDate>Sat, 04 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-key-auth-setup/</guid>
      <description>详细讲解 SSH 密钥认证的完整配置流程，包括密钥生成、公钥部署、配置优化等步骤。</description>
    </item>
    
    <item>
      <title>密码哈希算法对比：MD5、SHA-1、SHA-256、bcrypt</title>
      <link>https://secdoc.jazor.net/posts/password-hash-algorithms/</link>
      <pubDate>Sat, 04 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/password-hash-algorithms/</guid>
      <description>对比常用哈希算法的特点和适用场景，解释为什么存储密码要用 bcrypt 而不是 SHA-256。</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>SHA-256 哈希算法原理</title>
      <link>https://secdoc.jazor.net/posts/sha256-hash-principle/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/sha256-hash-principle/</guid>
      <description>深入解析 SHA-256 哈希算法的工作原理，包括消息填充、分块处理、压缩函数等核心步骤，理解其安全性的数学基础。</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>SSH ProxyJump：跳板机配置最佳实践</title>
      <link>https://secdoc.jazor.net/posts/ssh-proxyjump-configuration/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-proxyjump-configuration/</guid>
      <description>详解 SSH ProxyJump 跳板机配置，包括命令行用法、SSH Config 配置、与 ProxyCommand 的对比。</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>哈希函数与数字签名：数据完整性保障</title>
      <link>https://secdoc.jazor.net/posts/hash-digital-signatures/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/hash-digital-signatures/</guid>
      <description>本文介绍哈希函数的特性、常用算法，以及数字签名如何保障数据完整性和 authenticity。</description>
    </item>
    
    <item>
      <title>密钥管理最佳实践：密钥生命周期与安全存储</title>
      <link>https://secdoc.jazor.net/posts/key-management-best-practices/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/key-management-best-practices/</guid>
      <description>本文介绍密钥管理的关键实践，包括密钥生成、轮换、存储和销毁的最佳方法。</description>
    </item>
    
    <item>
      <title>对称加密基础：原理与实践</title>
      <link>https://secdoc.jazor.net/posts/symmetric-encryption-basics/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/symmetric-encryption-basics/</guid>
      <description>本文介绍对称加密的基本原理、常见算法及其实际应用场景。</description>
    </item>
    
    <item>
      <title>非对称加密详解：公钥与私钥的关系</title>
      <link>https://secdoc.jazor.net/posts/asymmetric-encryption-explained/</link>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/asymmetric-encryption-explained/</guid>
      <description>本文深入解析非对称加密的工作原理，以及公钥和私钥如何协同工作。</description>
    </item>
    
    <item>
      <title>SSH 配置会话保持连接</title>
      <link>https://secdoc.jazor.net/posts/ssh-keepalive-configuration/</link>
      <pubDate>Wed, 01 Apr 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-keepalive-configuration/</guid>
      <description>介绍如何配置 SSH 客户端和服务端的 keepalive 机制，防止 SSH 会话因空闲而断开。</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>TLS 1.3 密码套件配置指南</title>
      <link>https://secdoc.jazor.net/posts/tls-1.3-cipher-suites-guide/</link>
      <pubDate>Sun, 29 Mar 2026 00:00:19 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-1.3-cipher-suites-guide/</guid>
      <description>TLS 1.3 密码套件配置指南 TLS 1.3 相比之前的版本有了重大改进，其中最重要的变化之一就是大幅简化了密码套件。本文将详细介绍 TLS 1.3 的密码套件配置和使用方法。
TLS 1.3 密码套件概述 TLS 1.3 对密码套件进行了大幅简化，移除了不安全的算法，只保留以下类型的密码套件：
AEAD 密码套件：所有套件都使用 AEAD（Authenticated Encryption with Associated Data）算法 前向保密：所有套件都支持完美前向保密（PFS） 移除弱算法：不再支持 RC4、MD5、SHA-1 等 TLS 1.3 支持的密码套件 1. GCM 密码套件 密码套件 密钥交换 认证 加密 密钥长度 适用场景 TLS_AES_256_GCM_SHA384 ECDHE ECDSA/RSA AES-256-GCM 256位 高安全性要求 TLS_CHACHA20_POLY1305_SHA256 ECDHE ECDSA/RSA ChaCha20-Poly1305 256位 移动设备、弱网络 TLS_AES_128_GCM_SHA256 ECDHE ECDSA/RSA AES-128-GCM 128位 标准安全性 TLS_AES_128_CCM_SHA256 ECDHE ECDSA/RSA AES-128-CCM 128位 兼容性要求 2. 查看系统支持的 TLS 1.3 密码套件 1 2 3 4 5 # 查看 OpenSSL 支持的 TLS 1.</description>
    </item>
    
    <item>
      <title>OpenSSL EC 密钥生成与管理</title>
      <link>https://secdoc.jazor.net/posts/openssl-ec-key-generation/</link>
      <pubDate>Sun, 29 Mar 2026 00:00:18 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-ec-key-generation/</guid>
      <description>OpenSSL EC 密钥生成与管理 椭圆曲线密码学（Elliptic Curve Cryptography, ECC）是现代密码学中的重要技术，相比传统 RSA 算法，ECC 在提供相同安全级别的情况下只需要更短的密钥长度。本文详细介绍如何使用 OpenSSL 生成和管理 EC 密钥。
EC 密钥的优势 相比 RSA 密钥，EC 密钥具有以下优势：
更短的密钥长度：256位 EC 密钥相当于 3072位 RSA 密钥的安全强度 更快的计算速度：加密解密和签名验证速度更快 更小的存储空间：密钥文件更小，节省存储空间 更低的带宽占用：传输密钥时占用更少带宽 生成 EC 密钥对 1. 生成 EC 私钥 1 2 3 4 5 6 7 8 # 生成 P-256 曲线的 EC 私钥 openssl ecparam -name secp256r1 -genkey -out ec_private.pem # 生成 P-384 曲线的 EC 私钥 openssl ecparam -name secp384r1 -genkey -out ec_private.pem # 生成 P-521 曲线的 EC 私钥 openssl ecparam -name secp521r1 -genkey -out ec_private.</description>
    </item>
    
    <item>
      <title>证书吊销列表验证指南</title>
      <link>https://secdoc.jazor.net/posts/certificates-crl-validation-guide/</link>
      <pubDate>Sun, 29 Mar 2026 00:00:16 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/certificates-crl-validation-guide/</guid>
      <description>证书吊销列表验证指南 证书吊销列表（Certificate Revocation List, CRL）是 PKI 系统中用于撤销已颁发证书的重要机制。本文将详细介绍如何使用 OpenSSL 工具验证证书的吊销状态。
什么是证书吊销列表 CRL 是由证书颁发机构（CA）维护的已撤销证书的列表。当证书出现以下情况时，会被添加到 CRL 中：
私钥泄露 证书信息变更 用户不再需要该证书 CA 发现证书存在问题 验证证书吊销状态的命令 1. 查看证书基本信息 1 openssl x509 -in certificate.pem -text -noout 2. 下载 CRL 文件 1 2 3 4 5 # 从证书中提取 CRL 分布点 openssl x509 -in certificate.pem -text -noout | grep -A 5 &amp;#34;CRL Distribution Points&amp;#34; # 下载 CRL 文件 wget -O crl.crl http://crl.example.com/crl.crl 3. 验证证书是否被吊销 1 openssl x509 -in certificate.pem -noout -purpose sslserver -verifycrl crl.</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>OpenSSL 证书管理实战：从生成到验证</title>
      <link>https://secdoc.jazor.net/posts/openssl-certificate-management/</link>
      <pubDate>Sat, 28 Mar 2026 00:00:34 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-certificate-management/</guid>
      <description>OpenSSL 是最强大的证书管理工具之一。本文聚焦日常证书管理中最常用的操作：生成、签名、转换和验证。
生成私钥 生成 RSA 私钥 1 2 3 4 5 6 7 8 # 生成 2048 位 RSA 私钥 openssl genrsa -out private.key 2048 # 生成 4096 位 RSA 私钥（更安全） openssl genrsa -out private.key 4096 # 生成带密码保护的私钥 openssl genrsa -aes256 -out private-encrypted.key 2048 生成 EC 私钥 1 2 3 4 5 # 生成 EC 私钥（P-256 曲线） openssl ecparam -name prime256v1 -genkey -noout -out ec-private.key # 生成 EC 私钥（P-384 曲线） openssl ecparam -name secp384r1 -genkey -noout -out ec-private-384.</description>
    </item>
    
    <item>
      <title>TLS 协议深度解析：TLS 1.2 与 TLS 1.3 的关键差异</title>
      <link>https://secdoc.jazor.net/posts/tls-protocol-deep-dive/</link>
      <pubDate>Sat, 28 Mar 2026 00:00:33 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/tls-protocol-deep-dive/</guid>
      <description>TLS（Transport Layer Security）协议是现代互联网安全的基石。本文聚焦 TLS 1.2 和 TLS 1.3 的核心差异，帮助你理解协议升级的重要性。
TLS 1.2 的工作流程 TLS 1.2 的握手过程需要 2 个 RTT（Round-Trip Time）：
1 2 3 4 5 6 7 8 9 10 11 Client Server |-------- ClientHello -----------------------&amp;gt;| |&amp;lt;------- ServerHello ------------------------| |&amp;lt;------- Certificate ------------------------| |&amp;lt;------- ServerKeyExchange ------------------| |&amp;lt;------- ServerHelloDone --------------------| |-------- ClientKeyExchange -----------------&amp;gt;| |-------- ChangeCipherSpec ------------------&amp;gt;| |-------- Finished --------------------------&amp;gt;| |&amp;lt;------- ChangeCipherSpec -------------------| |&amp;lt;------- Finished ---------------------------| 使用 OpenSSL 测试 TLS 1.2 连接 1 2 3 4 5 # 测试服务器是否支持 TLS 1.</description>
    </item>
    
    <item>
      <title>OpenSSL x509 命令详解：证书查看与解析</title>
      <link>https://secdoc.jazor.net/posts/openssl-x509-command-guide/</link>
      <pubDate>Fri, 27 Mar 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/openssl-x509-command-guide/</guid>
      <description>openssl x509 是日常运维中最常用的证书查看工具。本文聚焦于查看和解析证书信息，不涉及证书生成。
基本语法 1 openssl x509 [options] -in &amp;lt;certificate file&amp;gt; 常用查看命令 查看证书完整信息 1 openssl x509 -in cert.pem -text -noout 输出包含：版本、序列号、签名算法、颁发者、有效期、主体、公钥、扩展信息。
只查看关键字段 1 2 3 4 5 6 7 8 9 10 11 # 查看主体（Subject） openssl x509 -in cert.pem -subject -noout # 查看颁发者（Issuer） openssl x509 -in cert.pem -issuer -noout # 查看有效期 openssl x509 -in cert.pem -dates -noout # 查看序列号 openssl x509 -in cert.pem -serial -noout 查看公钥信息 1 openssl x509 -in cert.</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>SSH 密钥类型选择与格式转换</title>
      <link>https://secdoc.jazor.net/posts/ssh-key-types-conversion/</link>
      <pubDate>Thu, 26 Mar 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-key-types-conversion/</guid>
      <description>SSH 密钥认证比密码认证更安全、更方便。但面对多种密钥类型，应该如何选择？本文聚焦这个问题。
常见密钥类型对比 类型 密钥长度 安全性 性能 兼容性 ed25519 256位 极高 最快 OpenSSH 6.5+ rsa 4096位 高 较慢 广泛兼容 ecdsa 521位 高 快 较好 推荐：优先选择 Ed25519 Ed25519 是目前最推荐的 SSH 密钥类型：
安全性高：基于椭圆曲线，256位密钥相当于 RSA 3072位 性能优秀：签名和验证速度都很快 密钥简短：私钥仅 411 字节，公钥仅 98 字节 生成 Ed25519 密钥 1 ssh-keygen -t ed25519 -C &amp;#34;your_email@example.com&amp;#34; 输出示例：
1 2 3 4 5 Generating public/private ed25519 key pair. Your identification has been saved in test_key_ed25519 Your public key has been saved in test_key_ed25519.</description>
    </item>
    
    <item>
      <title>SSH 隧道实战：端口转发完全指南</title>
      <link>https://secdoc.jazor.net/posts/ssh-tunnel-port-forwarding/</link>
      <pubDate>Wed, 25 Mar 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-tunnel-port-forwarding/</guid>
      <description>SSH 隧道（SSH Tunneling）是 SSH 协议最强大的功能之一，通过端口转发实现安全的网络通信。本文聚焦 SSH 隧道的三种模式，每个命令都可直接使用。
本地端口转发（Local Forward） 将远程服务的端口映射到本地，适合访问内网服务。
基本语法 1 ssh -L [本地地址:]本地端口:目标主机:目标端口 跳板机用户@跳板机地址 实战案例：访问内网数据库 场景：跳板机 192.168.1.100 可访问内网数据库 10.0.0.50:3306
1 2 3 4 5 # 将远程 MySQL 映射到本地 3307 ssh -L 3307:10.0.0.50:3306 user@192.168.1.100 # 然后本地连接 mysql -h 127.0.0.1 -P 3307 -u dbuser -p 绑定特定接口 1 2 3 4 5 # 仅本机访问（默认） ssh -L 3307:10.0.0.50:3306 user@192.168.1.100 # 允许其他机器访问（注意安全风险） ssh -L 0.0.0.0:3307:10.0.0.50:3306 user@192.168.1.100 后台运行 1 2 3 4 5 # -f 后台运行，-N 不执行远程命令 ssh -fNL 3307:10.</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>SSH 安全加固完全指南：从基础到高级配置</title>
      <link>https://secdoc.jazor.net/posts/ssh-hardening-best-practices/</link>
      <pubDate>Tue, 24 Mar 2026 00:00:00 +0800</pubDate>
      
      <guid>https://secdoc.jazor.net/posts/ssh-hardening-best-practices/</guid>
      <description>SSH（Secure Shell）是系统管理员最常用的远程访问协议，也是攻击者的首要目标。本文详细介绍 SSH 安全加固的各个层面，从基础配置到高级技巧，帮助你构建坚不可摧的 SSH 防线。
一、SSH 基础安全配置 sshd_config 核心配置 配置文件路径：/etc/ssh/sshd_config
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 30 31 32 33 # 禁用 root 登录 PermitRootLogin no # 禁用密码认证（强制密钥认证） PasswordAuthentication no PubkeyAuthentication yes # 禁用空密码 PermitEmptyPasswords no # 禁用 PAM（可选，提高安全性但可能影响某些认证方式） UsePAM no # 限制登录用户 AllowUsers admin deploy@192.168.1.0/24 # 或使用组 AllowGroups ssh-users # 设置登录超时（秒） LoginGraceTime 60 # 最大认证尝试次数 MaxAuthTries 3 # 限制会话数 MaxSessions 10 # 限制启动会话数（防止资源耗尽） MaxStartups 10:30:100 # 格式: start:rate:full # start: 开始拒绝前的未认证连接数 # rate: 拒绝概率增长速率 # full: 完全拒绝的连接数 修改默认端口 1 2 3 4 5 6 7 8 9 10 11 12 # 不要使用默认的 22 端口 Port 2222 # 或使用多个端口（便于过渡） Port 22 Port 2222 # 记得更新防火墙规则 ufw allow 2222/tcp # 或 firewall-cmd --add-port=2222/tcp --permanent firewall-cmd --reload 完整的安全配置示例 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 # /etc/ssh/sshd_config 安全加固版 # 网络设置 Port 2222 AddressFamily inet ListenAddress 0.</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>
