IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 搞懂 PEM ANS PFX P12 p8 CER X509 等证书相关文件格式 后缀 -> 正文阅读

[网络协议]搞懂 PEM ANS PFX P12 p8 CER X509 等证书相关文件格式 后缀

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

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

在这里插入图片描述

ASN.1

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

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

Foo协议描述例子:

FooProtocol DEFINITIONS ::= BEGIN

    FooQuestion ::= SEQUENCE {
        trackingNumber INTEGER,
        question       IA5String
    }

    FooAnswer ::= SEQUENCE {
        questionNumber INTEGER,
        answer         BOOLEAN
    }

END

ANS.1可以编码成二进制数据, 有多种编码规则 BERBasic Encoding Rules) 、DERDistinguished 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 (可以存放不同内容类型PEM编码数据)、.cer(PEM编码的证书数据,有时候也不用PEM编码,直接就是二进制数据)、.crt(编码的证书数据)、文件后缀中。但是.pem的文件可以同时 编码不同的内容类型到同一个文件。如下

a.pem

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

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

如果碰见这种文件后缀.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格式文件可以存储证书(X509证书),私钥、废弃证书列表(CRL)、和一些可以自定义的信息(由实现者决定)。此文件可以被加密或者签名的,要想读取此文件可能需要解密。由此可见大家可以把此文件想象成一个存储数据的数据库,存储证书、私钥、CRL、自定义信息的数据,有特定的结构格式。

? 还有一点PKCS #12格式文件的前身是微软的PFX格式文件

应用

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

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

.p12

同上

.p8

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

存储的私钥可以被加密,支持多密码加密。存储的内容是PEM 编码的格式。

-----BEGIN PRIVATE KEY-----
MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAq7BFUpkGp3+LQmlQ
.....

PkaxlEECIQCNymjsoI7GldtujVnr1qT+3yedLfHK
srDVjIT3LsvTqw==
-----END PRIVATE KEY-----

EC代表数据加密了

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

.cer

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

.crt

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

X.509

书写中…

参考

百科

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:56:03  更:2022-03-08 22:56:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 13:23:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码