オリジナルリンク:https://www.cnblogs.com/shiqi17/p/9756880.html
https://www.jianshu.com/p/bd75ab32ae57
接続を確立するためにHTTPプロセスをクリックしてください:HTTPスリーウェイハンドシェイク、HTTPリクエストは、何が起こったかであります
HTTPは、ハイパーテキスト転送プロトコルです。送信データへのHTTPプロトコルは、とても危険な個人情報を送信するためにHTTPプロトコルを使用して、ある暗号化されていない、クリアテキストです。データ伝送のプライバシーを暗号化できることを確認するには、HTTPを介して送信されるデータのためにそのように設計NetscapeのSSL(セキュアソケットレイヤー)プロトコルはHTTPS暗号化され、これにより誕生しました。SSL現在のバージョンは3.0で、IETF(インターネット技術タスクフォース)はSSL 3.0のためにIETFに続いて、RFC 6101で定義されているがアップグレードされているので、RFC 2246で定義されているがTLS(トランスポート層セキュリティ)1.0、。実際に、私たちは今、TLSを使用するHTTPSプロトコルですが、期限のSSLに比較的早期に出現し、今もサポートされているブラウザは、SSL HTTPSはまだ同義であるが、それはTLSであるかどうかSSLが最後の世紀であります事、SSL 3.0の最後のバージョンは、TLSは、私たちのために優れた血統を続けるために、今後のSSL暗号化サービスを継承します。TLSバージョン1.2は、現在、RFC 5246で定義されている、まだ広く使用されていません
- HTTPS暗号化HTTPはSSL / TLSを使用してオーバー。これらは、TCP / IPに基づいています
HTTPS接続確立プロセス
HTTPS安全性と効率性の両方のために、対称暗号化と非対称暗号化を使用しています。送信処理では3つの主要が含まれます。
-
サーバーの公開鍵と秘密鍵、非対称暗号化が使用され
-
対称暗号化に使用されるクライアントが生成したランダムキー
HTTPS接続手順、上記の図は、8つのステップに分けることができます。
-
1、クライアントアクセスは接続をhttpsを指定します。
客户端会把安全协议版本号、客户端支持的加密算法列表、随机数C发给服务端。
-
2、服务端发送证书给客户端
服务端接收密钥算法配件后,会和自己支持的加密算法列表进行比对,如果不符合,则断开连接。否则,服务端会在该算法列表中,选择一种对称算法(如AES)、一种公钥算法(如具有特定秘钥长度的RSA)和一种MAC算法发给客户端。
服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。
在发送加密算法的同时还会把数字证书和随机数S发送给客户端
-
3、客户端验证server证书
会对server公钥进行检查,验证其合法性,如果发现发现公钥有问题,那么HTTPS传输就无法继续。
-
4、客户端组装会话秘钥
如果公钥合格,那么客户端会用服务器公钥来生成一个前主秘钥(Pre-Master Secret,PMS),并通过该前主秘钥和随机数C、S来组装成会话秘钥
-
5、客户端将前主秘钥加密发送给服务端
是通过服务端的公钥来对前主秘钥进行非对称加密,发送给服务端
-
6、服务端通过私钥解密得到前主秘钥
服务端接收到加密信息后,用私钥解密得到主秘钥。
-
7、服务端组装会话秘钥
服务端通过前主秘钥和随机数C、S来组装会话秘钥。
至此,服务端和客户端都已经知道了用于此次会话的主秘钥。
-
8、数据传输
客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。
同理,服务端收到客户端发送来的密文,用服务端密钥对其进行对称解密,得到客户端发送的数据。