编程内功心法「公钥密码学系列」基础介绍公钥证书与私钥标准(1)

时间:2022-12-06 22:56:13

编程内功心法「公钥密码学系列」基础介绍公钥证书与私钥标准(1)

概述

在公钥密码学(也称为非对称密码术)中,加密机制依赖于两个相关的密钥,一个公钥和一个私钥。公钥用于加密消息,而只有私钥的所有者才能解密消息。

公钥证书标准-X.509和私钥的标准-PKCS8

  • X.509是定义公钥证书格式的标准。 因此,这种格式描述了其他信息中的公钥。DER是最流行的编码格式,用于在文件中存储 X.509 证书、PKCS8 私钥等数据。这是一种二进制编码,无法使用文本编辑器查看生成的内容。
  • PKCS8是用于存储私钥信息的标准语法。可以选择使用对称算法对私钥进行加密。该标准不仅可以处理 RSA 私钥,还可以处理其他算法。PKCS8 私钥通常通过 PEM 编码格式进行交换。

各类公私钥及证书文件介绍

  • X509文件扩展名(x509这种证书只有公钥,不包含私钥。)
  • DER:DER扩展用于二进制DER编码证书。这些文件也可能带有CER或CRT扩展名。正确的英语用法是“我有DER编码证书”而不是“我有DER证书”
  • PEM:用ASCLL(BASE64)编码的证书;PEM扩展名用于不同类型的X.509v3文件,这些文件包含前缀为“-BEGIN ...”行的ASCII(Base64)数据。
  • CER:存放公钥,没有私钥;
  • PFX:存放公钥和私钥(pem 后缀的证书都是base64编码;
  • der 后缀的证书都是二进制格式;
  • pfx 主要用于windows平台,浏览器可以使用,也是包含证书和私钥,获取私钥需要密码才可以)

crt cer 后缀的文件都是证书文件(编码方式不一定,有可能是.pem,也有可能是.der);.

PEM文件以及公私钥的关系

PEM是DER证书的base-64编码机制。PEM 还可以对其他类型的数据进行编码,例如公钥/私钥和证书请求。它是包含一个或多个采用 Base64 ASCII 编码的项目的文本文件,每个项目都有开始和结束两个部分

-----BEGIN RSA PRIVATE KEY-----

...Base64 encoding of the DER encoded certificate...

-----END RSA PRIVATE KEY-----

PEM 在 RFC 1422(从 1421 到 1424 的系列的一部分)中定义。它是一种容器格式,可能仅包含公共证书,也可能包括整个证书链,包括公钥、私钥和根证书。

它可以有各种扩展名(.pem,.key,.cer,.cert等)。典型的 PEM 文件包括:

key.pem 包含私有加密密钥

Cert.PEM 包含证书信息

首先,我们将研究有关公钥密码学的一些重要概念。然后,我们将学习如何解析 PEM 文件。

PEM 格式

PEM格式通常用于数字证书认证机构(Certificate Authorities,CA),扩展名为.pem, .crt, .cer, and .key。内容为Base64编码的ASCII码文件,有类似"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"的头尾标记。服务器认证证书,中级认证证书和私钥都可以储存为PEM格式(认证证书其实就是公钥)。Apache和类似的服务器使用PEM格式证书。

DER 格式

DER格式与PEM不同之处在于其使用二进制而不是Base64编码的ASCII。扩展名为.der,但也经常使用.cer用作扩展名,所有类型的认证证书和私钥都可以存储为DER格式。Java使其典型使用平台。

知识点:

  • 使用公钥操作数据属于加密
  • 使用私钥对原文的摘要操作属于签名
  • 公钥和私钥可以互相加解密
  • 不同格式的证书之间可以互相转换
  • 公钥可以对外公开,但是私钥千万不要泄露,要妥善保存

注意:在我们备份证书信息的时候,最好使用.jks或者.pfx文件进行保存,这样备份的证书文件可以被完整的导出。