Weblogic安全配置:HTTPS协议的深度解析与实战应用
一、引言
随着信息技术的飞速发展,Weblogic作为业界领先的应用服务器之一,广泛应用于各种企业级应用中。
为了确保数据传输的安全性和隐私保护,使用HTTPS协议进行Weblogic的安全配置至关重要。
本文将深度解析HTTPS协议,并介绍如何在Weblogic中进行实战应用。
二、HTTPS协议概述
HTTPS是一种通过计算机网络进行安全通信的传输协议,它在HTTP协议的基础上添加了SSL/TLS加密技术。HTTPS协议的主要功能包括:
1. 加密传输:利用SSL/TLS技术对通信内容进行加密,确保数据在传输过程中的安全性。
2. 身份验证:通过数字证书实现服务器和客户端的身份验证,防止通信过程中的身份伪造。
三、HTTPS协议的工作原理
HTTPS协议的工作原理主要包括以下几个步骤:
1. 客户端向服务器发送请求,要求建立SSL/TLS连接。
2. 服务器响应请求,返回数字证书及公钥。
3. 客户端验证服务器数字证书,验证通过后生成随机数并加密生成密钥,然后将密钥发送给服务器。
4. 服务器使用私钥解密密钥,建立SSL/TLS连接。
5. 客户端和服务器开始通过SSL/TLS连接进行加密通信。
四、Weblogic中的HTTPS安全配置
在Weblogic中配置HTTPS协议,主要包括以下几个步骤:
1. 生成数字证书和私钥:使用openssl等工具生成数字证书和私钥。
2. 配置SSL监听端口:在Weblogic的监听配置中,添加SSL监听端口。
3. 配置SSL证书和私钥路径:将生成的数字证书和私钥路径配置到SSL监听端口。
4. 配置访问控制:根据实际需求配置访问控制策略,如IP过滤、用户认证等。
五、实战应用
下面是一个简单的实战应用示例,演示如何在Weblogic中配置HTTPS协议:
1. 生成数字证书和私钥:使用openssl等工具生成自签名数字证书和私钥。也可以向权威证书颁发机构申请证书。
2. 在Weblogic控制台中,找到监听配置页面,添加一个新的SSL监听端口,如443。
3. 在新添加的SSL监听端口配置页面,找到证书和私钥配置选项,将生成的数字证书和私钥路径配置到对应位置。
4. 配置访问控制策略:根据实际需求配置IP过滤、用户认证等策略。例如,可以只允许特定IP地址的客户端访问,或者要求客户端提供用户名和密码进行身份验证。
5. 保存配置并重启Weblogic服务器,使配置生效。
6. 通过HTTPS协议访问Weblogic服务器,验证配置是否成功。
六、注意事项与常见问题解决方案
在配置HTTPS协议时,需要注意以下几点及常见问题解决方案:
1. 选择合适的证书类型:根据实际需求选择合适的证书类型,如自签名证书或权威证书颁发机构颁发的证书。
2. 配置正确的证书路径:确保配置的证书路径正确无误,避免配置错误导致通信失败。
3. 配置正确的监听端口:确保配置的SSL监听端口正确无误,并且没有被其他服务占用。
4. 安全性考虑:在实际生产环境中,应使用更高级别的加密技术,如TLS 1.2或TLS 1.3,以提高通信安全性。
5. 常见问题解决方案:如遇到通信失败等问题,可检查数字证书是否过期、配置是否正确等,并根据实际情况进行排查和解决。
七、总结
本文深度解析了HTTPS协议的工作原理,并介绍了如何在Weblogic中进行实战应用。
通过合理配置HTTPS协议,可以确保Weblogic数据传输的安全性和隐私保护。
在实际应用中,需要根据实际需求选择合适的证书类型、配置正确的证书路径和监听端口,并注意安全性考虑及常见问题的解决方案。
weblogic安全设置
统管理方面,Web应用。连接层面,可以启用HTTPS、SSL应用层面,情况各有不同,请参考文档中“Ensuring the Security of Your Production Environment”的内容、WebService分别有各自的处理方法,也有对应的文档说明,例如“Securing WebLogic Web Services”
Tomcat中JSP引擎工作原理?
JSP运行环境:
执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat。
把这些支持JSP的web服务器配置好后。
就可以再客户端通过浏览器来访问JSP页面了。
默认端口一般是7001.
JSP生命周期:
JSP处理请求的方法就是把这些请求都统一看做Servlet。
由于这个原因,JSP的很多功能和生命周期,都由Java Servlet技术标准定义的。
这种限制,在动态内容方面更加明显。
所以学习JSP的时候,需要温习Servlet的内容和标准。
JSP网络应用服务器框架:
在符合J2EE规范的服务器构建起来之后,就可以编写JSP页面了,在HTML页面中嵌入JSP脚本,该页面就成为JSP页面了。
JSP脚本用特定的标记括起来,如<%…%>,或者<JSP>…</JSP>。
JSP的工作流程如下:当其读到HTML的代码的时候,就直接输出到客户端,而如果读到嵌入JSP脚本的时候,就需要对这些脚本进行另外的翻译和处理,得到输出之后再输出到客户端。
下面通过一个简单页面编写来了解JSP网络应用的框架:
客户端交互
JSP的大部分工作就是与客户端进行交互。
客户端一般指的是浏览器,它们与置于服务器端得JSP页面进行交互。
JSP脚本中所有的Java语句都是在服务器执行,服务器接受客户端提交的请求,通过一定的处理之后,将结果返回给客户端,客户端得到的仅仅是HTML代码。
下面是一个JSP的HelloWorld程序代码:
2.交互过程的流程
在一般的客户端和服务器端的交互中,是用HTTP协议,客户端通过下面4个步骤也服务器段进行交互:
(1)客户端和服务器端建立连接
(2)发送客户端请求
(3)服务器返回应答给客户
(4)客户端关闭连接
所有的请求都是由客户端主动发出的,而服务器一直出于被动的监听状态。
用户在浏览器键入要访问的地址,按回车键确认后,浏览器开始与服务器建立连接,从这时开始,就开始了一次交互过程。
浏览器通过一段时间的等待后,从服务器得到响应,并且把相应的信息以HTML方式呈现给用户。
用户在浏览网站的过程中,实际上包含了很多这样的交互应答过程。
在客户端与JSP页面的交互过程中,只有服务器接收请求和返回应答的动作可能不一样,其他与上面过程基本一致。
基本情况如下:
(1)服务器在收到一个请求后首先要分析这个请求,如果请求的页面只是一般的HTML页面,服务器就直接读出HTML页面并返回给客户端
(2)如果客户端请求的是JSP页面,服务器调用JSP引擎翻译处理所请求的JSP页面,并将翻译和处理之后的HTML返回给客户端
(3)如果遇到JavaBeans组件,JSP引擎将调用相应的JavaBeans组件,得到JavaBeans的返回值,最后返回给JSP页面
引擎的工作原理
当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤:
(1)将JSP页面翻译成一个Servlet,这个Servlet是一个java文件,同时也是一个完整的java程序
(2)JSP引擎调用java编译器对这个Servlet进行编译,得到可执行文件class
(3)JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端
以上三个步骤仅仅在JSP页面第一次被访问时才会执行,以后的访问速度会因为class文件已经生成而大大提高。
当JSP引擎街道一个客户端的访问请求时,首先判断请求的JSP页面是否比对应的Servlet新,如果新,对应的JSP需要重新编译。
4.对请求信息的处理
在大部分的交互过程中,一个JSP页面首先对用户提出的请求进行分析,然后从请求中得到有用的数据,比如接收用户提交的数据或者请求的方法,然后进行相应的处理。
而这就需要了解得到传入参数的方法和得到用户其他信息的方法。
(1)得到传入参数的方法
在交互过程中,服务器必须从客户端得到一些数据,来帮助处理过程的进行。
这些数据包括用户身份验证数据(如用户名、密码等)以及其他中要信息。
而这些数据的载体,就是用户提交的请求。
请求的组成主要有两部分,一是头信息。
头信息包含了以下信息:请求的方法(GET和POST)、请求的URL和浏览器信息。
其他信息包含了一些数据信息。
首先要了解的是GET方法发送请求时,这种方法是客户端用来向服务器段请求信息的,所以在请求中不包含信息体。用户只能把请求的内容作为参数附加在URL后面进行发送,参数之间用“&”符号隔开,如代码:一个典型的GET请求的表单
(代码中有一个表单,表单在定义的时候,定义了属性method=“GET”,这表明表单提交的方法是GET。
这个表单向服务器提交两个参数,其中一个是username,缺省值为aaa,另外一个是password,其缺省值是。
)
这个页面只是得到了输入数据,只有才能实现提交这个页面的数据。这就是需要用到JSP了,代码如下
在这个JSP页面中是用了JSP的内置对象request的两个方法,一个是getMethod,用来获取当前请求的类型,另一个是getParameter,用来获取指定参数的值。
在中单击submit按钮,就可以显示表单请求方法,用户名以及密码等信息。
(2)得到其他信息的方法
得到非用户输入的其他参数信息,就需要用到其他的方法。
如下所示是一个得到客户端信息的简单程序。
根据这个程序我们可以初步了解如何得到客户端信息的大致思路。
代码如下:
怎样在应用程序中使用SSL
HTTPS实际是SSL over HTTP, 该协议通过SSL在发送方把原始数据进行加密,在接收方解密,因此,所传送的数据不容易被网络黑客截获和破解。
本文介绍HTTPS的三种实现方法。
方法一 静态超链接这是目前网站中使用得较多的方法,也最简单。
在要求使用SSL进行传输的Web网页链接中直接标明使用HTTPS协议,以下是指向需要使用SSL的网页的超链接:SSL例子需要说明的是,在网页里的超链接如果使用相对路径的话,其默认启用协议与引用该超链接的网页或资源的传输协议相同,例如在某超链接“”的网页中包含如下两个超链接:SSL链接非SSL链接那么,第一个链接使用与“”相同的传输协议HTTPS,第二个链接使用本身所标识的协议HTTP。
使用静态超链接的好处是容易实现,不需要额外开发。
然而,它却不容易维护管理; 因为在一个完全使用HTTP协议访问的Web应用里,每个资源都存放在该应用特定根目录下的各个子目录里,资源的链接路径都使用相对路径,这样做是为了方便应用的迁移并且易于管理。
但假如该应用的某些资源要用到HTTPS协议,引用的链接就必须使用完整的路径,所以当应用迁移或需要更改URL中所涉及的任何部分如:域名、目录、文件名等,维护者都需要对每个超链接修改,工作量之大可想而知。
再者,如果客户在浏览器地址栏里手工输入HTTPS协议的资源,那么所有敏感机密数据在传输中就得不到保护,很容易被黑客截获和篡改!方法二 资源访问限制为了保护Web应用中的敏感数据,防止资源的非法访问和保证传输的安全性,Java Servlet 2.2规范定义了安全约束(Security-Constraint)元件,它用于指定一个或多个Web资源集的安全约束条件;用户数据约束(User-Data-Constraint)元件是安全约束元件的子类,它用于指定在客户端和容器之间传输的数据是如何被保护的。
用户数据约束元件还包括了传输保证(Transport-Guarantee)元件,它规定了客户机和服务器之间的通信必须是以下三种模式之一:None、Integral、Confidential。
None表示被指定的Web资源不需要任何传输保证;Integral表示客户机与服务器之间传送的数据在传送过程中不会被篡改; Confidential表示数据在传送过程中被加密。
大多数情况下,Integral或Confidential是使用SSL实现。
这里以BEA的WebLogic Server 6.1为例介绍其实现方法,WebLogic是一个性能卓越的J2EE服务器,它可以对所管理的Web资源,包括EJB、JSP、Servlet应用程序设置访问控制条款。
假设某个应用建立在Weblogic Server里的/mywebAPP目录下,其中一部分Servlets、JSPs要求使用SSL传输,那么可将它们都放在/mywebAPP/sslsource/目录里,然后编辑/secureAPP/Web-INF/文件,通过对的设置可达到对Web用户实现访问控制。
当Web用户试图通过HTTP访问/sslsource目录下的资源时,Weblogic Server就会查找里的访问约束定义,返回提示信息:Need SSL connection to access this resource。
资源访问限制与静态超链接结合使用,不仅继承了静态超链接方法的简单易用性,而且有效保护了敏感资源数据。
然而,这样就会存在一个问题: 假如Web客户使用HTTP协议访问需要使用SSL的网络资源时看到弹出的提示信息: Need SSL connection to access this resource,大部分人可能都不知道应该用HTTPS去访问该网页,造成的后果是用户会放弃访问该网页,这是Web应用服务提供商不愿意看到的事情。
方法三 链接重定向综观目前商业网站资源数据的交互访问,要求严格加密传输的数据只占其中一小部分,也就是说在一个具体Web应用中需要使用SSL的服务程序只占整体的一小部分。
那么,我们可以从应用开发方面考虑解决方法,对需要使用HTTPS协议的那部分JSPs、Servlets或EJBs进行处理,使程序本身在接收到访问请求时首先判断该请求使用的协议是否符合本程序的要求,即来访请求是否使用HTTPS协议,如果不是就将其访问协议重定向为HTTPS,这样就避免了客户使用HTTP协议访问要求使用HTTPS协议的Web资源时,看到错误提示信息无所适从的情况,这些处理对Web客户来说是透明的。
实现思想是:首先创建一个类,该类方法可以实现自动引导Web客户的访问请求使用HTTPS协议,每个要求使用SSL进行传输的Servlets或JSPs在程序开始时调用它进行协议重定向,最后才进行数据应用处理。
J2EE提供了两种链接重定向机制。
第一种机制是RequestDispatcher接口里的forward()方法。
使用MVC(Model-View-Controller)机制的Web应用通常都使用这个方法从Servlet转移请求到JSP。
但这种转向只能是同种协议间的转向,并不能重定向到不同的协议。
第二种机制是使用HTTPServletReponse接口里的sendRedirect()方法,它能使用任何协议重定向到任何URL,例如(“”);此外,我们还需使用到Java Servlet API中的两个方法:ServletRequest接口中的getScheme(),它用于获取访问请求使用的传输协议;HTTPUtils类中的getRequestUrl(),它用于获取访问请求的URL,要注意的是该方法在Servlet 2.3中已被移到HTTPServletRequest接口。
以下是实现协议重定向的基本步骤:1. 获取访问的请求所使用的协议;2. 如果请求协议符合被访问的Servlet所要求的协议,就说明已经使用HTTPS协议了,不需做任何处理;3. 如果不符合,使用Servlet所要求的协议(HTTPS)重定向到相同的URL。
例如,某Web用户使用HTTP协议访问要求使用HTTPS协议的资源BeSslServlet,敲入“URL:”,在执行BeSslServlet时首先使用ProcessSslServlet.processSsl()重定向到,然后 BeSslServlet与客户浏览器之间就通过HTTPS协议进行数据传输。
以上介绍的仅是最简单的例子,是为了对这种重定向的方法有个初步的认识。
假如想真正在Web应用中实现,还必须考虑如下几个问题:● 在Web应用中常常会用到GET或Post方法,访问请求的URL中就会带上一些查询字串,这些字串是使用getRequesUrl()时获取不到的,而且在重定向之后会丢失,所以必须在重定向之前将它们加入到新的URL里。
我们可以使用()来获取GET的查询字串,对于Post的Request参数,可以把它们转换成查询串再进行处理。
● 某些Web应用请求中会使用对象作为其属性,必须在重定向之前将这些属性保存在该Session中,以便重定向后使用。
● 大多数浏览器会把对同一个主机的不同端口的访问当作对不同的主机进行访问,分用不同的Session,为了使重定向后保留使用原来的Session,必须对应用服务器的Cookie 域名进行相应的设置。
以上问题均可在程序设计中解决。
通过程序自身实现协议重定向,就可以把要求严格保护的那部分资源与其他普通数据从逻辑上分开处理,使得要求使用SSL的资源和不需要使用SSL的资源各取所需,避免浪费网站的系统资源。

