之后办事器发送Certificate报文,报文中包含公开密钥证书,办事器必须包管它发送的证书与选择的算法套件一致。不过Certificate消息是可选的,因为并非所有套件都应用身份验证,也并非所怀孕份验证办法都须要证书。
4.ServerKeyExchange
ServerKeyExchange消息的目标是携带密钥交换的额外数据。消息内容对于不合的协商算法套件都邑存在差别。在某些场景中,办事器不须要发送任何内容,在这些场景中就不须要发送ServerKeyExchange消息。
5.ServerHelloDone
ServerHelloDone消息注解办事器已经将所有估计的握手消息发送完毕。在此之后,办事器会等待客户端发送消息。
6.ClientKeyExchange
ClientKeyExchange消息携带客户端为密钥交换供给的所有信息。这个消息受协商的暗码套件的影响,内容跟着不合的协商暗码套件而不合。
7.ChangeCipherSpec
ChangeCipherSpec消息注解发送端已取得用以生成连接参数的足够信息,已生成加密密钥,并且将切换到加密模式。客户端和办事器在前提成熟时都邑发送这个消息。留意:ChangeCipherSpec不属于握手消息,它是另一种协定,只有一条消息,作为它的子协定进行实现。
8.Finished
Finished消息意味着握手已经完成。消息内容将加密,以便两边可以安然地交换验证全部握手完全性所需的数据。客户端和办事器在前提成熟时都邑发送这个消息。
(5) 双向验证的握手流程
在一些对安然性请求更高的场景下,可能会出现双向验证的需求。完全的双向验证流程如下:
可以看到,同单向验证流程比拟,双向验证多了如下两条消息:CertificateRequest与CertificateVerify,其余流程大年夜致雷同。
1.Certificate Request
Certificate Request是TLS规定的一个可选功能,用于办事器认证客户端的身份。经由过程办事器请求客户端发送一个证书实现,办事器应当在ServerKeyExchange之后急速发送CertificateRequest消息。
消息构造如下:
- enum {
- rsa_sign(1), dss_sign(2), rsa_fixed_dh(3),dss_fixed_dh(4),
- rsa_ephemeral_dh_RESERVED(5),dss_ephemeral_dh_RESERVED(6),
- fortezza_dms_RESERVED(20),
- ecdsa_sign(64), rsa_fixed_ecdh(65),
- ecdsa_fixed_ecdh(66),
- (255)
- } ClientCertificateType;
- opaque DistinguishedName<1..2^16-1>;struct {
- ClientCertificateType certificate_types<1..2^8-1>;
- SignatureAndHashAlgorithm
- supported_signature_algorithms<2^16-1>;
- DistinguishedName certificate_authorities<0..2^16-1>;
- } CertificateRequest;
- struct {
- AlertLevel level;
- AlertDescription description;
- } Alert;
- AlertLevel字段:表示戒备的严重程度;
- AlertDescription:直接表示戒备代码;
可以选择发送一份本身接收的证书揭橥机构列表,这些机构都用婷采分辨名称来表示.
2.CertificateVerify
当须要做客户端认证时,客户端发送CertificateVerify消息,来证实本身确切拥有客户端证书的私钥。这条消息仅仅在客户端证书有签名才能的情况下发送。CertificateVerify必须紧跟在ClientKeyExchange之后。消息构造如下:
(6) 应用数据协定(application data protocol)
推荐阅读
涉及体系范围之广泛尚属初次:本次整合共享涵盖了大年夜中心到处所的各个部分,纳入整合共享范畴的┞服务信息体系包含由当局投资扶植、当局与社会企业结合扶植、当局向社会购大班事或须要当局资金运行保护的,用于支>>>详细阅读
本文标题:HTTPS 原理浅析及其在 Android 中的使用
地址:http://www.17bianji.com/lsqh/35390.html
1/2 1