1.什麼是ssl
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是爲網絡通訊提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡鏈接進行加密。算法
服務器認證階段:
1)客戶端向服務器發送一個開始信息「Hello」以便開始一個新的會話鏈接;
2)服務器根據客戶的信息肯定是否須要生成新的主密鑰,如須要則服務器在響應客戶的「Hello」信息時將包含生成主密鑰所需的信息;
3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密後傳給服務器;
4)服務器回覆該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。
用戶認證階段:在此以前,服務器已經經過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開密鑰,從而向服務器提供認證。
SSL協議提供的安全通道有如下三個特性:
機密性:SSL協議使用密鑰加密通訊數據。
可靠性:服務器和客戶都會被認證,客戶的認證是可選的。
完整性:SSL協議會對傳送的數據進行完整性檢查。
從SSL 協議所提供的服務及其工做流程能夠看出,SSL協議運行的基礎是商家對消費者信息保密的承諾,這就有利於商家而不利於消費者。在電子商務初級階段,因爲運做電子商務的企業大可能是信譽較高的大公司,所以這問題尚未充分暴露出來。但隨着電子商務的發展,各中小型公司也參與進來,這樣在電子支付過程當中的單一認證問題就愈來愈突出。雖然在SSL3.0中經過數字簽名和數字證書可實現瀏覽器和Web服務器雙方的身份驗證,可是SSL協議仍存在一些問題,好比,只能提供交易中客戶與服務器間的雙方認證,在涉及多方的電子交易中,SSL協議並不能協調各方間的安全傳輸和信任關係。在這種狀況下,Visa和 MasterCard兩大信用卡公組織制定了SET協議,爲網上信用卡支付提供了全球性的標準。
2.ssl連接
初始化階段。客戶端建立隨機數,發送ClientHello 將隨機數連同本身支持的協議版本、加密算法和壓縮算法發送給服務器。服務器回覆ServerHello將本身生成的隨機數連同選擇的協議版本、加密算法和壓縮算法給客戶端。
上面的cipher suite給出了算法的選擇,總有16種選擇方式。瀏覽器
在下方服務器返回的信息中,咱們能夠看到選擇的算法是哪種。安全
服務器發送ServerHello的同時可能將包含本身公鑰的證書發送給客戶端(Certificate)服務器
下面就是發送證書的包。網絡
以後驗證證書,若是收到Certificate Request則發送包含本身公鑰的證書,同時對此前全部握手消息進行散列運算,並使用加密算法進行加密發送給服務器ui