天天看點

10. PKI - HTTPS單向認證和雙向認證1. 單項認證2. 雙向認證參考

10. PKI - HTTPS單向認證和雙向認證

  • 1. 單項認證
  • 2. 雙向認證
  • 參考

所謂的HTTPS單項認證和雙向認證,其實是SSL/TLS的單項認證和雙向認證。在8. PKI - SSL/TLS Handshake Protocol(TLS握手詳解)已經對TLS協定有了一個比較詳細的介紹。那單向認證和雙向認證是怎麼回事呢?

其實可以簡單的了解為:

  • 單項認證是用戶端要對伺服器進行認證;
  • 雙向認證是用戶端要對伺服器進行認證,同時伺服器也要對用戶端進行認證。

單項認證多用于B2C模式;雙向認證多用于B2B模式。

下面從TLS封包角度對單項認證做一下分析:

1. 單項認證

如下圖單項認證的封包中,虛線部分是省略掉的可選封包。其大緻過程如下:

1)用戶端發起ClientHello;

2)服務端回應SeverHello,該過程中伺服器會将自己的證書發送給用戶端;

3)用戶端回應:用戶端收到後,檢查證書是否合法,主要檢查下面4點:

  • 檢查證書是否過期
  • 檢查證書是否已經被吊銷
  • 證書是否可信
  • 檢查收到的證書中的域名與請求的域名是否一緻

4)伺服器的最後回應

10. PKI - HTTPS單向認證和雙向認證1. 單項認證2. 雙向認證參考

2. 雙向認證

在雙向認證的封包中,多了一下三個封包:

  • Client Certificate Request
  • Client Certificate
  • Certificate Verify

1)Client Certificate Request:伺服器在SeverHello消息中,會要求用戶端提供“用戶端的證書”

2)Client Certificate:用戶端發送證書給伺服器

3)Certificate Verify:用戶端将之前所有收到的和發送的消息組合起來,并用hash算法得到一個hash值,然後用用戶端的私鑰對這個hash進行簽名,并發送給伺服器

伺服器收到用戶端證書後:

a)驗證用戶端證書的合法性,如果驗證不通過則會拒絕連接配接;

b)用用戶端證書中的公鑰去驗證收到的Certificate Verify消息中的簽名。這一步的作用是為了确認證書确實是用戶端的。

10. PKI - HTTPS單向認證和雙向認證1. 單項認證2. 雙向認證參考

參考

HTTPS實戰之單向驗證和雙向驗證

繼續閱讀