999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java安全套接字擴展的研究與應用

2008-12-31 00:00:00
電腦知識與技術 2008年8期

摘要:從網絡數據傳輸的安全性問題出發,研究了SSL運行機理和JSSE的框架及API,設計了一個應用JSSE建立安全連接的原型,并以實例驗證其有效性。

關鍵詞:安全套接字層;Java安全套接字擴展;工廠模式

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)08-10ppp-0c

1 SSL

隨著計算機網絡的日益普及,如何保證數據在網絡上安全傳輸已成為一項基礎性技術。安全套接字層(Secure Sockets Layer, SSL)[1]由Netscape公司開發,是目前最具代表性,應用最為廣泛的網絡安全傳輸協議。它位于TCP/IP協議層與各種應用層協議之間,如圖1所示:

因此,SSL可以廣泛地應用在各種形式的網絡傳輸中。例如使用瀏覽器訪問安全站點所用的HTTPS協議就是SSL對HTTP協議的封裝。SSL分為兩層協議,底層是SSL記錄協議,提供基本的安全服務;高層是握手協議、修改密文協議和告警協議,用于處理應用程序憑證的交換和驗證[2]。SSL基于數字證書技術建立安全傳輸信道,其過程大致如下:(1)客戶端與服務器交換SSL版本號等初始信息;(2)客戶端與服務器相互驗證對方證書(客戶端驗證為可選);(3)利用對方證書共同產生會話密鑰;(4)利用會話密鑰對后續的數據進行加、解密。

2 JSSE

JSSE(Java Secure Socket Extension,Java安全套接字擴展)是SUN公司所開發的對SSL的參考實現。從J2SE v1.4版本開始,JSSE成為JDK的標準組件,并納入了J2EE規范[3]。在JSSE中包含了數據加密,服務器驗證,消息完整性和客戶端驗證等技術,可以在客戶機和服務器之間建立起一條SSL安全數據傳輸鏈路。為了方便應用程序開發者的使用,JSSE提供了一個可擴充的框架和一組Java API,主要包括:

(1)SSLSocketFactory和SSLServerSocketFactory:分別用來產生客戶端和服務端的SSL套接字的工廠類。

(2)SSLSocket和SSLServerSocket:分別是客戶端和服務端的SSL套接字,它們是java.net.Socket的子類。一個Socket代表TCP雙向通信連接的一個端點,SSLSocket和SSLServerSocket總是成對出現。

(3)SSLSession:代表客戶端與服務端的一次會話。它保存了會話期間的會話密鑰,并提供相應的加、解密組件。

(4)HandShakeCompletedListener:網絡監聽器,負責監聽客戶端與服務端之間的“握手”事件(HandShakeCompletedEvent對象)。

(5)X509Certificate:客戶端與服務端默認采用公鑰體系的數字證書,即:X.509數字證書。X509Certificate對象提供了對X.509數字證書的訪問機制。

(6)KeyManager和KeyManagerFactory:創建、存儲和管理證書的工廠類及證書管理器對象。在建立SSL安全連接時,客戶端和服務端需分別產生自身的證書并發送到對方驗證。

(7)TrustManager和TrustManagerFactory:管理、驗證通信對方的數字證書的工廠類及證書管理器對象,只有通過驗證方可建立SSL安全連接。

可以看出,在JSSE中廣泛采用了“工廠模式”(Factory Method),從而使得JSSE框架具備了良好的擴展性。其他軟件開發者或應用提供商可以在JSSE規范下自行開發面向特定應用的具體實現。在JDK發布包中,SUN公司提供了自己開發的默認實現:SunJSSE。

3 建立安全連接

基于JSSE在客戶機與服務器之間建立SSL安全連接可以分為四步:①為客戶機與服務器分別建立X.509數字證書,并相互信任;②建立服務端的SSLServerSocket,并啟動;③建立客戶端的SSLSocket,并啟動;④數據通信。

3.1 創建數字證書

在Java中可采用KeyStore(密鑰倉庫)技術來創建和存儲X.509數字證書。KeyStore中可以存儲兩類不同的項,密鑰項(Key Entry)存儲極為敏感的加密密鑰信息,由JSSE中的密鑰管理器類(KeyManager)管理;可信任證書項(Trusted Certificate Entry)存儲另一個對象的公鑰證書,由JSSE中的可信任證書管理器類(TrustManager)管理[4]。

在Java中創建、存儲、管理數字證書的方法有兩種。一是通過keytool工具手工操作,實現簡單,但操作繁瑣,并且無法動態控制證書信息;二是通過JSSE的API,采用程序自動生成并動態管理。在本文所設計的安全連接原型中采用第二種方式,其關鍵過程如下:

// 創建工廠對象.

String alg=KeyManagerFactory.getDefaultAlgorithm();

KeyManagerFactory kmf=KeyManagerFactory.getInstance(alg);

// 動態創建KeyStore文件

FileInputStream fis=new FileInputStream(keyStore);

