【學習筆記】【Java網絡編程】第十章 安全Socket


SSL是一種安全協議,允許Web瀏覽器和其它TCP客戶端基於各種級別的機密性和認證HTTP和其它TCP服務器對話。

保護通信

  • JSSE掩蓋了如何協商算法、交換密鑰、認證通信雙方和加密數據的底層細節。

創建安全客戶端Socket

SocketFactory factory = SSLSocketFactory.getDefault();
Socket socket = factory.createSocket("login.ibiblio.org", 7000);
  • 生成和交換密鑰時,都有相當可觀的CPU和網絡開銷。不要所有內容都通過HTTPS提供,只有確實需要保密且不太關心延遲的內容纔會通過HTTPS傳輸。

選擇密碼組

  • SSLSocketFactory.getSupportedCipherSuites():可以指出給定Socket上可用的算法組合。
  • SSLSocketFactory.getEnabledCipherSuites():指出Socket允許使用哪些密碼組。
  • SSLSocketFactory.setEnabledCipherSuites(String[] suites):修改客戶端使用的密碼組。
  • TSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256對於所有已知攻擊都相當安全。
  • 如果連接另一端不支持使用的加密協議,試圖讀取Socket或寫入Socket時會拋出異常。

事件處理器

public interface HandshakeCompletedListener extends java.util.EventListener
public void handshakeCompleted(HandshakeCompletedEvent event)

會話管理

  • 相同會話中的不同Socket使用一組相同的公開密鑰和私有密鑰。
  • 會話由SSLSession接口的實例表示。

客戶端模式

創建安全服務器Socket

  • 創建一個安全服務器Socket:
    1. 使用keytool生成公開密鑰和證書。
    2. 花錢請可信任的第三方認證你的證書。
    3. 爲你使用的算法創建一個SSLContext。
    4. 爲你要使用的證書源創建一個TrustManagerFactory。
    5. 爲你要使用的密鑰類型創建一個KeyManagerFactory。
    6. 爲密鑰和證書數據庫創建一個KeyStore對象。
    7. 用密鑰和證書填充KeyStore對象。
    8. 用KeyStore及其口令短語初始化KeyManagerFactory。
    9. 用KeyManagerFactory中的密鑰管理器、TrustManagerFactory中的信任管理器和一個隨機源來初始化上下文。

配置SSLServerSocket

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章