SSL協議提供的服務主要包括:
1)對用戶和服務器進行身份驗證,以確保數據發送到正確的客戶端和服務器。
對用戶和服務器的合法性進行身份驗證,以便他們可以確保數據將被發送到正確的客戶端和服務器。客戶端和服務器都有自己的標識號,這些標識號由公鑰編號。為了驗證用戶是否合法,SSL協議要求握手交換數據時進行數字認證,以保證用戶的合法性。
2)加密數據,防止數據中途被盜。
SSL協議中使用的加密技術包括對稱密鑰技術和公鑰技術。在客戶端和服務器端進行數據交換之前,先交換SSL初始握手信息,並使用各種加密技術對SSL握手信息進行加密,保證其機密性和數據完整性,並使用數字證書進行認證,防止非法用戶破譯。
3)保持數據的完整性,保證數據在傳輸過程中不會被更改。
SSL協議利用哈希函數和秘密共享方法提供信息完整性服務,在客戶端和服務器之間建立安全通道,使所有經過SSL協議處理的服務在傳輸過程中能夠完整準確地到達目的地。
SSL架構:
SSL協議位於TCP/IP協議模型的網絡層和應用層之間。TCP用於提供可靠的端到端安全服務,這意味著客戶端/服務器應用程序之間的通信不會被攻擊捕獲,並且服務器始終進行身份驗證,客戶端可以選擇性地進行身份驗證。SSL架構如圖1所示。
SSL協議位於TCP/IP協議模型的網絡層和應用層之間。TCP用於提供可靠的端到端安全服務,這意味著客戶端/服務器應用程序之間的通信不會被攻擊捕獲,並且服務器始終進行身份驗證,客戶端可以選擇性地進行身份驗證。
在SSL通信中,首先使用非對稱加密來交換信息,使服務器獲得瀏覽器提供的對稱加密密鑰,然後使用該密鑰對信息進行加密和解密。為了確保消息在傳輸過程中沒有被篡改,可以對哈希編碼進行加密,以保證信息的完整性。SSL通信過程,如圖2所示。
壹般來說,當客戶是機密信息的發送者時,客戶不需要數字證書來驗證其身份的真實性,例如電子銀行的應用。客戶需要將他的賬號和密碼發送給銀行,所以銀行的服務器需要安裝壹個數字證書來表明他的身份的有效性。在某些應用程序中,服務器還需要驗證客戶端的身份。此時,客戶端還需要安裝數字證書,以保證服務器在通信過程中能夠識別客戶端的身份。驗證過程類似於服務器的驗證過程。
SslsSocket通信是套接字通信的擴展。在Socket通信的基礎上,增加了壹層安全防護,提供了更高的安全性,包括身份認證、數據加密和完整性驗證。
Sslssocket雙向認證實現技術:JSSE (Java安全套接字擴展),實現SSL和TSL(傳輸層安全)協議。JSSE包括數據加密、服務器認證、消息完整性和客戶端認證。通過使用JSSE,數據可以通過TCP/IP協議在客戶機和服務器之間安全地傳輸。要實現消息認證:
密鑰和授權證書的生成方法:
使用Java附帶的keytool命令,並在命令行上生成它。
1.生成服務器端私鑰kserver.keystore文件。
keytool-genkey-alias server key-validity 1-keystore kserver . keystore
2.根據私鑰,導出服務器端安全證書。
keytool-export-alias server key-keystore kserver . keystore-file server . CRT
3.將服務器端證書導入客戶端的信任密鑰庫。
keytool-import-alias server key-file server . CRT-keystore t client . keystore
4.生成客戶機私鑰kclient.keystore文件。
keytool-genkey-alias client key-validity 1-keystore kclient . keystore
5.根據私鑰,導出客戶端安全證書。
keytool-export-alias clientkey-keystore kclient . keystore-file client . CRT
6.將客戶端證書導入到服務器端的信任密鑰庫中。
keytool-import-alias client key-file client . CRT-keystore tserver . keystore
生成的文件分為兩組,服務器端存儲:kserver . keystore server . keystore客戶端存儲:k client . keystore client . kyestore。
客戶端使用kclient.keystore中的私鑰加密數據並發送給服務器,服務器使用tserver.keystore中的client.crt證書解密數據。如果解密成功,則證明該消息來自受信任的客戶端,並進行邏輯處理。服務器使用kserver.keystore中的私鑰加密數據並發送給客戶端,客戶端使用tclient.keystore中的server.crt證書解密數據。如果解密成功,則證明消息來自可信服務器,並進行邏輯處理。如果解密失敗,則證明消息的來源是錯誤的。沒有邏輯處理。
SSL套接字雙向認證的安全性;
(1)可以確保數據傳輸到正確的服務器和客戶端。
(2)可以防止消息在傳輸過程中被竊取。
(3)防止消息在傳輸過程中被修改。
系統運行期間可能會出現以下情況:
(1)服務器和客戶端都持有正確的密鑰和安全證書,此時服務器和客戶端可以正常通信。
(2)客戶端的密鑰和安全證書不正確,服務器和客戶端無法正常通信。
(3)客戶端沒有密鑰和安全證書,服務器和客戶端無法正常通信。