HTTPS通信公私钥生成规则与public key传输问题咨询
HTTPS两个核心密钥问题解答
1. 服务端是否会同时生成私钥与公钥?
非对称加密的私钥、公钥本身是算法成对生成的配对密钥,二者在数学上互相关联。
服务端在部署HTTPS服务前,就会根据选用的非对称加密算法(常见如RSA、ECDSA)生成配套密钥对:
- 私钥仅存储在服务端本地,全程不会以任何形式对外传输,是服务端解密客户端发来的加密内容、签名握手消息的核心凭证
- 公钥会和站点域名、主体信息等内容绑定,提交给CA机构签名后嵌入数字证书中
只有在密钥轮换、证书到期更换的场景下,服务端才会重新生成新的密钥对,不会在每次用户发起连接时临时生成。
2. 公钥的传输时机与方向
常规HTTPS(即单向认证TLS,是目前公开网页访问的默认模式)流程中,公钥的传输方向是服务端到客户端,不存在客户端向服务端发送服务端公钥的逻辑,发送时机在TLS握手的证书发送阶段,完整时序如下:
- 客户端(浏览器)向服务端发起连接请求,发送
Client Hello报文,携带自身支持的TLS版本、加密套件列表、客户端随机数等基础信息 - 服务端返回
Server Hello报文,确认双方协商使用的TLS版本、加密套件,生成服务端随机数返回给客户端 - 紧接
Server Hello之后,服务端发送Certificate报文,将绑定了自身公钥的数字证书发送给客户端 - 客户端收到证书后先完成合法性校验(确认证书由可信CA签发、域名匹配、未过期未吊销),再从证书中提取服务端公钥,用于后续加密生成的预主密钥,发给服务端完成握手密钥协商
补充说明:如果站点开启了双向TLS认证(mTLS,常见于企业内部系统、金融级强身份校验场景),客户端会在收到服务端的证书请求报文后,发送自身的客户端证书(内含客户端自己生成的密钥对对应的公钥)给服务端做身份校验。这部分公钥属于客户端自有的密钥对,和服务端的公钥是完全独立的两套凭证,不属于反向传输服务端公钥的情况。
内容的提问来源于stack exchange,提问作者Dilibe
相关产品推荐
相关产品推荐

