数字签名和证书

作用

验证身份。提供encrypt(身份,私钥) 和 公钥,可以证明是 对应私钥的所有者。

pk = public key

sk = secret key

流程

比如Alice 想和 Bob建立可信通信。

  1. Alice 让 CA第三方机构 给自己身份和Alice_pk加密。 encrypt({Alice_id, Alice_pk}, CA_sa)

  2. Bob 用rootCA.crt 验证Alice.crt

  3. Bob 从Alice.crt中取出Alice_pk, 并用Alice_pk解密消息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
openssl req -newkey rsa:2048 -nodes -keyout rootCA.key -x509 -days 365 -out rootCA.crt

openssl req -new -nodes -keyout Alice.key -out Alice.csr

openssl x509 -req -in Alice.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out Alice.crt

echo "A very important business contract to Bob" > alice-contract
openssl dgst -sha256 -sign Alice.key -out alice-contract-sign.sha256 alice-contract

openssl verify Alice.crt

openssl verify -CAfile rootCA.crt Alice.crt

#从Alice的证书中导出Alice的公钥
openssl x509 -pubkey -noout -in Alice.crt > Alice-pub.key
#使用公钥对合同签名进行验证
openssl dgst -sha256 -verify Alice-pub.key -signature alice-contract-sign.sha256 alice-contract

所有证书和私钥

  1. 服务端证书
  2. 服务端私钥
  3. 客户端证书
  4. 客户端私钥
  5. 服务端 CA根证书
  6. 客户端 CA根证书


https://www.zhaohuabing.com/post/2020-03-19-pki/#undefined