基于Tomcat的SSL VPN網(wǎng)關(guān)服務(wù)器的設(shè)計與實現(xiàn)
4 網(wǎng)關(guān)服務(wù)器的設(shè)計
4.1 為Tomcat配置SSL
本系統(tǒng)中,SSL VPN網(wǎng)關(guān)是基于Web服務(wù)器Tomcat實現(xiàn)的。從圖1中可知遠(yuǎn)程客戶端和VPN之間通過SSL協(xié)議安全通信,目前瀏覽器大多支持SSL,無需額外配置,則主要是為Tomcat配置SSL,包含:準(zhǔn)備安全證書以及配置Tomcat的SSL連接器(Connector)。具體配置方法如下:
(1)使用keytool命令生成證書庫文件打開命令行對話框,輸人如下命令:keytool-genkey-alias tomcat-keyalg RSA-keysize 1024-validity 365-keystore tomcat.keystore,則會在當(dāng)前目錄下生成文件tomcat.keystore。
(2)保存文件將生成的tomcat.keystore文件保存在TOM-CAT/conf目錄下。
(3)修改server.xml文件 去掉SSL Connector注釋語句!
(4)重新啟動Tomcat訪問http://localhost:8443,一般打開頁面前會提示確認(rèn)證書的內(nèi)容,選擇OK即可看到頁面。
遠(yuǎn)程客戶端通過瀏覽器訪問SSL VPN,為保證兩者通信的安全性,在HTTP協(xié)議下采用SSL協(xié)議,如圖1所示。采用SSL機(jī)制的HTTP稱為HTTPS協(xié)議,HTTP使用的默認(rèn)端口為80,而HTTPS使用的默認(rèn)端口為443。
4.2 Web轉(zhuǎn)發(fā)功能模塊的設(shè)計
SSL VPN中Web轉(zhuǎn)發(fā)功能模塊主要實現(xiàn)以下功能:當(dāng)遠(yuǎn)程客戶端發(fā)出訪問企業(yè)內(nèi)部某一服務(wù)器的請求時,SSL VPN中的Web轉(zhuǎn)發(fā)功能模塊分析該請求,得到其真正要訪問的內(nèi)網(wǎng)URL,然后向內(nèi)網(wǎng)服務(wù)器發(fā)出該請求,再取回并修改遠(yuǎn)程客戶端所需信息,傳至遠(yuǎn)程客戶端,如圖2所示。
該系統(tǒng)的SSL VPN網(wǎng)關(guān)中用于實現(xiàn)Web轉(zhuǎn)發(fā)功能模塊的是一個名為WebAgent的Servlet。為訪問WebAgent,需在Tomcat的配置文件Web.xml中配置訪問該Servlet的URL模式,通過servlet-mapping元素實現(xiàn):
通過上述配置,假設(shè)SSL VPN的IP地址為222.207.224.19,所有格式為https://222.207.224.19/agent/*的URL請求都將由該Servlet處理。
為實現(xiàn)代理功能,WebAgent接收到的請求中應(yīng)包含遠(yuǎn)程用戶真正想要訪問的內(nèi)網(wǎng)服務(wù)器的URL信息。但如果直接暴露內(nèi)網(wǎng)服務(wù)器的URL地址可能會帶來安全隱患,故該系統(tǒng)采用加密內(nèi)網(wǎng)資源URL地址信息的方案。例如當(dāng)遠(yuǎn)程客戶要訪問http://192.168.0.1/index.jsp時, WebAgent接收到的請求為https://222.207.224.19/agent/S6GH78GL/index.jsp。這里的 S6GH78GL為http://192.168.0.1的密文信息。WebAgent解密請求得到真正要訪問的URL信息,通過HTTP客戶端工具(如 HttpClient)向內(nèi)網(wǎng)服務(wù)器發(fā)出訪問請求,內(nèi)網(wǎng)服務(wù)器收到請求后,向WebAgent返回應(yīng)答信息。
4.3 HTML文檔中后續(xù)訪問的處理
如果應(yīng)答對象為HTML文檔,由于該文檔中包含超鏈接以及其他引用對象。為使基于該頁面的后續(xù)訪問請求仍能通過HTTP代理服務(wù)器轉(zhuǎn)發(fā),需將應(yīng)答信息修改后再發(fā)送至遠(yuǎn)程客戶端。圖3為HTTP協(xié)議的應(yīng)答信息格式。
HTTP響應(yīng)消息分為狀態(tài)行、頭部行、附屬體3部分。其中狀態(tài)行有協(xié)議版本、狀態(tài)碼、原因短語3個字段,分別用于告知服務(wù)器端使用的HTTP協(xié)議版本號、本次請求執(zhí)行的狀態(tài)(如發(fā)生錯誤,給出錯誤原因等)。頭部行包含有關(guān)服務(wù)器端環(huán)境及應(yīng)答正文的有用信息(如正文字節(jié)數(shù)、發(fā)送時間、包含在附屬體中的對象類型等)。附屬體包含是應(yīng)答正文信息。
評論