任何在計(jì)算機(jī)網(wǎng)絡(luò)或者 Internet 中傳輸?shù)南⒍伎赡鼙粩r截,其中不乏一些比較敏感的內(nèi)容,如信用卡號或者其它一些私人數(shù)據(jù)。為了更好的在企業(yè)環(huán)境和電子商務(wù)中使用 Internet,應(yīng)用軟件必須使用加 密、驗(yàn)證和安全的通信協(xié)議來保護(hù)用戶的數(shù)據(jù)安全。安全超文本傳輸協(xié)議 (secure Hypertext Transfer PRotocol, HTTPS) 是建立于安全套接層 (Secure Sockets Layer, SSL) 上的 HTTP,它已經(jīng)成功的應(yīng)用于電子商務(wù)。
java 安全套接擴(kuò)展 (Java Secure Socket Extension, JSSE) 使 Internet 安全通信成為現(xiàn)實(shí)。它是 100% 純 Java 實(shí)現(xiàn)的 SSL 框架。這個(gè)包讓 Java 開發(fā)人員能夠開發(fā)安全的網(wǎng)絡(luò)應(yīng)用;為基于 TCP/ip 的何應(yīng)用協(xié)議,如 HTTP、FTP、Telnet、或者 NTTP,在客戶端和服務(wù)器端之間建立安全的數(shù)據(jù)通道。
JSSE 已經(jīng)整合在 Java 2 SDK 標(biāo)準(zhǔn)版本 1.4 (J2SE 1.4) 中了,這真是一個(gè)好消息。這意味著只要你安裝了 J2SE 1.4,不需要再下載其它的包,就可以創(chuàng)建基于 SSL 的 Internet 應(yīng)用程序了。這個(gè)系列的文章共有 2 篇,它是一本關(guān)于為今后的市場開發(fā)安全 Interent 應(yīng)用的手冊。這篇文章主要是講的服務(wù)器端,而下一篇是講客戶端的。這篇文章從概覽 SSL 開始,然后告訴你如何進(jìn)行下列內(nèi)容:
使用 JSSE 的 API
在你的 C/S 應(yīng)用程序中結(jié)合 JSSE
開發(fā)一個(gè)簡單的 HTTP 服務(wù)器
讓 HTTP 服務(wù)器能夠處理 HTTPS 請求
使用包含在 J2SE 中的 keytool 產(chǎn)生自己的證書
開發(fā)、配置和運(yùn)行一個(gè)安全的 HTTP 服務(wù)器
概覽 SSL
SSL 協(xié)議是 Netscape 在 1994 年開發(fā)出來的,以答應(yīng)服務(wù)端 (典型的如瀏覽器) 和 HTTP 服務(wù)器之間能通過安全的連接來通信。它加密、來源驗(yàn)證、數(shù)據(jù)完整性等支持,以保護(hù)在不安全的公眾網(wǎng)絡(luò)上交換的數(shù)據(jù)。SSL 有這樣一些版本:SSL 2.0 有安全隱患,現(xiàn)在已經(jīng)幾本上不用了;SSL 3.0 應(yīng)用則比較廣泛;最后,由 SSL 3.0 改進(jìn)而來的傳輸層加密 (Transport Layer Security, TLS) 已經(jīng)成為 Internet 標(biāo)準(zhǔn)并應(yīng)用于幾乎所有新近的軟件中。
在數(shù)據(jù)傳播之前,加密技術(shù)通過將數(shù)據(jù)轉(zhuǎn)變成看起來毫無意義的內(nèi)容來保護(hù)數(shù)據(jù)不被非法使用。其過程是:數(shù)據(jù)在一端 (客戶端或者服務(wù)器端) 被加密,傳輸,再在另一端解密。
來源認(rèn)證是驗(yàn)證數(shù)據(jù)發(fā)送者身份的一種辦法。瀏覽器或者其它客戶端第一次嘗試與網(wǎng)頁服務(wù)器進(jìn)行安全連接之上的通信時(shí),服務(wù)器會將一套信任信息以證書的形式呈現(xiàn)出來。
證書由權(quán)威認(rèn)證機(jī)構(gòu) (CA)——值得信賴的授權(quán)者發(fā)行和驗(yàn)證。一個(gè)證書描述一個(gè)人的公鑰。一個(gè)簽名的文檔會作出如下保證:我證實(shí)文檔中的這個(gè)公鑰屬于在該文檔中命名的實(shí)體。簽名(權(quán)威認(rèn)證機(jī)構(gòu))。目前知名的權(quán)威認(rèn)證機(jī)構(gòu)有 Verisign,Entrust 和 Thawte 等。注重現(xiàn)在使用的 SSL/TLS 證書是 X.509 證書。
數(shù)據(jù)完整性就是要確保數(shù)據(jù)在傳輸過程中沒有被改變。
SSL 和 TCP/IP 協(xié)議的層次
SSL 是名符其實(shí)的安全套接層。它的連接動作和 TCP 的連接類似,因此,你可以想象 SSL 連接就是安全的 TCP 連接,因?yàn)樵趨f(xié)議層次圖中 SSL 的位置正好在 TCP 之上而在應(yīng)用層之下,如圖 1 所示。注重到這點(diǎn)很重要。但是,SSL 不支持某些 TCP 的特性,比如頻帶外數(shù)據(jù)。

圖 1: SSL 和 TCP/IP 協(xié)議的的層次
可交流的加密技術(shù)
SSL 的特性之一是為電子商務(wù)的事務(wù)提供可交流的加密技術(shù)和驗(yàn)證算法提供標(biāo)準(zhǔn)的方法。SSL 的開發(fā)者熟悉到不是所有人都會使用同一個(gè)客戶端軟件,從而不是所有客戶端都會包括任何具體的加密算法。對于服務(wù)器也是同樣。位于連接兩端的的客戶端和服務(wù)器在初始化“握手”的時(shí)候需要交流加密和解密算法(密碼組)。假如它們沒有足夠的公用算法,連接嘗試將會失敗。
注重當(dāng) SSL 答應(yīng)客戶端和服務(wù)器端相互驗(yàn)證的時(shí)候,典型的作法是只有服務(wù)器端在 SSL 層上進(jìn)行驗(yàn)證。客戶端通常在應(yīng)用層,通過 SSL 保護(hù)通道傳送的密碼來進(jìn)行驗(yàn)證。這個(gè)模式常用于銀行、股份交易和其它的安全網(wǎng)絡(luò)應(yīng)用中。
SSL 完全“握手”協(xié)議如圖 2 所示。它展示了在 SSL “握手”過程中的信息交換順序。

圖 2:SSL “握手”協(xié)議
新聞熱點(diǎn)
疑難解答
圖片精選