作用
验证身份。提供encrypt(身份,私钥) 和 公钥,可以证明是 对应私钥的所有者。
pk = public key
sk = secret key
流程
比如Alice 想和 Bob建立可信通信。
Alice 让 CA第三方机构 给自己身份和Alice_pk加密。 encrypt({Alice_id, Alice_pk}, CA_sa)
Bob 用rootCA.crt 验证Alice.crt
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
openssl x509 -pubkey -noout -in Alice.crt > Alice-pub.key
openssl dgst -sha256 -verify Alice-pub.key -signature alice-contract-sign.sha256 alice-contract
|
所有证书和私钥
- 服务端证书
- 服务端私钥
- 客户端证书
- 客户端私钥
- 服务端 CA根证书
- 客户端 CA根证书
https://www.zhaohuabing.com/post/2020-03-19-pki/#undefined