SSL:(Server socket layer) 是一種保證網絡兩個節點進行安全通信的協議。
IETF對SSL進行了標準化,制定了RFC2246規範,並將其稱爲TLS。從技術上講,SSL3.0和TLS1.0差別非常小。
SSL和TLS建立在TCP/IP協議基礎上。建立在SSL上的HTTP協議稱爲HTTPS,默認端口443。
SSL使用加密技術實現會話雙方信息的安全傳遞,加密技術的基本原理:
數據從一端發送到另一端,發送者先對數據加密,然後再把它發給接收者。接收者收到後,必需先解密才獲得真正的數據。
除此外,SSL還採用身份認機制,確保通信雙方都能驗證對方真實身份。
獲取證書有兩種方式:
1.從權威機制購買證書。
安全證書由國際權威的證書機構(CA),如VeriSign和Thawte頒發,它們保證了證書的可信性。
一個安全證書只對一個IP有效,多個IP必需購買多個證書。
2.創建自我簽名的證書。
如果通信雙方只關心數據在網絡上的可以安全傳輸,並不需要對方進行身份驗證,這種情況下,可以創建自多簽名證書。
這證書達不到身份認證的目地,但可以用於加密通信。
用java的自我簽名工具簽名:
keytool -genkey -alias <別名> -keyalg <加密算法> -keystore <生成的證書保存路徑>
參數說明:
genkey: 生成一對非對稱密鑰
alias: 密鑰對的別名,這個別名對外公開
keyalg: 加密算法。常見的RSA(加密長度2048位)、RC4(128位)、DH(1024位)
keystore: 安全證書的保存路徑
例:
keytool -genkey -alias slkey -keyalg RSA -keystore e:\sk.keys