一、证书标准

X.509 - 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准.

二、编码格式

PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN…"开头, "-----END…"结尾,内容是BASE64编码.
查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout
Apache和*NIX服务器偏向于使用这种编码格式.

  • 内容类型:表明本文件存放的是什么信息内容,它的形式为“——-BEGIN XXXX ——”,与结尾的“——END XXXX——”对应。
  • 头信息:表明数据是如果被处理后存放,openssl 中用的最多的是加密信息,比如加密算法以及初始化向量 iv。
  • 信息体:为 BASE64 编码的数据。可以包括所有私钥(RSA 和 DSA)、公钥(RSA 和 DSA)和 (x509) 证书。它存储用 Base64 编码的 DER 格式数据,用 ascii 报头包围,因此适合系统之间的文本模式传输。

DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout
Java和Windows服务器偏向于使用这种编码格式.

PEM编码格式样例:

使用PEM格式存储的证书:
—–BEGIN CERTIFICATE—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END CERTIFICATE—–使用PEM格式存储的私钥:
—–BEGIN RSA PRIVATE KEY—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END RSA PRIVATE KEY—–使用PEM格式存储的证书请求文件:
—–BEGIN CERTIFICATE REQUEST—–
MIICJjCCAdCgAwIBAgIBITANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCVVMx
………
1p8h5vkHVbMu1frD1UgGnPlOO/K7Ig/KrsU=
—–END CERTIFICATE REQUEST—–
-----------------------------------

三、扩展名

这是比较误导人的地方,虽然我们已经知道有PEM和DER这两种编码格式,但文件扩展名并不一定就叫"PEM"或者"DER",常见的扩展名除了PEM和DER还有以下这些,它们除了编码格式可能不同之外,内容也有差别,但大多数都能相互转换编码格式。不能总是仅通过查看文件名就知道正在使用哪种文件。 可能需要在文本编辑器中将其打开,然后自行查看。

CRT - CRT应该是certificate的三个字母,其实还是证书的意思,常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码。

CER - 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.

KEY - 通常用来存放一个公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER.
查看KEY的办法:openssl rsa -in mykey.key -text -noout
如果是DER格式的话,同理应该这样了:openssl rsa -in mykey.key -text -noout -inform der

CSR - Certificate Signing Request,即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥(当然还附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好.做过iOS APP的朋友都应该知道是怎么向苹果申请开发者证书的吧.
查看的办法:openssl req -noout -text -in my.csr (如果是DER格式的话照旧加上-inform der,这里不写了)

PFX/P12 - predecessor of PKCS#12,对*nix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个"提取密码",你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX使用的时DER编码,如何把PFX转换为PEM编码?
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
这个时候会提示你输入提取代码. for-iis.pem就是可读的文本.
生成pfx的命令类似这样:openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx -certfile CACert.crt

其中CACert.crt是CA(权威证书颁发机构)的根证书,有的话也通过-certfile参数一起带进去.这么看来,PFX其实是个证书密钥库.

JKS - 即Java Key Storage,这是Java的专利,跟OpenSSL关系不大,利用Java的一个叫"keytool"的工具,可以将PFX转为JKS,当然了,keytool也能直接生成JKS,不过在此就不多表了.

https://www.ssl.com/zh-CN/%E6%8C%87%E5%AF%BC/pem-der-crt%E5%92%8Ccer-x-509%E7%BC%96%E7%A0%81%E5%92%8C%E8%BD%AC%E6%8D%A2/

PEM, DER, CRT, and CER: X.509 Encodings and Conversions - SSL.com

der pem cer crt key pfx等概念及区别_秋天的童话的技术博客_51CTO博客

不同证书格式Der 、Cer 、Pfx 、Pem区别_么滴感情de杀手的博客-CSDN博客_pem和cer区别

那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等) - Firetik Q&A

一、什么是P12证书

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。常用的有:

PKCS#7 Cryptographic Message Syntax Standard

PKCS#10 Certification Request Standard

PKCS#12 Personal Information Exchange Syntax StandardX.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。

PKCS#7 常用的后缀是: .P7B .P7C .SPC

PKCS#12 常用的后缀有: .P12 .PFX

X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT

X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT

