<?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>openssl on SecDoc</title>
    <link>https://secdoc.jazor.net/tags/openssl/</link>
    <description>Recent content in openssl 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/tags/openssl/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>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>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>私有 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>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>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>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>双向 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>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>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>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>使用 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>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>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>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>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>
    
  </channel>
</rss>
