0
点赞
收藏
分享

微信扫一扫

CA(证书颁发机构)颁发的数字证书格式

主要有以下几种通用格式和包装格式:

  1. X.509 (核心标准):
  • 核心: X.509 本身不是文件格式,而是一系列标准,定义了数字证书(包括公钥证书)的结构和数据字段(如版本、序列号、签名算法、颁发者、有效期、使用者、公钥、扩展项等)。它几乎是所有现代公钥基础设施的基础。
  • 编码: X.509 证书信息可以用不同方式编码成文件:
  • DER (Distinguished Encoding Rules):
  • 描述: 二进制格式。ASN.1 数据结构的严格、确定性二进制编码规则。
  • 特点: 紧凑(体积小),最适合计算机处理。不可阅读(人类不可直接阅读)。
  • 文件扩展名: .der.cer.crt(有时,但本质仍是 DER 二进制)
  • PEM (Privacy-Enhanced Mail):
  • 描述: 基于文本的格式。本质上是 DER 编码的 Base64 文本表示(可打印 ASCII 字符),并在文件首尾添加 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 标签。
  • 特点: 人类可读(虽然是 Base64),易于通过文本编辑器查看、复制粘贴(例如配置 Web 服务器)。是 Linux/Unix 世界和 OpenSSL 最常用的格式。
  • 文件扩展名: .pem.crt.cer (非常常见), .key (通常用于私钥)。
  1. PKCS #7 / Cryptographic Message Syntax (.P7B, .P7C):
  • 描述: 一种标准格式,用于封装加密数据,最常见于证书链。它可以包含单个证书,但更常用于打包多个证书(通常不包括私钥)。
  • 特点:
  • 通常包含使用者证书及其 CA 中间证书(构成证书链)。
  • 不包含私钥。
  • 常用于 Windows 环境中分发证书链,也用于 Java Keystores 导入。
  • 同样支持 DER(二进制)或 PEM(Base64 文本)编码。
  • 文件扩展名: .p7b.p7c (常见于 Windows)。PEM 编码的 PKCS#7 常用 .pem
  1. PKCS #12 / Personal Information Exchange (.PFX, .P12):
  • 描述: 一种打包格式,旨在安全地传输用户的私钥及其对应的公钥证书,以及(可选)相关的证书链。通常受密码保护。
  • 特点:
  • 包含私钥(这是它与 .p7b 的关键区别)。
  • 包含公钥证书和可能的中间证书(证书链)。
  • 二进制格式。
  • 常用于在系统、浏览器或应用程序(如 IIS, Apache Tomcat)之间导入/导出证书和私钥对(例如,将服务器证书和私钥从生成环境移动到部署环境)。
  • 安全性:文件本身使用强密码加密。
  • 文件扩展名: .pfx.p12
  1. 其他相关格式:
  • JWT (JSON Web Token): 虽然主要不是用于存储标准 X.509 证书本身,但 JWTs 可以使用嵌入的 X.509 证书(通常是 PEM 编码的文本)来携带证明信息。这属于特定应用场景下的载体格式。
  • FIDO U2F/FIDO2 证书: 用于认证硬件的专用证书格式,结构与标准 X.509 有所不同,通常内置于硬件安全模块中,不是常见的可分发文件格式。
  • Certificate Store (.SST): 特定于 Windows 的文件格式,用于导出/导入一组证书到 Windows 证书存储。

总结与关键区别:

格式

描述

包含内容

包含私钥?

常用扩展名

主要用途

X.509 (DER)

核心标准(结构),二进制编码

单个公钥证书信息

No

.der.cer.crt (有时)

程序内部处理,存储

X.509 (PEM)

X.509 结构,Base64 文本编码 + PEM 标签

单个公钥证书信息

No

.pem.crt.cer (非常常见)

配置(Web服务器等),查看,复制粘贴

PKCS#7 (.P7B)

封装格式,用于证书链

一个或多个证书(链)

No

.p7b.p7c

分发证书链(尤其Windows)

PKCS#12 (.PFX)

安全打包格式

私钥 + 公钥证书 + (可选)链

Yes

.pfx.p12

在系统间安全传输包含私钥的完整证书对(导入/导出)

理解要点:

  1. X.509 是核心: 几乎所有 CA 颁发的公钥证书都基于 X.509 标准来定义其内容。
  2. 编码 vs. 容器: .cer/.crt/.pem (通常是 X.509 PEM/DER) 直接存储单个证书信息。.p7b/.p7c (PKCS#7) 存储一个或多个证书(证书链)。.pfx/.p12 (PKCS#12) 存储证书+私钥(+链)。
  3. 私钥是关键: .pem.crt.cer.p7b 等不包含私钥.pfx/.p12 包含私钥,是受密码保护的安全容器。
  4. 扩展名不绝对: 文件扩展名可能混淆(如 .crt/.cer 有时指 DER,有时指 PEM)。内容本身(文本标签或二进制编码)才是关键。

在实际应用中,你会经常遇到 CA 提供的证书文件是 .crt(PEM), .cer (DER 或 PEM), .pem.p7b (用于链), 或 .pfx (当包含私钥时)。OpenSSL 等工具可以方便地在这些格式之间进行转换(例如 DER to PEM, PEM to PKCS#7, PEM to PKCS#12 等)。

举报

相关推荐

0 条评论