如何给JSP服务器Resin加上SSL认证
为最佳JSP服务器Resin加上SSL认证
Resin主要是作为WEB服务器的jsp/servlets运行平台。它支持许多WEB服务器软件,而且是完全免费的,并提供了对SUN的J2EE的支持,这要比其它相关的java和javascript开发和运行平台要好的多,而且速度非常快,并提供服务器端直接开发、编译和运行。因此,Resin受到了许多应用JSP的WEB站点的支持。
一、 在WEB服务器中使用OpenSSL套件
1、安装OpenSSL
想要Resin可以响应SSL请求,我们就必需保证WEB服务器上已经安装好了相关的SSL套件。对于中小企业来说,开源免费的OpenSSL提供与SSL相同的认证功能。
OpenSSL的Linux版本可以在wwwopensslorg网站上下载。现在它的最新版本是OpenSSL 098j。
Resin通过它的libexec/libresinsslso JNI库文件提供对OpenSSL的支持。如果是在类Linux系统下使用OpenSSL,在安装时可以通过下列命令将它安装到指定的位置:
/configure --with-openssl=/usr/local/ssl
如果我们是在Windows系统中使用Resin,那么,我们同样需要在此操作系统下先安装好OpenSSL。Windows下的OpenSSL在wwwslprowebcom/products/Win32OpenSSLhtml下载,它的最新安装文件是Win32OpenSSL-0_9_8jexe,其大小为7MB左右。
在Windows系统下,Resin的resinssldll文件中包含提供对OpenSSL支持的代码。(在Resin30以前的版本是通过resindll文件提供支持的。)因此,在Windows系统下只需要安装好OpenSSL就可以让Resin使用它了。OpenSSL在Windows系统下很容易安装,就如同安装其它的应用程序一样简单。
不过,在Windows系统下安装完OpenSSL后,还应当将一些需要的DLL文件复制到Resin的根目录当中。现在假设Resin安装在c:\resin-321目录,OpenSSL安装在c:\Program Files\GnuWin32目录。现在打开系统开始菜单的“运行”对话框,在运行框中输入CMD命令,回车后进入命令行终端界面。然后在命令行终端下就可以通过下列所示的命令将OpenSSL安装目录下的相关文件复制到Resin的根目录下:
cd resin-321
copy c:\Program Files\GnuWin32\bin\libssl32dll c:\resin-321\libssl32dll
copy c:\Program Files\GnuWin32\bin\libeay32dll c:\resin-321\libeay32dll
2、生成SSL认证私钥
SSL认证的密钥由OpenSSL来生成,生成后的密钥应当保存到相应的Resin目录中。因此,在生成密钥前,我们可以在Resin根目录中创建一个keys子目录用来保存将要创建的密钥。在类Linux系统下,我们可以通过下列方式来创建keys目录:
cd /resin
mkdir keys
在Windows系统下,我们可以在资源管理器中直接在Resin根目录下创建一个新文件夹,并命名为keys即可。
在生成密钥时,OpenSSL会根据其配置文件中设置的内容来生成。在类Linux系统下,这个缺省的配置文件可能在usr/ssl/opensslcnf或/usr/share/ssl/opensslcnf下。而Windows系统中不存在这样的文件。
当然,我们还可以自己创建一个相应的配置文件保存到Resin/keys/目录下。这样,在创建密钥时,OpenSSL也会根据这个配置文件中的内容来创建,而且,在创建密钥时不会要求我们根据提示输入缺省的相关信息了。
下面是一个opensslcnf配置文件的相关内容实例:
[ req ]
default_bits = 1024 #在这里填入加密键的缺省位数
distinguished_name = req的名称
[ req_distinguished_name ]
C = 在这里填入国家的代码,例如CN,代表中国
C_default =
ST = 这里填写州或省名称
ST_default =
L = 城市
L_default =
O = 企业或机构名称
O_default =
OU = 组织中某个部门的名称,例如市场部
OU_default =
CN = 我们的网站域名,必需是全名,例如wwwmywebcom
CN_default =
emailAddress = 联系的E-Mail邮箱地址
emailAddress_default =
完成OpenSSL配置文件的相关设置后,我们就可以开始为SSL认证创建一个私钥。在WEB服务器上创建私钥时,会要求我们输入相应的密码,这个密码将会在我们使用创建的私钥时要求被输入。因此要牢记这个密码并妥善地保管它。我们还必需将这个密码加入到Resin的配置文件当中。
在类Linux系统下创建私钥时,私钥的文件名可以由我们自己决定,可以通过下列所示命令来完成:
openssl genrsa -des3 -out myprikeykey 1024
在Windows系统下创建私钥。得先进入命令行终端界面,然后用CD命令切换到OpenSSL安装目录,再用下列命令产生私钥;
c:\Program Files\GnuWin32\bin\opensslexe genrsa -des3 -out myprikeykey 1024
二、 创建或申请SSL证书:
为了能够加密与用户的会话数据,我们还必需为SSL认证创建或申请一个公钥证书。这个公钥证书在使用时会由Resin发送给用户的浏览器,以便浏览器能够加密其发送的数据。公钥证书可以由OPENSSL产生一个自签名证书,也可以到第三方SSL证书颁发机构申请一个公钥证书。要注意的是,自签名证书将不能被其浏览器所承认。
1、创建一个自签名证书
当我们只是用来测试WEB服务器的SSL安全连接,或者只是作为企业远程办公之用时,那么创建一个自签名证书将会为我们节省一笔小钱。但是,对于这样的自签证书,WEB浏览器是不会承认的,还会为此弹出一个警告框来提醒用户这个证书不是一个公认的SSL证书。不过,用户浏览器与WEB服务器之间的会话数据仍然是被SSL加密了的。
在类Linux系统下创建自签名证书,可以使用下列命令来完成:
openssl req -config /opensslcnf -new -key myprikeykey -x509 -out myselfcrt
在Windows系统下创建自签名证书,在字符终端用CD命令进入OpenSSL安装目录后,可以通过下列命令完成:
c:\Program Files\GnuWin32\bin\opensslexe req -config /opensslcnf -new -key myprikeykey -x509 -out myselfcrt
其中,自签名证书的名称可以由我们自己决定,例在本例中为myselfcrt,而“-key”参数后带的键文件是在上面我们创建的私钥文件,而命令中的“/opensslcnf”表示当前目录下的OpenSSL的配置文件。
如果我们没有按前文所述方式生成一个OpenSSL配置文件,或者没有修改此配置文件中的缺少配置值,那么在创建过程中会要求我们提供一些基本的与WEB服务器相关的身份资料,例如企业名称和网站域名等信息。
2、创建一个证书请求文件
如果要使用第三方证书颁发机构上的证书,那么就必需先创建一个证书请求文件(CSR)。这个证书请求文件中包含有证书的公钥、企业名称、加密位数、地址和网站域名等信息。
当我们在第三方证书颁发机构上申请证书时,就会要求我们提交这个证书请求文件,然后,证书颁发机构才能将SSL证书颁发给我们。现在提供SSL证书的机构有许多,例如VeriSign公司就是其中最著名的代表。在生成证书请求文件时一定要注意,我们使用什么样的WEB服务器软件,就必需生成与它相兼容的证书请求文件,这样,SSL证书颁发机构颁发给我们的证书才能在此WEB服务器下使用。
在Linux系统下生成证书请求文件,可以使用下列命令达到目的:
openssl req -new -config /opensslcnf -key myprikeykey -out myprikeycsr
在Windows系统下生成证书请求文件,在命令行界面中通过CD命令进入OpenSSL安装目录后,通过下列命令来完成证书请求文件的生成:
c:\Program Files\GnuWin32\bin\opensslexe req -new -config /opensslcnf -key myprikeykey –out myprikeycsr
证书请求文件的文件名可以由我们自己来决定,在本文中为myprikeycsr。在生成证书请求文件过程中会要求我们输入一些与WEB服务器身份相关的信息,例如网站域名和企业名称等。我们必需按要求如实填写。
当我们成功注册,并支付相应的年使用费之后,这些证书颁发机构就会将SSL证书发送到我们填写的电子邮箱当中。
三、 配置Resin使用私钥和SSL证书
要想Resin能够使用SSL认证,我们还必需对其配置文件resinconf做相应的设置。具体要配置的内容包括:
keys/ myselfcrt
keys/ myprikeykey
mypassword
其中,中的内容表示SSL连接使用的默认端口号,如果没有特别要求,可以保持默认。和之间的内容填入Resin可以使用的SSL认证公钥,在这里为myselfcrt。和之间的内容填入Resin可以使用的私钥,在本文中为myprikeykey。至于和之间就是填入我们在创建私钥时设置的密码。
四、 测试Resin的SSL加密连接
当我们配置好Resin的SSL认证后,我们还可以通过一些方式来检验我们的配置是否正确。
在Windows系统下,我们就可以通过在WEB浏览器地址栏中输入https://URL(企业网站的域名)的方式,来验证WEB服务器是否对这样的URL地址做出正确响应。如果返回正常的内容,并且在WEB浏览器地址栏中显示出一个挂锁的标志,那么,Resin的SSL配置就算成功了。
在Linux系统下,除了可以上述方式来检验外,还可以通过下列方式来验证:
openssl s_client -connect wwwmywebcom:443 –prexit
另外,我们还可以通过下列的JSP脚本来快速验证Resin是否对SSL做出反应:
Secure <%= requestisSecure() %>
经过上述的检验操作后,如果都能得到WEB服务器的正确响应,那么就说明Resin已经能够提供对SSL技术的支持了。
也就是说,当用户通过WEB浏览器向WEB服务器发送一个SSL请求时,Resin就会为这个WEB浏览器提供SSL认证的公共密钥,然后,这个WEB浏览器就可以使用这个公共密钥来加密数据,而Resin将使用WEB服务器的SSL私钥对加密的数据进行解密。
Windows环境下使用TOMCAT搭建JSP运行环境:
OS:Windows XP/Windows 7/Windows 2003
J2SDK:j2sdk150
TOMCAT:Apache Tomcat 55
环境变量配置:
J2SDK安装目录:C:/Program Files/Java/j2sdk150
TOMCAT安装目录:D:/Tomcat 55
变量名:JAVA_HOME 变量值:C:/Program Files/Java/j2sdk150
变量名:TOMCAT_HOME 变量值:D:/Tomcat 55
变量名:PATH 变量值:C:/Program Files/Java/j2sdk150/bin
变量名:classpath 变量值:C:/Program Files/Java/j2sdk150/jre/lib/rtjar;C:/Program Files/Java/j2sdk150/lib/dtjar;C:/Program Files/Java/j2sdk150/lib/toolsjar; (最后有个英文状态下的点“”,注意输入法)
对classpath解释一下:对classpath设置了4个路径,每个用分号隔开,最后一个点“”代表当前路径,classpath这样设置的目的出于让系统能运行Java程序,比如“”设置不设置对解释执行JSP就没影响,有影响的只有“C:/Program Files/Java/j2sdk150/jre/lib/rtjar”
TOMCAT端口设置:
在安装TOMCAT的时候有提示选择端口,TOMCAT默认8080,一般WEB服务都用80端口,在TOMCAT的配置文件serverxml(D:/Tomcat 55/conf下)中找到“port="8080"”,将8080改为80
TOMCAT虚拟目录设置:
TOMCAT启动后,默认的根目录是D:/Tomcat 55/webapps/ROOT
设置虚拟目录的方法:编辑serverxml,找到</Host>,在这前面加上:
<Context path="/jsp" docBase="d:/jsp" debug="0" reloadable="true" crossContext="true"></Context>
解释:path="/jsp"指虚拟目录的名字,可以在D:/Tomcat 55/webapps下创建一个空的目录命名为jsp,docBase="d:/jsp"代表虚拟目录实际指向的路径,这里指向d:/jsp,以后就在这里面创建jsp文件,使用http://XXXXXXXXX/jsp/xxxjsp访问。配置后需要重启TOMCAT
requestgetHeader(“User-agent”)返回客户端浏览器的版本号、类型
getHeader(String name):获得http协议定义的传送文件头信息,
request getMethod():获得客户端向服务器端传送数据的方法有GET、POST、PUT等类型
request getRequestURI():获得发出请求字符串的客户端地址
request getServletPath():获得客户端所请求的脚本文件的文件路径
request getServerName():获得服务器的名字
requestgetServerPort():获得服务器的端口号
requestgetRemoteAddr():获得客户端的IP地址
requestgetRemoteHost():获得客户端电脑的名字,若失败,则返回客户端电脑的IP地址
requestgetProtocol():
requestgetHeaderNames():返回所有request header的名字,结果集是一个Enumeration(枚举)类的实例
1、什么是Java Server Pages
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
2、为什么使用JSP?
JSP程序与CGI程序有着相似的功能,但和CGI程序相比,JSP程序有如下优势:
性能更加优越,因为JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。
服务器调用的是已经编译好的JSP文件,而不像CGI/Perl那样必须先载入解释器和目标脚本。
JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。
JSP页面可以与处理业务逻辑的 Servlet 一起使用,这种模式被Java servlet 模板引擎所支持。
最后,JSP是Java EE不可或缺的一部分,是一个完整的企业级应用平台。这意味着JSP可以用最简单的方式来实现最复杂的应用。
3、JSP的优势
以下列出了使用JSP带来的其他好处:
与ASP相比:JSP有两大优势。首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。第二点就是JSP易于移植到非MS平台上。
与纯 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
与SSI相比:SSI无法使用表单数据、无法进行数据库链接。
与JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。
与静态HTML相比:静态HTML不包含动态信息。
客户端在通过浏览器访问服务器端存放的JSP时,JSP中的java代码、标签等是在服务器端运行的,生成普通的html,最终返回客户端的是这些html,这样解释明白么。
JSP在服务器端是被编译成为servlet的,这些servlet负责提供html的输出,因此说JSP和Servlet一样属于服务器端的技术。但是你从地址栏里输入的可能有jsp后缀,并不表示它就是客户端运行的。
0条评论