- 浏览: 1608127 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (603)
- T_java (145)
- T_script&ASP (51)
- T_C/C++ (25)
- T_PowerBuilder (11)
- T_Database (53)
- T_odoo (7)
- T_应用服务器 (50)
- T_专_条形码 (6)
- T_专_负载均衡器 (4)
- T_操作系统 (94)
- T_信息安全 (41)
- T_专_搜索引擎 (14)
- T_L_PHP (58)
- T_L_Delphi (18)
- T_L_.NET、C#、VisualStudio (25)
- T_L_Objective-C (6)
- T_移动开发 (53)
- T_网络 (109)
- T_大数据 (2)
- T_嵌入式 (2)
- T_小众技术 (24)
- T_未分类 (58)
- L_旅游印记 (1)
- L_生活随笔 (48)
- L_中国文化 (18)
- L_户外与生存 (0)
最新评论
-
csbean4004:
不知道哪传来得恶习,发帖子不好好发,故意弄错一些东西,很讨厌
让HTML5支持后置摄像头 -
withthewind:
终于找到一个可以用的了。。。
如何用VBA取得Word文档中的标题前面的序号 -
busbby:
兄弟,无法下载,说文件不完整
一个好用的Outlook ost格式文件转pst文件的工具 -
yijavakevin:
密码啊~解压密码多少?
一个二维条形码组件 -
vipbooks:
你给的那个链接根本无法下载,跳到官网看了下最新版12M,但点下 ...
十步以内完成精细web打印
通过Proxy向Weblogic集群传递客户端证书
过Weblogic集群的人都知道可以使用Proxy来分发请求和实现负载均衡,这种配置方式既灵活又十分经济,不需要额外购买昂贵的硬件负载均衡设置,十分适合中小企业采用。
在企业应用中,数据安全是非常重要的,为了保证数据的安全性,最理想也最简便的办法就是使用SSL。通过使用CA证书,服务器和客户机都能对对方的身份进行认证,在确信对方身份是可信任之后再进行业务操作,并且网络上传输的数据也是加密的,这样就能基本保证数据是安全的。一般情况下,SSL对服务器和客户机双方身份确认是由浏览器和WEB服务器来完成的,无需编程。但是,有时候应用系统也需要能取到客户证书信息,比如需要在应用中对用户证书中的用户身份信息与用户登录应用系统的帐号进行比对,以进一步确认用户身份。
对于多数的硬件负载均衡器,一般都支持透明的双向SSL,即服务器和用户证书都可以穿透负载均衡器到达对方,应用系统根本感觉不到负载均衡器的存在。但是,在使用Proxy实现的集群中,应用系统中能否正常拿到客户端证书信息呢?当然可以!
前两天接到一个客户的求援,说是他们的一个应用系统,因为不知是什么原因,硬件负载均衡器用不起来,只能用Proxy来实现负载均衡,现在需要启用SSL,但是在服务器端却取不到客户证书信息。实话说,虽然我知道在Proxy的情况下,服务器肯定有办法拿到客户证书信息的,但以前也主要在有硬件负载均衡器的情况下配置集群,还没有专门去研究Proxy与SSL的问题,惭愧啊。既然今天遇上这事儿了,那就抽点时间演练一遍。说干就干,脱下外套,操家伙上。
一、搭建环境:
搭这个环境软件都是具备的,自己机器上装有Weblogic8.1,只需要配置几个以上Server来模拟集群环境即可。我建了两个domain,一个名为proxydomain,在其上建了一个名为proxyserver的Server,另一个domain名为bizdomain,其上建了两个Server bixserver1和bizserver2来充当集群中的业务服务器。当然,业务服务器上布署的应用可比HelloWorld复杂很多啊,呵呵(下面会详细讲啦)。
二、签发CA证书
为了使用SSL,CA证书是不可少的。为了能得到一组互相信任的服务器证书和客户证书,我没有使用weblogic自带的demo证书来配置SSL,而是用OpenSSL新签发了一组证书,怎么用OpenSSL来签发证书超出本次课程范围,想知道的同学可以另外交钱学习啊,呵呵。签发的证书信息如下:
服务器证书
客户证书
服务器证书可以弄一个keystore装起来,再配置到weblogic上,我嫌麻烦,就直接把证书和私钥拖到服务器上布署了(大家别学我),而客户证书和私钥需要打包成pfx格式再安装到操作系统中才可以。
三、配置proxy server
配置proxy server很简单,只需要在proxydomain> Servers> proxy 页的General 属性页中,把“ SSL Listen Port Enabled”和“Client Cert Proxy Enabled”勾选上,“SSL Listen Port”改成443(SSL默认端口)。然后再到“Keystores & SSL”属性页上,在“SSL Configuration”下面的分别设置:
Private Key File Name:=certs/server_key.pem
Server Certificate File Name:=certs/server.pem
Trusted CA File Name:=certs/root.cer
其中certs是CA证书保存目录,物理路径是 %weblogic安装目录%/user_projects/domains/proxydomain
在“Advanced Options-->Server Attributes”下面设置:
Two Way Client Cert Behavior:=Client Certs Requested And Enforced
含义就是强制要求客户端有证书才能连接
然后再在proxydomain/applications目录下新建一个proxy目录(你叫其他名称也可以,不会吃官司的),再在其下建一个目录WEB-INF(必须是这个名,大写),然后建两个空的XML文件:web.xml和weblogic.xml,在web.xml里填上:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>weblogic代理测试</display-name>
<description>weblogic代理测试</description>
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>weblogic.servlet.proxy.HttpClusterServlet</servlet-class>
<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>localhost:90|localhost:91</param-value>
</init-param>
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>ON</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
</web-app>
在weblogic.xml里填上:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
</charset-params>
<context-root>/</context-root>
</weblogic-web-app>
再把proxydomain/applications/proxy作为一个web应用布署到proxyserver上,这样,proxy服务器就配好了,启动一下,如果看到控制台有报错,那么你可以去买彩票了,小概率事件发生了。
四、配置bizserver
在bizdomain/applications目录下新建一个目录biz,里面再建一个WEB-INF,然后照样放两个XML:web.xml和weblogic.xml。web.xml的内容是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>weblogic代理测试_业务服务器</display-name>
<description>weblogic代理测试_业务服务器</description>
</web-app>
Weblogic.xml的内容是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
</charset-params>
<context-root>/</context-root>
</weblogic-web-app>
然后在bizdomain/applications/biz目录下放一个非常复杂的JSP:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.net.InetAddress" %>
<%@ page import="java.security.cert.*" %>
<%
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
<%
String serverIP = InetAddress.getLocalHost().getHostAddress();
int serverPort = request.getServerPort();
String clientIP = request.getRemoteAddr();
try{
java.util.Enumeration enums = request.getHeaderNames();
java.util.ArrayList list = new java.util.ArrayList();
while(enums.hasMoreElements()) {
String name = (String)enums.nextElement();
out.print(name+":");
out.println(request.getHeader(name)+"<br>");
}
}catch(Exception ex) {
out.println(ex.getMessage());
ex.printStackTrace();
}
%>
<center>
当是客户机IP是:<br>
<font color="red"><b><%=clientIP%></b></font>
<br><br>
当前连接的服务器是:<br>
<font color="red"><b><%=serverIP%>:<%=serverPort%></b></font>
<br><br>
</center>
<%
String certstr="";
X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
if(certs!=null) {
X509Certificate mycert=(X509Certificate)certs[0];
//out.println("Has Cert from Client!");
certstr=mycert.toString();
} else
out.println("could not get certificate from client!");
%>
Your Certificate(javax.servlet.request.X509Certificate) is Encode
As:
<br>
<%=certstr%>
</body>
接着再把biz作为web应用程序布署到bizserver1和bizserver2上。
五、配置Cluster
在bizdomain的console上,在 bizdomain> Clusters 页点“Configure a new Cluster...”建一个集群,其中:
General 下:
Name = MyCluster
Cluster Address:=localhost:90,localhost:91
Default Load Algorithm:=round-robin
然后在“Servers”页把bizserver1和bizserver2选择到MyCLuster。
这样,集群也配完了。把刚才配置的这些机器都启动起来。
六、测试
打开浏览器,输入https://SHENG_NOTEBOOK/index.jsp,如果不出意外的话,应该会显示以下内容:
可以看到,在mycluster中的服务器上已经得到了客户证书。
如果连接服务器不成功的话,看看客户证书有没有安装??
另外,用Apache作Proxy也是可以的,配置与本文相差不太大。
发表评论
-
SpringBoot Fat Jar解压运行
2018-06-28 21:40 2258SpringBoot已经成为当前最流行的微服务 ... -
一句话实现五星评分显示
2018-06-05 08:31 997Python: rate = 1 #rate 取值 ... -
来算google的可视化编程工具——Blockly,不仅仅是玩具
2017-10-16 21:34 33119Blockly - 来自Google的可 ... -
安卓动态分析工具 Inspeckage
2017-08-07 08:46 0工具介绍 一个基于Xposed 开发的应用动态分析工具 g ... -
Android逆向之旅---静态方式破解微信获取聊天记录和通讯录信息
2017-08-07 08:37 0一、猜想数据存放路径 微信现在是老少皆宜,大街小巷都在使用 ... -
破解微信数据库 并查询数据上传服务器
2017-08-07 08:29 0由于工作需求破解了微信的数据库 并获取想要的信息上传服 ... -
安卓黑科技之HOOK详解
2017-08-07 08:21 0本文带大家进入到安卓另一个世界 互联网攻防大战 Xpos ... -
安卓逆向之基于Xposed-ZjDroid脱壳
2017-08-07 08:18 0前言 之前介绍了普通常见的反编译模式 但对于使用了 360 ... -
十步以内完成精细web打印
2017-06-21 11:44 7367注意: 康虎云报表组 ... -
浏览器端精准打印或套打组件
2017-01-18 13:05 6695注意: 康虎云报表 ... -
疯狂软件对Oracle放弃Java EE的看法
2016-08-14 22:38 525来源:http://javaligang ... -
几个Java相关的思维导图
2016-03-17 13:07 954来源:http://blog.csdn.net/jackf ... -
jasperReport Applet 打印
2016-02-01 16:33 868Applet方式的原理是本地下载Applet以及Jas ... -
为Java说句公道话
2016-01-24 10:59 712为Java说句公道话 有些 ... -
Mybatis Generator配置详解(中文)_转
2015-12-17 16:44 917来自: http://www.jianshu.com/p/e ... -
一个提供大量数据模型的网站
2015-12-17 14:00 981网站地址是:http://www.databaseansw ... -
采用ajp代理模式配置Apache+tomcat实现负载均衡(转)
2015-11-13 10:22 869这一种方法,配置简单,性能也高。附AJP介绍: AJP ... -
MyBatis配置文件修改侦测及重载的实现
2015-07-31 13:53 2334MyBatis配置文件修改侦测及重载的实现: /** ... -
Spring optional @PathVariable?
2015-07-09 13:13 913Q: Is it possible to somehow ... -
The forked VM terminated without saying properly goodbye. VM crash or System.exi
2015-07-07 18:22 4289The forked VM terminated witho ...
相关推荐
WebLogic集群环境搭建的知识点主要包括以下几个方面: 1. WebLogic集群环境的概念 WebLogic集群是由多个运行同一WebLogic Server软件的服务器节点组成,可以提供高可用性和可扩展性的应用服务器环境。集群中的各个...
此外,通过负载均衡,WebLogic集群可以将来自客户端的请求均匀分配到各个服务器,避免单点过载。 在WebLogic集群中集成Coherence,我们可以利用Coherence的数据网格功能,创建一个分布式、高性能的缓存层。...
集群中的每个节点都运行着一个 WebLogic Server 实例,并且这些实例通过共享的 JNDI 命名服务互相通信。 ##### 1.5 安装准备 - **浮动 IP**:浮动 IP 用于外部访问集群,确保集群可以被外部客户端发现并访问。 - **...
8. **配置代理服务器(proxyServer)**:如果需要,可以额外配置一个代理服务器,如`10.21.18.40:7004`,用于接收客户端请求并分发到集群。 9. **验证和测试**:最后,通过发送HTTP请求到代理服务器,检查集群是否...
WebLogic集群是Oracle WebLogic Server的一种高级特性,它允许在多台服务器上分布和复制应用服务,以提高可用性、可扩展性和性能。在本文档中,我们将深入探讨WebLogic 8.1集群的概念和配置。 **Domain** Domain是...
WebLogic Proxy Server是Oracle WebLogic Server的一个重要组件,它作为一个反向代理服务器,用于在客户端和WebLogic集群之间提供透明的通信。这个组件允许你通过单一的入口点访问集群中的多个服务器实例,从而实现...
通过上述步骤,我们可以在WebLogic 8.0 SP3集群环境中成功配置SSL,从而实现安全的数据传输。SSL配置不仅涉及到证书的准备与安装,还需要细致地调整WebLogic服务器的各项设置。确保正确配置SSL有助于提升系统的整体...
- 集群环境配置:包括Admin Server、Managed Server和Proxy Server的配置,例如,PC1和PC2上各部署一台Managed Server,共用同一Admin Server。 - 创建新Domain:使用Configuration Wizard,设置Domain名、位置、...
weblogic集群搭建 单播 组播 proxy culs
本文将详细介绍如何在WebLogic Server 8.1上配置集群,并通过Proxy Server实现对集群的访问。 **一、WebLogic集群的基础概念** WebLogic集群是多个独立的WebLogic Server实例的集合,这些实例共享相同的域配置,...
- 通过 Proxy Server 或直接通过 Managed Server 访问集群。 #### 五、注意事项 - 确保所有 Server 的配置一致,避免版本冲突或不兼容问题。 - 在生产环境中,建议使用静态 IP 地址以确保集群的稳定性和安全性。 -...
通过以上步骤,我们可以成功地在Linux环境下部署Oracle WebLogic Server 11g集群。该集群不仅提高了系统的可用性,还增强了系统的扩展性和性能。此外,通过合理的规划和配置,还可以进一步优化集群的表现,满足更...
### WebLogic 12.1.3 集群部署详解 #### 一、WebLogic 12.1.3 集群部署基础 ...通过上述步骤,我们可以了解到WebLogic 12.1.3集群部署的基础流程和技术要点。这对于企业级应用的部署具有重要的指导意义。
- **Apache与WebLogic集成**:配置Apache作为反向代理,通过mod_proxy模块将HTTP请求转发到WebLogic集群。 在实际操作中,还需要配置WebLogic集群的详细设置,如集群名称、服务器实例、网络通道等,并确保Apache与...
本文将详细介绍如何在 WebLogic Server 9.2 上配置集群,以及如何通过 Proxy Server 访问集群。 ### 预备知识:Domain 和 Server **Domain** 是 WebLogic Server 的基本管理单元,它由一个或多个服务器实例组成,...
6. **配置网络代理**:`proxy.cmd`可能用于配置WebLogic Proxy Plugin,这是一个用于负载均衡的组件,它可以隐藏集群的内部结构,将客户端请求路由到集群中的不同服务器。未命名.GIF可能是一张显示配置过程或集群...