玩了一上 ssl-explorer vpn(未完待续)
SSL-Explorer是一个SSL VPN解决方案。这个独特的远程访问解决方案让用户和商业伙伴只需使用一个标准的web浏览器就能够从外部网络安全的访问内部网络的资源。
软件架构 :
标准J2EE架构
web服务器: jetty 内嵌服务器
DB: HSQLDB 内存数据库
框架:jsp+javaBean+struts1.0
源码地址
http://www.10pig.cn/index/sslexplorer.aspx
实验目的: 通过 使用开源的 vpn服务器 连接内部网资源,主要通过浏览器方式
服务器: Linux bea 2.6.9-5.EL #1 Wed Jan 5 19:22:18 EST 2005 i686 i686 i386 GNU/Linux
客户端: FF or IE
准备环境:
1.安装java环境
详见:http://8366.iteye.com/admin/blogs/376982
2.安装ant 环境
我使用的是 apache-ant-1.8.1-bin.tar.gz
a. 使用tar 命令 将apache-ant-1.8.1-bin.tar.gz 解压缩到 /root目录
cd /root
tar xvfz apache-ant-1.8.1-bin.tar.gz
b. 编辑 /etc/profile 文件,加入,使用 vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.6.0_16
expor PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ANT_HOME/bin:$PATH
3. 我自己的 /etc/profile 新加部分的样例
unset i unset pathmunge export JAVA_HOME=/usr/java/jdk1.6.0_16 export JRE_HOME=/usr/java/jdk1.6.0_16/jre export ANT_HOME=/root/apache-ant-1.8.1 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ANT_HOME/bin:$PATH [root@bea info]#
4. 验证环境 正确性,可以看到java和ant的版本信息
[root@bea ~]# ant -version Apache Ant version 1.8.1 compiled on April 30 2010 [root@bea ~]# java -version java version "1.6.0_16" Java(TM) SE Runtime Environment (build 1.6.0_16-b01) Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing) [root@bea ~]#
5.ssl-exploer vpn 服务器端分为window和linux两种,我下载的版本名字分别是
windows :sslexplorer_windows_1_0_0_RC13.zip
linux: sslexplorer_linux_gui_1_0_0_RC16.zip
开始安装ssl-explorer
安装过程 网上有个文档可以参考 sslexplorer-install.pdf 在本文的附件列表中
如果你选择linux版本
a.首先 解压缩安装文件 :
unzip sslexplorer_linux_gui_1_0_0_RC16.zi
b. 运行安装脚本
[root@bea opt]# ./sslexplorer_linux_1_0_0_RC16.sh
c. 后续步骤和安装文档一致,需要注意的是 如果长时间停留在 安装中的服务器配置 步骤中,可以手动访问
http://localhost:28080 进行服务器端配置
ssl-exporler 启动和关闭
linux :
# /etc/rc.d/init.d/sslexplorer start (启动)
# /etc/rc.d/init.d/sslexplorer stop (关闭)
#/etc/rc.d/init.d/sslexplorer restart (重启)
windows:
在服务中找到 sslexplorer 执行启动或者关闭
ssl-exporler 代码结构和 个性化修改 (基于Linux)
我的ssl-exporer安装在/opt下
先看下 客户端登陆主页
如果你想修改这个产品的的文字可以 这样做:
ssl-explorer 页面全部使用时i18n, 所用的资源文件放在 ,将次jar包解压缩后找到 *.properties文件修改即可
/opt/sslexplorer/webapp/WEB-INF/lib/sslexplorer-webapp.jar
修改jsp页面内容可以这样:
1. jsp页面存放路径:
/opt/sslexplorer/webapp/WEB-INF/jsp ,找到你想改动的jsp,在其上修改
2. 删除 /opt/sslexplorer/tmp 目录下 org目录 ,tmp下其他目录不要动,误删除会导致样式丢失
rm -rf org/
3. 重新启动ssl-explorerf服务
[root@bea tmp]# service sslexplorer restart
Stopping SSL-Explorer...
Stopped SSL-Explorer.
Starting SSL-Explorer...
[root@bea tmp]#
4.验证改动已经生效了,以前改动jsp页面不生效的原因就是 没有清空这个目录,没用重启服务
修改图片可以这样做:
图片路径
/opt/sslexplorer/webapp/theme/default/images
后期研究数据库迁移策略:
1.安装程序中有DB script可以直接使用导入到其他DB中
2.修改连接数据库的 工具类
HSQLDB -->Mysql,Oracle,sqlserver
如何将自己做的东西加入到 ssl-explorer 的安装包里,在客户安装 ssl-explorer ,一并安装
我们知道 在linux 下安装 sslexplorer 执行的是 ./sslexplorer_linux_1_0_0_RC16.sh ,这是一个安装的shell,他的大小有20多M, 经过分析 这个文件的构成 主要是由2部分(可以使用vi命令)
1. 安装脚本 (第1行到 367行)
2. 安装所需的依赖包,以及文件夹 (368行 到尾)
我们要将自己的jsp和其他依赖jar,以及class放在安装包里,就必须阅读 第一部分的安装脚本,已经把自己的新增部分放在 第二部分
首先要做的就是 拆分 sslexplorer_linux_1_0_0_RC16.sh 这个安装程序,主要使用了tail 命令
1.使用vi sslexplorer_linux_1_0_0_RC16.sh 我们可以清楚的看到 安装的脚本 是 第1行到 367行,于是
head -367 sslexplorer_linux_1_0_0_RC16.sh >install.sh
上面命令的意思是 取文件 sslexplorer_linux_1_0_0_RC16.sh 的 1-367行 内容,并把它定向到 install.sh 文件中
,这样在目录下我们就有了 install.sh
2. 拆分安装文件 中的依赖包 ,经过阅读 install.sh 文件 我们知道 后面的部分必须查分成一个 叫 sfx_archive.tar.gz的 文件,我们可以像 install.sh 文件中一样 使用tail 命令进行拆分
tail -n +368 sslexplorer_linux_1_0_0_RC16.sh > sfx_archive.tar.gz
这时候我们会发现在当前的目录下我们多了 sfx_archive.tar.gz 文件 ,这个文件中正是 安装包中包含的内容,我们只要把自己新增的部分放在这个.gz包里,然后 在将 install.sh 和 sfx_archive.tar.gz 合并成 sslexplorer_linux_1_0_0_RC16.sh 就完成了 安装包的修改了
3. 合并
cat install.sh sfx_archive.tar.gz > sslexplorer_linux_1_0_0_RC16.sh
给安装包加上执行权限
chmod +x sslexplorer_linux_1_0_0_RC16.sh
经过1,2,3 我们就得到了一个全新的安装包
遇到问题:
a. 执行 ./sslexplorer_linux_1_0_0_RC16.sh 报错 ,如果是gzip格式不对 请检查 你拆分和合并的行数对否
b. 如果你是在 windows平台改的 install.sh 脚本,然后上传到linux平台,请使用 dos2unxi 转化
中文乱码问题:
1. 将自己的jsp页面放在 /opt/sslexplorer/webapp 下,我写了一个test.jsp 内容如下,一定要加
<%@ page pageEncoding="UTF-8"%>
不然会是乱码
<%@ page pageEncoding="UTF-8"%> 222222222222222222222211111111111 果你想修改这个产品的的文字
2.显示效果
如果使用VI 不能保存中文 可以:
由于在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码。修改了一下配置文件,使vi支持gb编码就好了。
$vi ~/.vimrc
let &termencoding=&encoding
set fileencodings=utf-8,gbk
$:wq
再次打开vi,显示就正常了。
数据库研究 :
1.安装目录下已经有链接hsql的工具 hsqldb-manager 我们可以使用它来链接数据库
因为hsql数据库是以 In-Process(Standalone)模式启动的,这种模式不允许有其他他客户端链接数据库,因此我们先关闭 sslexplorer 服务使用这个工具链接数据库,当我们关闭 hsqldb-manager 这个工具的时候 我们才能启动 sslexplorer服务,不然会起不起来
链接url jdbc:hsqldb:file:db/explorer_configuration
用户名 sa
密码 空
2.使用jsp页面测试数据库,看看能否select 和 insert ,写两个jsp页面 来做测试一个 select 一个insert
select.jsp
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <% final Connection conn; Class.forName("org.hsqldb.jdbcDriver"); conn = DriverManager.getConnection("jdbc:hsqldb:file:/opt/sslexplorer/db/explorer_configuration", "sa", ""); Statement stmt = conn.createStatement(); //打印users表里面的内容 ResultSet rs = stmt.executeQuery("select * from users"); while(rs.next()) { out.println("userName:"+rs.getString(1)); out.println("Email:"+rs.getString(2)); out.println("<br>"); } stmt.close(); conn.close(); %> 1111111111111111111111
insert.jsp
<%@ page pageEncoding="UTF-8"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <% try{ final Connection conn; Class.forName("org.hsqldb.jdbcDriver"); conn = DriverManager.getConnection("jdbc:hsqldb:file:/opt/sslexplorer/db/explorer_configuration", "sa", ""); Statement stmt = conn.createStatement(); //打印users表里面的内容 //插入一条记录 每次执行这个语句的时候请更改用户名,不然会插入相同的用户名 //ENCPASSWORD 内置函数用来加密密码 //curdate() 内置函数 用来获取当前系统时间 String sql="INSERT INTO users (username, email, password, fullname, realm_id,last_password_change) VALUES('haohaoxuexi','ryp@xinli.com.cn',ENCPASSWORD('111111'),'renyupu',1,curdate())"; stmt.execute(sql); stmt.close(); conn.close(); out.println("插入成功"); } catch(Exception e) { out.println("插入失败:"+e.getMessage()); } %>
把这个两个jsp 放到 /opt/sslexplorer/webapp 下, 启动 service sslexplorer start 做个测试
可以看到 数据已经 从数据库里读出来了!! 执行插入的jsp,然后用你插入的用户名和密码也可以登陆系统,我就不截图了
参考:
http://www.dnbcw.com/biancheng/solaris/pear245899.html
http://www.cnblogs.com/chinareny2k/archive/2010/01/05/1639468.html
http://cn.webdiscussion.info/question/3066948/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%80%E4%B8%AA%E8%A1%8C%E5%8F%B7%E6%96%87%E4%BB%B6%E5%88%86%E5%89%B2
http://www.linux-wiki.cn/index.php?title=%E5%88%B6%E4%BD%9C%E8%87%AA%E8%A7%A3%E5%8E%8B%E5%AE%89%E8%A3%85%E6%96%87%E4%BB%B6&variant=zh-cn