openssl-以及-CA-证书

有几个概念:

  • CA, Certificate Authority, 根证书机构
  • Root Certificate, 根证书, ca.pem, 包含公钥等信息
  • ca.key, 根证书私钥文件, 可以用来签发证书
  • Certificate, 其他证书的 ca.pem 文件

CA 和 根证书

CA (Certificate Authority,证书颁发机构), 可以认为是一个组织 (机构), 其可以签发证书.

CA 手上会有:

  • ca.pem
  • ca.key

ca.pem 是 CA 自己的证书, 其中包含 CA 的公钥.

ca.key, 包含 CA 的私钥.

首先确认私钥和公钥的作用.

私钥和公钥

在非对称加密中, 私钥有两个作用:

  • 数字签名
  • 解密

公钥也有两个作用:

  • 数字签名验证
  • 加密

数字签名和验证

数字签名生成的过程如下:

数据准备:首先,需要准备要签名的数据。这可以是任何形式的数据,例如文本、文件或消息。
哈希函数:使用哈希函数对准备好的数据进行哈希运算。哈希函数将数据转换为固定长度的哈希值,通常是一个较短的字符串。
私钥签名:使用私钥对哈希值进行加密操作。具体来说,使用私钥对哈希值进行数字签名算法(如RSA、DSA等)的运算,生成签名值。
生成数字签名:将生成的签名值与原始数据一起组合,形成数字签名。数字签名是一个与数据相关联的加密值。
发布签名:将数字签名与原始数据一起发布给其他人。其他人可以使用相应的公钥来验证签名的真实性。

验证数字签名的过程与生成数字签名的过程相反:

数据准备:首先,需要准备要验证的数据和相应的数字签名。
公钥解密:使用签名的发布者的公钥对数字签名进行解密操作,得到签名值。
哈希函数:对准备好的数据进行哈希运算,得到哈希值。
验证签名:将解密得到的签名值与计算得到的哈希值进行比较。如果两者匹配,则说明签名是有效的,数据的完整性和来源可信。

ca.pemca.key 的工作

ca.pem 是其他 client 可以获取的, 部分系统会预装一些 ca.pem 根证书. (用于数字签名验证)

CA 用 ca.key 为其他机构签发证书 (进行数字签名).

其他机构在与 client 通信时, 会发送自己的证书, 而这个证书则会用 client 本机的 ca.pem 进行验证, 若验证通过, 则可以进行通信, 反之.

自签证书

即自己作为一个 CA. 此时 client 应该包含自己生成的 ca.pem 文件, 然后用 ca.key 为自己的一个 server 签名一个证书.

此时就可以让 server 和 client 通信.


openssl-以及-CA-证书
http://example.com/2023/10/14/openssl-以及-CA-证书/
作者
Jie
发布于
2023年10月14日
许可协议