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

这篇具有很好参考价值的文章主要介绍了搞懂 PEM、ANS、PFX、P12、p8、CER、X509 等证书相关文件格式 后缀。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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

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

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

结论

.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 ::= BEGIN

    FooQuestion ::= 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

书写中…

参考

百科文章来源地址https://www.toymoban.com/news/detail-404100.html

到了这里,关于搞懂 PEM、ANS、PFX、P12、p8、CER、X509 等证书相关文件格式 后缀的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSL证书、 der、 cer、 pem区别

    DER(Distinguished Encoding Rules)是一种二进制编码方法,本身可以表示任何类型的数据,但通常用来编码证书。证书的结构使用ASN.1(Abstract Syntax Notation One 一种数据描述语言)描述。 BER和DER都是二进制编码方法。 PEM是一种将二进制数据编码为字符串的方法。它包含header和foote

    2024年02月04日
    浏览(83)
  • X509证书基本概念

    X509证书使用数字签名将身份绑定到公钥。通常包含两种类型证书:一种是CA证书,CA证书可以颁发其他证书,最上层的CA证书也称为根证书,其他CA证书称为中间CA证书或者子CA证书。另一种是实体终端证书,这种证书不能颁发其他证书。 由上面证书结构我们可以知道X509证书包

    2024年02月01日
    浏览(37)
  • X509证书认证原理

    X.509证书使用非对称加密,包含一对秘钥,公钥和私钥,用于确保信息安全交互。 私钥由设备自身持有,私钥可以对证书加密,称为签名,任何拥有公钥的人都可以验证签名,这就对证书的拥有者身份进行了认证。 另外,使用公钥对消息加密,只能使用对应的私钥解密,这对

    2024年02月03日
    浏览(29)
  • K8S之Kuboard显示已导入【创建 X509KeyPair 失败】 tls: failed to find any PEM data in certificate input

    kuboard用着用着,突然发现,只是 已导入 状态,而不是 已就绪 的状态,且重新导入kubeconfig显示 【创建 X509KeyPair 失败】 tls: failed to find any PEM data in certificate input 的提示。 具体问题截图如下: 发现集群状态正常 发现pod状态也是运行正常的 也是OK的 既然都看上去正常,那么,

    2024年02月04日
    浏览(57)
  • 记录成功通过CSP接口获取Ukey的X509数字证书过程

    所谓CPS接口其实就是windowAPI ,其实就是wincrypt.h提供的接口,Visual Studio 直接包含以下内容即可 开始通过百度总结调用流程如下: 撸撸撸,把6个过程实现完,开始测试,走到第二步CryptGetUserKey就返回失败了,通过LastError提示找不到对象。把AT_SIGNATURE : AT_KEYEXCHANGE两个类型都试了

    2024年02月05日
    浏览(31)
  • 苹果证书p12和描述文件的创建教程

    在hbuilderx或apicloud这些uniapp框架工具打包苹果APP的时候,需要p12证书和证书profile文件来编译,目前网上很少使用windows电脑生成p12证书的教程,官方的教程都是需要使用苹果电脑来创建的。 这里,我们这篇文章来教会大家如何使用windows电脑来生成p12证书。 首先,假如你还没有

    2024年02月07日
    浏览(49)
  • 在线创建ios正式打包的p12私钥证书和证书profile文件

     ios开发的正式打包,需要p12私钥证书和证书profile文件。这两个文件卡住了很多想要了解ios开发的同学们。官方提供的方法是需要使用mac电脑,先创建csr文件,再去苹果开发者中心生成cer证书,然后再将cer证书导入mac系统,再从mac系统导出p12,整个过程不仅需要mac电脑,而且

    2024年02月10日
    浏览(40)
  • tomcat p12证书另存为nginx .crt证书和.key私钥

    Tomcat使用的.pfx或.keystore文件都是私钥及公钥证书一起的,通过pin保证安全;nginx只需要使用.pem或.crt公钥证书文件和.key私钥即可,如果原ssl证书不方便重新下载,在已有tomcat证书的情况下,需要手动导出处理。 下载openssl 1.1.1 通过命令导出文件 Over.

    2024年02月14日
    浏览(57)
  • 最新版 苹果 IOS AppStore证书申请全流程 包括p12文件

    第一步 登陆开发者网站并进入证书管理页。 辅助工具网站地址:http://www.applicationloader.net/ 第二步 添加【Certificates】证书。在这里插入图片描述 第三步 进入添加页后,根据需求选择。 第四步 选择好环境之后,这里需要选择一个证书,这个证书需要苹果电脑生成。 第五步

    2024年02月09日
    浏览(46)
  • 宝塔面板站点SSL,Let‘s Encrypt 证书申请报错:Invalid version. The only valid version for X509Req is 0.

    Linux正式版 7.9.10 CentOS 7.3.1611 x86_64(Py3.7.9) 新服务器 , 新装宝塔 , 新增站点 ,ssl选择Let’s Encrypt,点击申请证书 报错: 文件验证和DNS验证都报这个错。 试过修复面板(无效),试过回退到7.9.8版本(无效) 您好,您这个报错是因为面板依赖的不兼容导致的证书申请失败,

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包