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.pem
和 ca.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-证书/