CA认证流程🚔
关键词⭐️
- CSR
CSR是Certificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。 - 自签证书
利用 openssl 模拟CA进行的证书认证过程
申请证书步骤🙈
1.生成CA证书🐼
- 1.1 CA生成秘钥
openssl genrsa -out ./cakey.pem 2048 - 1.2 生成自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 3650
2.生成server端的 csr(请求证书)🐌
- 2.1 生成服务端私钥
openssl genrsa -out server.key 1024 - 2.2 生成
CSR
证书()
openssl req -new -key server.key -out server.csr
3. 颁发证书🦍
- 3.1 证书颁发
openssl ca -in server.csr -out server.crt -days 1000
验证证书步骤🙈
-
1.客户端收到证书后进行证书有效性的验证,这其中涉及
证书链
, 上级证书会签名到下级证书代表由上级证书进行颁发的合法证书,验证过程即层层递归最终找到CA根证书
然后用根证书的公钥去校验下级证书的签名是否合法,最终验证客户端收到的证书签名是否合法,如下图:
-
2.客户端对收到服务端传来的证书利用本地的证书公钥进行解密
-
3.解密后拿到
证书明文
和数字签名
-
4.CA公钥解密
数字签名
,拿到数字摘要
-
5.hash证书明文本地生成
数字摘要
-
6.校验数字摘要是否相等, 若相等则代表证书明文没有做过篡改
-
7.最终拿到服务端的
公钥
, 利用公钥
交换对称密钥进行之后的加密通信 -
2-6可以描述为下图
总结🐣
- 1.签名证书的流程
- 服务端生成 csr 请求证书交给CA,由CA进行证书签名
- 将CSR提交给CA,CA一般有2种认证方式:
1、域名认证,一般通过对管理员邮箱认证的方式,这种方式认证速度快,但是签发的证书中没有企业的名称;
2、企业文档认证,需要提供企业的营业执照
- 2.证书之于服务端相当于 身份证之于个人是一种身份认证
- 3.自己总结的交互签名方式
通信加密签名的几种场景
特殊通信(少数: 密钥串及规则的交互是私下的,不走公共通道的)- 加盐hash, 服务端发送对称加密的key给到客户端, 并私下约定对报文进行签名的方式, 如:
双方约定 报文按规则拼接 + salt(时间戳(毫秒级)+固定字符串(“O”)+密钥串) 之后hash生成唯一散列值, 这种签名方式针对特殊客户的少量通信, 安全性在不暴露salt的基础上很安全 - 对称加密
- 加盐hash, 服务端发送对称加密的key给到客户端, 并私下约定对报文进行签名的方式, 如: