OpenSSL PEM 格式内部结构详解
PEM(Privacy-Enhanced Mail)是 OpenSSL 和大多数 Linux/Unix 系统中最常用的证书和私钥格式。理解 PEM 的内部结构有助于排查格式转换问题、编写自动化脚本,以及深入理解 PKI 工作原理。 PEM 格式概述 PEM 是一种基于 Base64 编码的格式,用于存储DER编码的二进制数据。其核心特点: 文本友好:内容为可打印的 ASCII 字符,便于复制粘贴 结构化:使用 -----BEGIN xxx----- 和 -----END xxx----- 标记包裹 Base64 编码:将 DER 二进制数据转换为 ASCII 字符 PEM 文件结构 典型的 PEM 文件结构如下: 1 2 3 4 -----BEGIN TYPE----- Base64 编码的 DER 数据 (每行 64-76 字符) -----END TYPE----- 实际示例:X.509 证书 1 2 3 4 5 6 -----BEGIN CERTIFICATE----- MIIC/zCCAeegAwIBAgIUE7Few6gydfFoBDQ+1aAHba6absYwDQYJKoZIhvcNAQEL BQAwDzENMAsGA1UEAwwEVGVzdDAeFw0yNjA3MTYxNjA4MDFaFw0yNjA3MTcxNjA4 MDFaMA8xDTALBgNVBAMMBFRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK ... -----END CERTIFICATE----- 实际示例:私钥(PKCS#8 格式) 1 2 3 4 5 6 -----BEGIN PRIVATE KEY----- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDwyIPC1HgFgg7v RcV/Lbxy/zb7j2hVcnZgOjg5sb6HbTLa18MfoFDhQzOfyYwTlrcE2MdUhST9VyDa 4Y+iWxY3XL6xZHaNNf7s0bWgxUwc2Z9sx2hCBaHP7zndwipcgE1n4BH82sRTtCbn ....