公钥加密技术12号标准(Public Key Cryptography Standards #12,PKCS#12)为存储和传输用户或服务器私钥、公钥和证书指定了一个可移植的格式。它是一种二进制格式,这些文件也称为PFX文件。开发人员通 常需要将PFX文件转换为某些不同的格式,如PEM或JKS,以便可以为使用SSL通信的独立Java客户端或WebLogic Server使用。本文描述如何从PFX文件导出私钥、公钥和证书并用它们创建JKS或PEM文件。

当CER安装到本地并与本机的私钥吻合之后。我们一般会给证书做个备份,这个备份就是个P12文件。这个p12文件很好用,它不仅包含CER的信息,还有私钥信息,即:P12备份文件=CER文件+私钥;所以有了这个p12就再也不用担心证书丢失了。

密钥库文件格式【Keystore

格式: PKCS12

扩展名 :.p12/.pfx

描述:【PKCS #12】个人信息交换语法标准

特点:1、包含私钥、公钥及其证书

2、密钥库和私钥用相同密码进行保护

.cer证书仅包含公钥,.p12证书可能既包含公钥也包含私钥。

ref:

详解从p12证书提取RSA公私钥和序列号(小白向)_风舞叶扬的博客-CSDN博客_p12 私钥

什么是p12证书? - 数安时代(GDCA)SSL证书官网

使用OpenSSL从PKCS#12文件导出证书和私钥-SSL.com

https://www.bbsmax.com/A/LPdoRjOg53/

windows安装OpenSSL - 华少丁 - 博客园

常见证书的编码格式和文件类型相关推荐

  1. PHP中利用header设置content-type和常见文件类型的content-type

    在PHP中可以通过header函数来发送头信息,还可以设置文件的content-type,下面整理了一些常见文件类型对于的content-type值. //定义编码 header( 'Content- ...

  2. linux文件类型缩写,常见Linux系统目录、文件类型、ls命令、alias命令

    常见Linux系统目录 /bin:存放常用的命令 /sbin:root用的命令存放 /boot:存放的是启动Linux时使用的一些核心文件 /dev:设备的意思,存放Linux的外部设备 /etc:存 ...

  3. Keil综合(01)一些常见文件类型的作用和功能说明

    相关标题: Keil中.uvmpw..uvprojx..uvproj..uvoptx..uvopt的意思是什么? Keil中.d  .o .axf .elf这些文件可以删除吗? 前言 看着一大堆文件舒 ...

  4. 常见文件类型的图标介绍

    常见文件类型的图标介绍 Java 类相关图标介绍 官网地址:http://www.jetbrains.com/idea/webhelp/symbols.html 对于各个图标,上图的 Descript ...

  5. Linux中常见文件类型及文件系统类型

    Linux中常见的七种文件类型: - 普通文件 d 目录文件 l 链接文件(指向另一个文件,类似于它的快捷方式) s 套接字文件 b 块设备文件,二进制文件 c 字符设备文件 p 命名管道文件 Lin ...

  6. php上传常见文件类型和$_FILES[file][type]

    php上传常见文件类型对应的$_FILES["file"]["type"]. xls application/vnd.ms-excel xlsx applica ...

  7. JS实现常见文件类型的下载/保存

    前端做下载功能是很常见的,类型也是多样,比如下载图片,a标签模拟下载本地静态资源,或者线上下载blob对象,或者js生成csv文件再下载等. 前面的博客笔者主要记录了使用JS-XLSX插件下载表格,今 ...

  8. 【无标题】常见文件扩展名(后缀)及其对应文件类型和功能

    Windows/linux通过文件的后缀名来区分各种不同的文件,同种类型的文件可以使用相同的文件后缀名也称文件的扩展名,本质或者说差异所在是文件根据后缀区分文件属性和存储格式,不同的文件类型就像不同的 ...

  9. linux五文件类型,Linux中常见的文件类型

    1>系统文件 文件扩展名    说明 .conf    一种配置文件.配置文件有时也使用 .cfg .lock    锁(lock)文件:用来判定程序或设备是否正在被使用 .rpm     Re ...

最新文章

  1. Redis系列(七):缓存只是读写回种这么简单吗?如果是,那么请你一定看看这篇文章!...
  2. python最新版下载教程-各种版本的Python下载安装教程
  3. SSIM与PSNR的计算方式
  4. 解决The current branch is not configured for pull No value for key branch.master.merge found in config
  5. 卷积神经网络的结构_射击训练:卷积神经网络识别解剖结构标志位点
  6. LeetCode 1170. 比较字符串最小字母出现频次
  7. Spring注解驱动开发-----容器day01
  8. 哈理工OJ 1926 函数式计算
  9. 【工具使用】apizza和postman中post请求下form-data、x-www-form-urlencoded、raw、binary的区别
  10. 给大学生的劝告,你们为何应该开始接触 Unix/Linux
  11. PIC16F877A第一个程序
  12. Excel 里筛选手机号码所属运营商
  13. Python+Vue计算机毕业设计餐饮管理系统qpa33(源码+程序+LW+部署)
  14. excel 把已有的数据做成图表
  15. linux gpg加密文件夹,如何使用 GPG 加解密文件
  16. Windows 7 Windows Server 2008 R2 简体中文版下载 (2023 年 3 月更新)
  17. IT外企那点儿事(转)
  18. 群智能优化之果蝇算法
  19. 通过泰勒公式求sinx(C语言)
  20. 如何使用Android读取护照

热门文章

  1. u-boot移植到mini2440,u-boot版本2008.10
  2. 飞桨开发者创意荟:PaddleHub一键部署,AI创意实现原来如此简单
  3. php mysql笔记,PHP学习笔记:mysql
  4. RHEL6 音频转换
  5. 微信小程序https的相关问题解决
  6. win10+VS2017+OpenCV4.5.0+OpenCV_contrib4.5.0+CUDA10.1/CUDA11.6源码编译及测试代码问题
  7. 【附源码】Python计算机毕业设计企业人事管理系统
  8. JavaScript-初学者基础入门
  9. html5网易云歌词滚动,30行代码爬取网易云歌词(示例代码)
  10. 梅西加冕!海信电视为潘帕斯雄鹰喝彩