KeyStore ks=KeyStore.getInstance(\"jks\");

ks.load(new FileInputStream(keyStore), keyPwd.toCharArray());

// 使用KeyStore初始化工廠對象

kmFact.init(ks, keyPwd.toCharArray());

// 創建證書對象數組

KeyManager[] kms=kmf.getKeyManagers();

實例中采用默認算法生成證書,也可根據需要選擇其它的證書生成算法。可信任證書對象(TrustManager)的創建與此類似,不再贅述。

3.2 建立服務端與客戶端Socket

當通信雙方的證書創建后,可以用SSLSocketFactory和SSLServerSocketFactory分別創建客戶端與服務端的Socket,驗證對方證書并建立安全連接。

首先創建服務端Socket:

// 創建默認工廠對象

SSLServerSocketFactory ssf=

(SSLServerSocketFactory)SSLServerSocketFactory.getDefault();

// 創建套接字對象

SSLServerSocket serverSocket=(SSLServerSocket)ssf.createServerSocket(port);

// 指定雙向驗證(可選)

serverSocket.setNeedClientAuth(true);

// 監聽連接請求

SSLSocket socket=(SSLSocket)serverSocket.accept();

// 創建網絡監聽器 對客戶端證書授權驗證.

HandshakeCompletedListener hcl=new MyHandshakeListener(ident);

socket.addHandshakeCompletedListener(hcl);

其中MyHandshakeListener是自定義的一個實現HandshakeCompletedListener的對象,負責實現SSL的握手協議,采用X.509證書對象(X509Certificate)驗證通信對方的證書[5] [6] [7]。客戶端Socket的建立與此類似,不再贅述。

3.3 數據通信

Socket建立后,客戶端與服務端可通過流方式(Stream)傳輸數據,監聽器在通信雙方實時對數據進行加、解密,保證網絡連路上數據的安全性。

4 結束語

由于TCP/IP網絡的固有缺陷,通過網絡傳輸數據存在很大的安全隱患。SSL協議基于數字證書為網絡上通信雙方建立了一條安全的傳輸信道。SUN公司提出的JSSE技術是SSL協議的具體實現,為軟件開發者設計SSL應用提供了極大的便利。特別是JSSE基于工廠模式的架構,可方便地擴充各種個性化的SSL實現。

本文簡要闡述了SSL的運行機理,具體研究了JSSE的框架和各種API,并應用JSSE設計了客戶端與服務端之間SSL連接的原型,通過實例運行驗證了原型的正確性。接下來將繼續研究在JSSE框架下面向各種特定應用的個性化SSL實現。

參考文獻:

[1]Netscape Communication Corporation.SSL 3.0 Specification[EB/OL].Available at :http://wp.netscape.com/eng/ssl3/.

[2]肖文凱,孫麗君,阮永良.基于JSSE的JDBC安全連接的研究與實現[J].計算機應用研究,2004,(2):111-114.

[3]Sun Microsystems.Java Secure Socket Extension (JSSE) Reference Guide[EB/OL].Available at:http://java.sun.com/j2se/1.5.0/docs/guide/ security/ jsse/JSSERefGuide.html.

[4]曾毅,袁時金,胡運發.電子政務安全支撐平臺中的證書管理[J].計算機工程,2004,30(5):72-74.

[5]楊明,孟凡榮.整合SSL協議的Java RMI的研究與設計[J].計算機工程與設計,2007,28(15):3601-3604.

[6]陳墾,沈岳.JSSE在電子商務中的應用[J].湖南農業大學學報(自然科學版),2005,31(5):553-556.

[7]Cay S Horstmann,Gary Cornell.陳昊鵬,王浩,姚建平,等,譯.JAVA 2核心技術 卷II:高級特性[M].北京:機械出版社,2006.599-677.

主站蜘蛛池模板: 亚洲激情区| 亚洲成aⅴ人片在线影院八| 一本一道波多野结衣av黑人在线| 亚洲三级a| 99性视频| 日韩天堂视频| 色综合a怡红院怡红院首页| 拍国产真实乱人偷精品| 欧美第一页在线| 国产成人一区二区| 国产AV毛片| 国产亚洲欧美在线专区| 99久久无色码中文字幕| 久久毛片网| 永久免费AⅤ无码网站在线观看| 精品在线免费播放| www.99精品视频在线播放| 国产玖玖视频| 久久婷婷色综合老司机| 亚洲国产av无码综合原创国产| 国产乱子伦精品视频| 女人毛片a级大学毛片免费| 女人18毛片一级毛片在线 | 91网红精品在线观看| 亚洲成在人线av品善网好看| 亚洲人成人伊人成综合网无码| 91成人在线观看| 中国一级特黄大片在线观看| 免费xxxxx在线观看网站| 国产精品自在自线免费观看| 免费jizz在线播放| 久久久久九九精品影院| 国产成人精品一区二区不卡| 国产精品永久不卡免费视频| 国产午夜无码片在线观看网站| lhav亚洲精品| 久久中文字幕2021精品| 亚洲精品老司机| 91精品专区国产盗摄| 色婷婷成人| 欧美色视频日本| 又粗又硬又大又爽免费视频播放| 国产产在线精品亚洲aavv| 国产成人综合在线观看| 国产精品无码制服丝袜| 久久久久夜色精品波多野结衣| 九色视频线上播放| 婷婷激情亚洲| 国内精品小视频在线| 亚洲欧美日韩成人高清在线一区| 国产乱人乱偷精品视频a人人澡| 极品私人尤物在线精品首页 | 亚洲无码视频一区二区三区| 五月激情综合网| 好久久免费视频高清| 亚洲天堂网站在线| 欧美精品影院| 国产精品爆乳99久久| 色综合热无码热国产| 永久免费av网站可以直接看的 | 就去吻亚洲精品国产欧美| 欧美国产在线看| 国产裸舞福利在线视频合集| 99久久精品国产麻豆婷婷| 亚洲色图在线观看| A级毛片无码久久精品免费| 毛片免费网址| 亚洲日本一本dvd高清| 欧洲亚洲一区| 一级毛片在线播放免费| 中文字幕在线观看日本| 色综合五月| 国产精品v欧美| 毛片视频网| 无码精品国产VA在线观看DVD| 激情国产精品一区| 国产成人精品无码一区二| 国产成+人+综合+亚洲欧美| 一区二区三区高清视频国产女人| 亚洲精品男人天堂| 亚洲欧洲日韩综合| 成人第一页|