4 网关服务器的设计
4.1 为Tomcat配置SSL
本系统中,SSL VPN网关是基于Web服务器Tomcat实现的。从图1中可知远程客户端和VPN之间通过SSL协议安全通信,目前浏览器大多支持SSL,无需额外配置,则主要是为Tomcat配置SSL,包含:准备安全证书以及配置Tomcat的SSL连接器(Connector)。具体配置方法如下:
(1)使用keytool命令生成证书库文件打开命令行对话框,输人如下命令:keytool-genkey-alias tomcat-keyalg RSA-keysize 1024-validity 365-keystore tomcat.keystore,则会在当前目录下生成文件tomcat.keystore。
(2)保存文件将生成的tomcat.keystore文件保存在TOM-CAT/conf目录下。
(3)修改server.xml文件 去掉SSL Connector注释语句<!
(4)重新启动Tomcat访问http://localhost:8443,一般打开页面前会提示确认证书的内容,选择OK即可看到页面。
远程客户端通过浏览器访问SSL VPN,为保证两者通信的安全性,在HTTP协议下采用SSL协议,如图1所示。采用SSL机制的HTTP称为HTTPS协议,HTTP使用的默认端口为80,而HTTPS使用的默认端口为443。
4.2 Web转发功能模块的设计
SSL VPN中Web转发功能模块主要实现以下功能:当远程客户端发出访问企业内部某一服务器的请求时,SSL VPN中的Web转发功能模块分析该请求,得到其真正要访问的内网URL,然后向内网服务器发出该请求,再取回并修改远程客户端所需信息,传至远程客户端,如图2所示。
该系统的SSL VPN网关中用于实现Web转发功能模块的是一个名为WebAgent的Servlet。为访问WebAgent,需在Tomcat的配置文件Web.xml中配置访问该Servlet的URL模式,通过servlet-mapping元素实现:
通过上述配置,假设SSL VPN的IP地址为222.207.224.19,所有格式为https://222.207.224.19/agent/*的URL请求都将由该Servlet处理。
为实现代理功能,WebAgent接收到的请求中应包含远程用户真正想要访问的内网服务器的URL信息。但如果直接暴露内网服务器的URL地址可能会带来安全隐患,故该系统采用加密内网资源URL地址信息的方案。例如当远程客户要访问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)向内网服务器发出访问请求,内网服务器收到请求后,向WebAgent返回应答信息。
4.3 HTML文档中后续访问的处理
如果应答对象为HTML文档,由于该文档中包含超链接以及其他引用对象。为使基于该页面的后续访问请求仍能通过HTTP代理服务器转发,需将应答信息修改后再发送至远程客户端。图3为HTTP协议的应答信息格式。
HTTP响应消息分为状态行、头部行、附属体3部分。其中状态行有协议版本、状态码、原因短语3个字段,分别用于告知服务器端使用的HTTP协议版本号、本次请求执行的状态(如发生错误,给出错误原因等)。头部行包含有关服务器端环境及应答正文的有用信息(如正文字节数、发送时间、包含在附属体中的对象类型等)。附属体包含是应答正文信息。