任何在計算機網絡或者 Internet 中傳輸的消息都可能被攔截,其中不乏一些比較敏感的內容,如信用卡號或者其它一些私人數據。為了更好的在企業環境和電子商務中使用 Internet,應用軟件必須使用加 密、驗證和安全的通信協議來保護用戶的數據安全。安全超文本傳輸協議 (secure Hypertext Transfer PRotocol, HTTPS) 是建立于安全套接層 (Secure Sockets Layer, SSL) 上的 HTTP,它已經成功的應用于電子商務。
java 安全套接擴展 (Java Secure Socket Extension, JSSE) 使 Internet 安全通信成為現實。它是 100% 純 Java 實現的 SSL 框架。這個包讓 Java 開發人員能夠開發安全的網絡應用;為基于 TCP/ip 的何應用協議,如 HTTP、FTP、Telnet、或者 NTTP,在客戶端和服務器端之間建立安全的數據通道。
JSSE 已經整合在 Java 2 SDK 標準版本 1.4 (J2SE 1.4) 中了,這真是一個好消息。這意味著只要你安裝了 J2SE 1.4,不需要再下載其它的包,就可以創建基于 SSL 的 Internet 應用程序了。這個系列的文章共有 2 篇,它是一本關于為今后的市場開發安全 Interent 應用的手冊。這篇文章主要是講的服務器端,而下一篇是講客戶端的。這篇文章從概覽 SSL 開始,然后告訴你如何進行下列內容:
使用 JSSE 的 API
在你的 C/S 應用程序中結合 JSSE
開發一個簡單的 HTTP 服務器
讓 HTTP 服務器能夠處理 HTTPS 請求
使用包含在 J2SE 中的 keytool 產生自己的證書
開發、配置和運行一個安全的 HTTP 服務器
概覽 SSL
SSL 協議是 Netscape 在 1994 年開發出來的,以答應服務端 (典型的如瀏覽器) 和 HTTP 服務器之間能通過安全的連接來通信。它加密、來源驗證、數據完整性等支持,以保護在不安全的公眾網絡上交換的數據。SSL 有這樣一些版本:SSL 2.0 有安全隱患,現在已經幾本上不用了;SSL 3.0 應用則比較廣泛;最后,由 SSL 3.0 改進而來的傳輸層加密 (Transport Layer Security, TLS) 已經成為 Internet 標準并應用于幾乎所有新近的軟件中。
在數據傳播之前,加密技術通過將數據轉變成看起來毫無意義的內容來保護數據不被非法使用。其過程是:數據在一端 (客戶端或者服務器端) 被加密,傳輸,再在另一端解密。
來源認證是驗證數據發送者身份的一種辦法。瀏覽器或者其它客戶端第一次嘗試與網頁服務器進行安全連接之上的通信時,服務器會將一套信任信息以證書的形式呈現出來。
證書由權威認證機構 (CA)——值得信賴的授權者發行和驗證。一個證書描述一個人的公鑰。一個簽名的文檔會作出如下保證:我證實文檔中的這個公鑰屬于在該文檔中命名的實體。簽名(權威認證機構)。目前知名的權威認證機構有 Verisign,Entrust 和 Thawte 等。注重現在使用的 SSL/TLS 證書是 X.509 證書。
數據完整性就是要確保數據在傳輸過程中沒有被改變。
SSL 和 TCP/IP 協議的層次
SSL 是名符其實的安全套接層。它的連接動作和 TCP 的連接類似,因此,你可以想象 SSL 連接就是安全的 TCP 連接,因為在協議層次圖中 SSL 的位置正好在 TCP 之上而在應用層之下,如圖 1 所示。注重到這點很重要。但是,SSL 不支持某些 TCP 的特性,比如頻帶外數據。
圖 1: SSL 和 TCP/IP 協議的的層次
可交流的加密技術
SSL 的特性之一是為電子商務的事務提供可交流的加密技術和驗證算法提供標準的方法。SSL 的開發者熟悉到不是所有人都會使用同一個客戶端軟件,從而不是所有客戶端都會包括任何具體的加密算法。對于服務器也是同樣。位于連接兩端的的客戶端和服務器在初始化“握手”的時候需要交流加密和解密算法(密碼組)。假如它們沒有足夠的公用算法,連接嘗試將會失敗。
注重當 SSL 答應客戶端和服務器端相互驗證的時候,典型的作法是只有服務器端在 SSL 層上進行驗證??蛻舳送ǔT趹脤?,通過 SSL 保護通道傳送的密碼來進行驗證。這個模式常用于銀行、股份交易和其它的安全網絡應用中。
SSL 完全“握手”協議如圖 2 所示。它展示了在 SSL “握手”過程中的信息交換順序。
圖 2:SSL “握手”協議
新聞熱點
疑難解答