搞懂 PEM、ANS、PFX、P12、p8、CER、X509 等证书相关文件格式 后缀

article/2025/10/10 21:11:40

文章目录

    • 结论
    • ASN.1
    • PEM
    • .pfx
      • 介绍
      • 应用
    • .p12
    • .p8
    • .cer
    • .crt
    • X.509
    • 参考

http证书相关的文件格式、编码、概念比较偏多。这里对文件的各种文件后缀和格式做了统一的整理和解释说明

我在国密实验室申请下载了一个证书,解压后如下图,起初我是比较懵的,各种的文件让我一头雾水。下面我们将讲解一个各种文件格式后缀。

在这里插入图片描述

结论

.pem文件一种可阅读格式的文件(文本文件),文件内容可能代表的是证书、可能代表私钥等

.oca.pem: (中间)证书文件

.rca.pem:(根部)证书文件

.pfx: 一种归档文件,可以同时存储证书、私钥等内容,就比如上面的both.pfx其实就是其他所有文件的总和。

.cer:二进制格式的证书文件

crt.pem: PEM格式的证书文件,文本文件可阅读

.key: 二进制密钥文件,上图为私钥文件

.key.pem:PEM格式的密钥文件,上图中对应的文件为pkcs#1格式的PEM私钥文件

.key.p8:PEM格式的私钥文件,上图中对应的文件为pkcs#8格式的PEM私钥文件

区分上面两种格式的私钥文件很简单。

如果PEM格式指明是算法的私钥,那么就是pkcs#1格式,比如下面

-----BEGIN RSA PRIVATE KEY-----
....
-----END RSA PRIVATE KEY-----

如果没有指明那就是pkcs#8格式,比如下面的

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

因为国密是双证书体系,一个终端需要两份证书,一封是签名证书,一封是加密证书,所以在图片里面出现了两份终端证书

enc代表加密相关的,sig代表签名相关的。

比如上面的enc.key代表加密证书对应的私钥文件,enc.cer就是加密证书。

还有一点需要注意,文件名字由人而定,叫什么都不一定,我们就是以上图文件为例来说明我们证书相关的文件有哪些。

ASN.1

​ 全称为 Abstract Syntax Notation One (ASN.1) ,抽象语言,可用来描述数据结构,多用于描述加密方面的数据结构。这种ASN1描述的数据结构可以序列化和反序列化,进而来实现跨平台的传输。

​ ASN.1描述数据结构对于人来说是有可阅读性的,可以编码成二进制文件,对于机器来说也是可以读取的。

Foo协议描述例子:

FooProtocol DEFINITIONS ::= BEGINFooQuestion ::= SEQUENCE {trackingNumber INTEGER,question       IA5String}FooAnswer ::= SEQUENCE {questionNumber INTEGER,answer         BOOLEAN}END

ANS.1可以编码成二进制数据, 有多种编码规则 BER(Basic Encoding Rules) 、DER(Distinguished Encoding Rules)、CER(Canonical Encoding Rules)等

PEM

PEM 全称为 Privacy-Enhanced Mail ,是一种用于密码学相关的文件的格式。

​ 由于许多密码学相关的标准都是由 ASN.1 定义数据结构,然后用 Distinguished Encoding Rules (DER) 去序列化这些结构,序列的结果为二进制文件,比如证书、密钥等。纯二进制文件不易在网络中传输,在很多情况下也不套容易展示出来。一般我们通过Base64 或者HEX来编码二进制文件。PEM就使用了Base64编码了二进制文件。

​ PEM是把二进制数据通过Base64进行编码,然后再头部添加header -----BEGIN XXX----- 尾部添加footer -----END XXX-----。 header 和footer之间的数据就是被Base64编码的二进制数据。XXX 是要编码的数据内容类型,可以是 CERTIFICATECERTIFICATE REQUESTPRIVATE KEYX509 CRL

例:

-----BEGIN CERTIFICATE-----
MIIBzTCCAXCgAwIBAgIGAXKnMKNyMAwGCCqBHM9VAYN1BQAwSTELMAkGA1UEBhMC
Q04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kvU00yMRgwFgYDVQQDEw9S
b290Q0EgZm9yIFRlc3QwIhgPMjAxNTEyMzExNjAwMDBaGA8yMDM1MTIzMDE2MDAw
MFowSTELMAkGA1UEBhMCQ04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kv
U00yMRgwFgYDVQQDEw9Sb290Q0EgZm9yIFRlc3QwWTATBgcqhkjOPQIBBggqgRzP
VQGCLQNCAATj+apYlL+ddWXZ7+mFZXZJGbcJFXUN+Fszz6humeyWZP4qEEr2N0+a
Zdwo/21ft232yo0jPLzdscKB261zSQXSoz4wPDAZBgNVHQ4EEgQQnGnsD7oaOcWv
6CTrspwSBDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIAxjAMBggqgRzP
VQGDdQUAA0kAMEYCIQCEnW5BlQh0vmsOLxSoXYc/7zs++wWyFc1tnBHENR4ElwIh
AI1Lwu6in1ruflZhzseWulXwcITf3bm/Y5X1g1XFWQUH
-----END CERTIFICATE-----

