學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 防火墻知識 > java如何穿越防火墻

java如何穿越防火墻

時間: 林輝766 分享

java如何穿越防火墻

  有什么方法可以讓java穿越防火墻呢?小編來告訴你!下面由學(xué)習(xí)啦小編給你做出詳細(xì)的java穿越防火墻方法介紹!希望對你有幫助!

  java穿越防火墻方法一:

  下載與安裝

  建議您在繼續(xù)進(jìn)行線上安裝之前,請先停用網(wǎng)際網(wǎng)路防火墻。在某些情況下,預(yù)設(shè)的防火墻設(shè)定為拒絕所有自動或線上安裝,例如 Java 線上安裝。如果防火墻配置不正確,則在某些情況下可能會使Java 的下載/安裝作業(yè)中止。

  請參閱您的特定網(wǎng)際網(wǎng)路防火墻手冊,以取得有關(guān)如何停用「網(wǎng)際網(wǎng)路防火墻」的說明。

  請移至 Java.com 并按一下 [免費(fèi) Java 下載] 按鈕在 Firefox 下載頁面上,按下載按鈕啟動安裝程序。

  [檔案下載] 對話方塊將會出現(xiàn),提示您儲存下載的檔案。

  要執(zhí)行安裝程式,按一下 [下載管理員] 視窗中的檔案或是您平常儲存下載檔案的地方。依據(jù)您的安全性設(shè)定而定,可能會出現(xiàn)對話方塊,要求您提供繼續(xù)進(jìn)行的權(quán)限。確認(rèn)您要繼續(xù)安裝。

  java穿越防火墻方法二:

  開發(fā)人員必須用各種迂回的方法,而沒有一種是“特別好的”。開發(fā)人員通常寫一個servlet來截取HTTP請求,并將它們導(dǎo)向到EJBs,這種方法很不正規(guī)。

  另一種方法是運(yùn)用信道(tunneling)技術(shù),如HTTP上的RMI,這種方法會給性能帶來很大的影響。除了上述的兩種方法外,還有一種更好的方法。通過運(yùn)用Java Secure Socket Extension(JSSE),你就可以很好地解決這個問題。

  在一個J2EE應(yīng)用程序中,Enterprise JavaBeans(EJB)通常是位于應(yīng)用程序服務(wù)器中的,而且一個Web前端是用servlets、JavaServer Pages(JSP)和標(biāo)簽庫創(chuàng)建的。在大多數(shù)情況下,這些組件都位于企業(yè)防火墻的同一側(cè),他們之間沒有防火墻(見圖1)。

  圖1. 傳統(tǒng)的J2EE應(yīng)用程序 但有時侯,防火墻會把客戶端同服務(wù)器隔離開(見圖2)。在一個典型的例子中,一個胖客戶端(thick client)(如一個基于Swing的客戶端)與一個應(yīng)用程序服務(wù)器交互。(這些客戶端通常用諸如Java Web Start這樣的技術(shù)來安裝,所以最終用戶既可以得到自動化部署的好處,也可以得到一個富客戶端的好處。)

  這就會出現(xiàn)一個問題。Remote Method Invocation(RMI)是在Java Remote Methods Protocol(JRMP)、Internet Inter Orb Protocol(IIOP)、或一個如T3的私有協(xié)議上實(shí)現(xiàn)的。要穿越防火墻實(shí)現(xiàn)RMI而又不在防火墻中另外打洞,就需要我們采用一些方法。

  大多數(shù)可選方法都有不足,這個問題有許多解決方法,每種方法都各有利弊。你可以嘗試HTTP上的RMI信道技術(shù)。JavaSoft中的RMI帶有一個缺省的HTTP信道機(jī)制。如果RMI引擎不能用JRMP聯(lián)系RMI服務(wù)器,它就會開一個通道,使請求穿過HTTP并與一個可以截取這個請求的Web組件對話。

  JavaSoft提供了一個CGI腳本和一個servlet,它們可以截取這些請求并將這些請求導(dǎo)向到適當(dāng)?shù)腅JBs。然而,這種方法不支持HTTPS,所以如果需要安全的訪問,你就必須實(shí)現(xiàn)HTTPS信道。另外,甚至連JavaSoft都說,HTTP上的RMI信道可能會讓性能嚴(yán)重下降。

  圖2. 被一個防火墻隔開的客戶端和服務(wù)器 第二種方法是在私有的協(xié)議上(如那些用于各種應(yīng)用程序服務(wù)器中的協(xié)議)用RMI信道。例如,BEA WebLogic支持T3協(xié)議上的信道。這種方法可以部分地解決我們在HTTP上的RMI信道技術(shù)中提到的性能問題。然而,這會意味著應(yīng)用程序可能會依賴私有擴(kuò)展,這是許多Java開發(fā)人員不惜任何代價全力想去避免的。

  第三種方法是在EJBs周圍編寫一個瘦Web層,如一個servlet。胖客戶端發(fā)送一個被該servlet截取的HTTP請求,然后它與EJB層通訊,并將響應(yīng)返回給客戶端。這就意味著,每個請求都必須轉(zhuǎn)換成一個HTTP請求并發(fā)送回來。

  但是運(yùn)用JSSE,你就可以很容易地在SSL上實(shí)現(xiàn)RMI。這種方法只需要寫少量的代碼,而且對于客戶端來說,就好象它在JRMP或IIOP上調(diào)用一個RMI。這是服務(wù)器和客戶端之間進(jìn)行通訊的一個安全的通道。

  JSSE是一組Java包,它支持安全的Internet通訊。它實(shí)現(xiàn)了一個Secure Sockets Layer(SSL)的Java版本和Transport Layer Security(TLS)協(xié)議,并包括數(shù)據(jù)加密、服務(wù)器驗(yàn)證、消息完整性和可選的客戶端驗(yàn)證功能。通過運(yùn)用JSSE,你就可以在服務(wù)器和客戶端之間提供安全的數(shù)據(jù)通道。

  第一步:安全套接庫

  缺省情況下,RMI運(yùn)用JRMP。EJB規(guī)范中提到它支持IIOP以及JRMP上的RMI。應(yīng)用程序服務(wù)器的供應(yīng)商負(fù)責(zé)提供對根本協(xié)議的支持。但是運(yùn)用JSSE,你就可以覆蓋這個層并用SSL替代它。

  第一步是實(shí)現(xiàn)安全套接庫(secure socket libraries)。你可以在JavaSoft的Java Development Kit(JDK)文件包中找到這些類。實(shí)現(xiàn)這個套接庫的類是RMISSLServerSocketFactory.java和RMISSLClientSocketFactory.java?,F(xiàn)在,我們來看看實(shí)現(xiàn)這些安全套接庫的代碼。

  創(chuàng)建一個SSL server socket,并返回它讓J2EE容器使用(見列表1)。通過運(yùn)用JDK中捆綁的keytool就生成了keystore。該文件作為testkeys存儲,可以訪問該socket。這個文件必須可以在包含套接庫的.jar文件的根目錄中找到,而且可以從該位置下載key store。

  SSLClientSocketfactory的代碼更簡單(見列表2)。客戶端在服務(wù)器監(jiān)聽的端口中創(chuàng)建一個SSLSocket。JSSE自動處理其它事宜。

  列表2. SSLClientSocketFactory 的代碼更簡單??蛻舳嗽诜?wù)器監(jiān)聽的端口中創(chuàng)建了一個SSLSocket。JSSE包自動處理其它事宜。

  第二步:實(shí)現(xiàn)你的EJBs

  照常實(shí)現(xiàn)你的EJBs。編寫遠(yuǎn)程接口、home接口和bean。注意,你不必在此做任何特殊的安全套接擴(kuò)展。(本文所附的代碼樣例包含一個HelloWorld EJB,你可以用它進(jìn)行測試。)查看一下ejb-jar.xml部署描述符,你可以看到這是普通的代碼,沒有特殊的擴(kuò)展。

  第三步:通知容器

  最后一步是要讓容器知道EJB應(yīng)該用自定義的安全套接庫,而不是缺省的套接庫(通常是JRMP、IIOP和T3)。不幸的是,這并不是在EJB規(guī)范中指定的一個標(biāo)準(zhǔn)的特征,所以它必須在供應(yīng)商特定的部署描述符中說明。

  通過這些簡單的步驟,我們就可以很容易地穿越防火墻安全地訪問EJBs了,而不用在防火墻中打更多的洞。同時,性能也不會受影響。在人們的安全意識不斷提高的情況下,這的確是個很好的方法。

  java穿越防火墻方法三:

  java.net

  類:DatagramPacket

  DatagramSocket

  或者:ServerSocket

  Socket

  這些類都有一個返回端口的方法,ServerSocket是getLocalPort() ,其他三個是getPort()。如果返回的端口是80,那么就禁止接收或者發(fā)送數(shù)據(jù),并給與適當(dāng)?shù)奶崾拘畔ⅰ?br/>

  看了“java如何穿越防火墻 ”文章的還看了:

1.防火墻知識

2.防火墻排名大全有哪些

3.防火墻基礎(chǔ)知識

4.防火墻分類大全

781672