PKCS#12 格式详解与实战

什么是 PKCS#12? PKCS#12(也称为 PFX)是公钥密码学标准之一,定义了一种用于存储多个密码学对象的文件格式。在实际应用中,PKCS#12 文件通常用于: 打包服务器证书和私钥 包含证书链(CA 证书) 在不同系统之间迁移证书和私钥 与 PEM 格式相比,PKCS#12 将证书、私钥和证书链打包成单个二进制文件,并支持加密保护。 基本用法 从私钥和证书创建 PKCS#12 最常见的用法是将私钥和服务器证书打包成 PKCS#12 文件: 1 2 3 4 5 6 openssl pkcs12 -export \ -out server.p12 \ -inkey server.key \ -in server.crt \ -name "Server Certificate" \ -passout pass:changeit 参数说明: -export:创建 PKCS#12 文件 -out server.p12:输出文件名 -inkey server.key:输入的私钥文件 -in server.crt:输入的证书文件 -name "Server Certificate":证书的友好名称(可选) -passout pass:changeit:导出密码 执行后会在当前目录生成 server.p12 文件。 查看 PKCS#12 文件内容 创建后可以使用以下命令查看文件信息: 1 openssl pkcs12 -in server....

May 27, 2026 · 3 min · 黑豆子

RSA 密钥长度选择与推荐

在搭建 HTTPS 服务或部署 PKI 基础设施时,RSA 密钥长度的选择是一个关键决策。密钥太短会带来安全隐患,密钥太长则会影响性能并增加计算资源消耗。本文将详细介绍如何根据不同场景选择合适的 RSA 密钥长度。 什么是 RSA 密钥长度 RSA 密钥长度指的是模数(modulus)的 bit 数,常见的有 2048 位、3072 位和 4096 位。密钥长度直接决定了 RSA 算法的安全强度——位数越高,破解难度呈指数级增长,但生成和使用密钥的计算成本也越高。 安全级别与密钥长度对照 根据 NIST(美国国家标准与技术研究院)的推荐,不同 RSA 密钥长度对应的安全强度如下: RSA 密钥长度 约等安全级别 适用场景 1024 位 ~80 bit 已不推荐使用,仅用于兼容老系统 2048 位 ~112 bit 当前最低标准,兼容性与性能的平衡点 3072 位 ~128 bit 高安全要求场景,长期保护需求 4096 位 ~140 bit 最高安全级别,敏感数据保护 注意:1024 位 RSA 密钥已被认为是不可信的,主流浏览器和证书颁发机构已不再签发基于 1024 位 RSA 的证书。 当前主流推荐 2048 位:通用场景的最佳选择 对于大多数 Web 服务和内部系统,2048 位 RSA 密钥是当前的最低安全标准。它提供了足够的安全强度,同时保持了良好的性能。 使用 OpenSSL 生成 2048 位 RSA 私钥:...

May 26, 2026 · 2 min · 黑豆子

TLS 证书类型详解:DV、OV、EV 的区别与选择

在选择 HTTPS 证书时,你可能听说过 DV、OV、EV 三种类型。它们有什么区别?各自的适用场景是什么?本文详细解读这三种证书类型的验证级别、安全特性和选择建议。 证书类型概述 TLS/SSL 证书按照验证级别分为三类: 类型 全称 验证级别 颁发速度 适用场景 DV Domain Validation 域名所有权 分钟级 个人网站、测试环境 OV Organization Validation 域名 + 企业身份 小时级 商业网站、企业应用 EV Extended Validation 全面企业验证 天级 金融、电商、高信任需求 DV 证书(域名验证) DV 证书是最基础的 TLS 证书类型,只验证申请者对域名的控制权。 验证方式 域名所有权验证(DNS 记录、邮件验证、文件验证) 不验证申请者身份 完全自动化颁发 真实示例 使用 Let’s Encrypt 证书查看: 1 echo | openssl s_client -connect www.letsencrypt.org:443 -servername www.letsencrypt.org 2>/dev/null | openssl x509 -noout -subject -issuer 输出: 1 2 subject=CN = letsencrypt....

May 22, 2026 · 3 min · 黑豆子

X.509 证书扩展详解

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....

May 18, 2026 · 3 min · 黑豆子

国密 SSL/TLS 配置指南:SM2/SM3/SM4 在 Nginx 中的应用

介绍国密 SSL/TLS 算法(SM2/SM3/SM4),讲解在 OpenSSL 和 Nginx 中配置国密加密的实战方法。

May 17, 2026 · 3 min · 黑豆子

OpenSSL s_time:SSL/TLS 性能测试工具详解

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....

May 16, 2026 · 2 min · 黑豆子

OpenSSL 交叉签名证书详解与实战

交叉签名证书(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,通过交叉签名让新证书也能被这些客户端接受。...

May 15, 2026 · 3 min · 黑豆子

OpenSSL verify 命令详解:证书链验证原理与实践

详解 OpenSSL verify 命令的用法,包括证书链验证、CA 存储、partial_chain、trust 设置等核心参数,每个命令都经过实际验证。

May 14, 2026 · 3 min · 黑豆子

OpenSSL Engine 机制与硬件安全模块集成

深入解析 OpenSSL Engine 架构,讲解如何通过 Engine 接口集成 HSM、PKCS#11 设备、云 KMS 等外部加密服务。

May 13, 2026 · 3 min · 黑豆子

Nginx 中椭圆曲线配置实战指南

在配置 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>&1 | grep -o "X25519\|secp256r1\|secp384r1" # 运行时查看 OpenSSL 支持的曲线 openssl ecparam -list_curves | grep -E "prime256v1|secp384r1|X25519" 输出示例:...

May 12, 2026 · 3 min · 黑豆子