一般PEM编码的数据会出现在 后缀为.pem 的文件中。也可能出现在其他后缀文件中,比如.cer(PEM编码的证书数据,有时候也不用PEM编码,直接就是二进制数据)、.crt(PEM编码的证书数据)文件。

还有一点就是,可以存放不同的内容类型的内容到同一个PEM文件。如下

a.pem

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY----------BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

我们可以通过PEM的头部和尾部去推到文件内容是什么,但是如果碰见这种文件后缀.key.pem.crt.pem.cer.pem。一般文件内容就很容易推导出了

.key.pem 密钥PEM编码数据。 crt.pem:证书的PEM编码数据 。 .cer.pem:证书的PEM编码数据。另外pem文件直接打开看header就可以知道它存储的是什么。

.pfx

介绍

​ 个人认为pfx文件不是证书,pfx是一种PKCS#12归档文件格式的一种后缀,PKCS #12文件格式的后缀为 :.p12 或者 .pfx

PKCS的意思为 Public-Key Cryptography Standards,也就是公钥加密标准(非对称加密标准) 。 PKCS#12为PKCS 的12号标准,它的名字为个人信息交换语法标准Personal Information Exchange Syntax Standard

PKCS#12规定了 一种归档文件格式,PKCS #12格式文件的前身是微软的PFX格式文件。PKCS #12格式文件可以存储证书(X509证书),私钥、废弃证书列表(CRL)、和一些可以自定义的信息(由实现者决定)。此文件可以被加密或者签名的,要想读取此文件可能需要解密。由此可见大家可以把此文件想象成一个存储数据的数据库,存储证书、私钥、CRL、自定义信息的数据,有特定的结构格式。

应用

​ 它通常被存储一个私钥和这个私钥相关的证书或者证书链

​ java9以后就会PCKS# 12 作为默认的keystore格式。

.p12

同上

.p8

.p8是 PKCS #8的文件格式后缀,PKCS #8格式的名字为私钥信息语法标准(Private-Key Information Syntax Standard)。

存储的私钥可以被加密,支持多密码加密。存储的内容是PEM 编码的格式。下图的文件其实就是PKCS #8格式的私钥PEM文件

-----BEGIN PRIVATE KEY-----
MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAq7BFUpkGp3+LQmlQ
.....PkaxlEECIQCNymjsoI7GldtujVnr1qT+3yedLfHK
srDVjIT3LsvTqw==
-----END PRIVATE KEY-----

还有一些私钥文件指明了具体的算法,比如下面。EC代表数据Elliptic Curve ,就是椭圆曲线的意思。 指明算法的其实就是 PKCS #1格式的私钥

-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIOUO8Ie5zWSXVvUMZPea9YuMNmPYLwbWYW.....
fOAH5brAl/HgLBhyQMwG7jMwNRN7CO+fwA==
-----END EC PRIVATE KEY-----

还有以 -----BEGIN RSA PRIVATE KEY----- 开头的文件,这就代表的是私钥类型是RSA的私钥。如果只是以-----BEGIN PRIVATE KEY-----开头的话,私钥类型就包含在数据里面。

.cer

存储X.509证书的文件,文件内容可以是 ASN.1- DER编码的二进制数据 也可以是ASN.1- DER编码的二进制数据再被PEM编码的数据。

.crt

存储X.509证书的文件,文件内容是ASN.1- DER编码的二进制数据然后再被PEM编码的数据。

X.509

书写中…

参考

百科


http://chatgpt.dhexx.cn/article/X7DkQFdE.shtml

相关文章

vs2017下载

1.官网下载 由于网络日益发达,我相信大家可以从各种渠道得到下载地址,vs2017已与之前版本不同的是已经采用了下载器下载,下面是我使用的下载地址 Visual Studio 较旧的下载 - 2017、2015 和以前的版本 进入登录即可获得下载地址&#xff0c…

Visual Studio 2015官方社区版/专业版/专业版下载地址

Visual Studio 2015官方社区版/专业版/专业版下载地址 以下 Visual Studio 2015 社区版/专业版/专业版资源都是官方MSDN原版下载资源,统一为ISO格式镜像,使用解压软件解压之后点击主程序安装即可。 Visual Studio 2015 官方简体中文专业版ISO镜像下载地址…

vs2017支持所有版本VC

版权归属: https://blog.csdn.net/halchanchanhaloutlook.com 更多关注: https://github.com/chanhalhttps://www.zhihu.com/people/chanhal 前言 研究目标:VS2017作为目前最新的IDE,让其支持所有版本的VC编译环境 必要性&am…

VS2017社区版Community 许可证过期解决方法

之前过期可以登录自己的github账号再认证一下就OK了,但是这次就是登录不上会有脚本错误的弹窗,搜到一个方法亲测有效,也非常简单,找一个同等开发环境,把对应路径下的许可证文件夹拷贝放到自己的文件夹下即可。 感谢各…

下载安装Visual Studio 2017 Community 来编译NIM_PC_DEMO

1、下载vs2017的引导程序 官方并没有为vs2017提供离线安装包,所以我们选择在线安装。 首先我们下载vs2017的引导程序:Visual Studio 2017安装包 包含如下4个文件: vs_Community.exe: 社区版,免费。但是需要登录微软…

Visual Studio 2019社区版许可

Visual Studio 2019社区版许可 #VS2019版本介绍 Visual Studio Community:社区版 Visual Studio Professional:专业版 Visual Studio Enterprise:企业版 Community:社区版,30天试用之后必须要登录才能使用 社区版是无…

Visual Studio 2017 version 15.9 官方最新版本下载(含那个啥码)

Visual Studio 2017 version 15.9 官方最新版本下载 (含那个啥码) 简单介绍,VS2017有3个版本: ①community,社区版,含基本的开发功能,免费!免费!免费! ②professional,专业版,社区版的加强版&a…

【官方解说】Visual Studio 2017(VS 2017)各个版本有什么区别

细致区别如上图所示 企业版点满图中技能树,能够提供点对点的解决方案,充分满足正规企业的要求。 PS:技能最多,肯定也就价格最贵 专业版中提供的专业开发者工具、服务和订阅就成了最佳选择。 PS:技能多,价…

VS2017和VS2019(社区版)离线激活方式

一、VS2017激活 1.首先在能联网的电脑上安装VS2017社区版,完成注册后将路径下的OnlineLicensing文件拷贝至离线电脑的对应路径即可,路径:C:\Users\**\AppData\Local\Microsoft\VSCommon 二、VS2019激活 1.与上面一样先在电脑上注册&#x…

vs2019社区版下载教程(详细)

文章目录 1.下载VS 2019 Community引导程序2.安装VS 2019 1.下载VS 2019 Community引导程序 VS2019下载地址和安装教程(图解) 继 VS2015 和 VS2017 之后,微软于 2019 年 4 月 3 日发布了新版的集成开发环境——VS2019。 和 VS2017 相比&…

VS2017社区版离线安装

VS2017社区版离线安装 目前微软官网提供Visual Studio 2017在线安装版本,对于离线安装只提供说明。 Visual Studio 2017官网提供四个版本,这里个人学习,所以选择社区版的,下面说的也是社区版的安装步骤。 一、离线下载器下载 在…

Visual studio 2019 社区版下载和安装

Visual studio 分 企业版 ,专业版和 社区版,其中社区版是供开发人员免费使用的,且功能齐全,这里使用Visual Studio 2019 社区版来安装。 1. 下载 vs_community__2019百度网盘下载链接(这个是我从微软官网上下载的&…

VS2017下载 vs2017社区版

找到DDConfigCA.exe,管理员身份运行一下, 就可以了,亲测有效 可能现在大伙都已经开始使用VS2019进行开发了。VS2019的下载使用也都很简单。由于工作需要,今天要在笔记本上安装VS2017,结果发现,VS2017的下载变得不是那么容易了&am…

IDE/VS2017社区版安装+Qt部署+旧项目迁移

文章目录 概述安装包获取卸载旧版本安装过程首次使用Qt插件配置和使用插件配置Qt项目创建向导 VS2015项目迁移到VS2017 概述 这几天想开始使用glog这个开源日志库,发现其已经在很大程度上使用C14标准了,而VS2015并不能完全支持该标准。根据一些教程试图…

Windows10上安装VS2017社区版操作步骤

Windows10上已安装vs2013,在编译MXNet时用到了一些C14的特性,vs2013是不支持的,因此在已装有vs2013的机子上再装vs2017社区版。vs2017社区版是免费的,操作步骤如下: 1. 从 https://docs.microsoft.com/en-us/visuals…

VS2017社区版+PCL1.9.1配置

Visual Studio 2017 Community 百度搜索,登录微软官网,下载Visual Studio 2017 Community版本安装包,运行引导文件,选择需要安装的组件,一步步运行安装。 推荐安装的组件如下: 工作负载 Windows&#xff0…

Visual Studio Community 2017安装步骤(只装C++)

1、下载vs2017的引导程序 官方并没有为vs2017提供离线安装包,所以我们选择在线安装。 首先我们下载vs2017的引导程序:http://xz.cncrk.com:8080/soft/keygen/visual studio 2017.rar 包含如下4个文件: vs_Community.exe:社区版…

.Net 日志系统-NLog

NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。 NLog虽然没有log4net框架的流行程度高,但是它的跨平台性、开源持续维护性、性能等方面优于log4net,具体可以看下面这篇文章: 日志…

日志Nlog

在性能代码性能优化的时候,马丹妹给予指导时,用了日志测试时间这个技术,很是吸引人,而且她也写了系列博客,看了师姐的博客后实践,然后写一篇简单的博客。 师姐系列博客地址:http://blog.csdn.n…

NLog

一个简单好用的日志框架NLog 之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog。 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4net vs. Nlog这两篇文章。本文主要介绍一下如…