Apache2.0.63+Weblogic 8.1.4 2-way SSL

起因:

客户反馈Weblogic 8.1.4配置了全球服务器证书(双向SSL)后性能急剧下降,而不配置SSL时性能不错。

【系统运行慢时,weblogic并发资源被耗尽,查询显示,并发大部分在占用“SSL连接”】

 

这种问题可不太好处理,不管是不是Weblogic的问题,都要参考厂商的资料,但一般我们是很难获得这种国外公司的支持的。周末就要出差了,我得准备一个保底方案。考虑Apache上运行SSL的性能是可以信任的,我准备的保底方案是Apache(run 2-way SSL)->Weblogic(HTTP),这样应用双向SSL时把SSL的压力扔给Apache而不影响Weblogic,我想肯定是可行的。

 

本来打算使用Apache 2.2.x+Weblogic 9.1.0进行测试,但一来在Weblogic 9.1.0安装目录中找不到mod_wl_20.so,二来在网上搜索到mod_wl_20.so在Apache 2.2.x运行不了的先例,而且还没找到解答。而我现在最重要的是解决客户的问题,没必要第一个吃螃蟹。

 

由于BEA被Oracle收购,Weblogic的早期版本从官网上都找不到下载链接了。花了些功夫,找到链接http://download2.bea.com/pub/platform/81/server814_win32.exe

 

配置Apache2.0.63+Weblogic 8.1.4 2的方法是:

1、复制D:/bea/weblogic81/server/bin/mod_wl_20.so到C:/Program Files/Apache Group/Apache2/modules

2、编辑httpd.conf,增加:

loadmodule weblogic_module modules/mod_wl_20.so
<IfModule mod_weblogic.c>
  WebLogicHost localhost
  WebLogicPort 7001
</IfModule>
<Location /CertLogonWebDemo>
  SetHandler weblogic-handler
</Location>
这样配置访问http://localhost/CertLogonWebDemohttp://localhost:7001/CertLogonWebDemo就可以看到完全一样的内容了。

 

配置apache的双向SSL对我来说简直轻车熟路,时间不早,不再赘述。

 

但是最重要的问题出现了,在java代码里使用request.getAttribute("javax.servlet.request.X509Certificate")返回值为null。也就是说Apache并没有把client certificate传递给Weblogic,因此运行于Weblogic上的web application无法认证客户端的证书,这是完全不能接受的。

 

我先认为应该是Weblogic Apache HTTP Server Plug-In(就是mod_wl_20.so的配置)的问题,花了很大精力却始终不能解决。相关文档地址如下:

http://edocs.bea.com/wls/docs81/plugins/apache.html

 

费劲心思终于找到https://support.bea.com/application_content/product_portlets/support_patterns/wls/SSLAndPlug-inPattern.html#ERROR_3_%96_Client_cert_not_exported_to

大概是要配置apache支持SSLExportClientCertificates选项,但是把该选项添加到Apache 2.0.63时,Apache启动又报错了,原来SSLExportClientCertificates是Apache 1的配置选项。

再查到http://phpeye.com/apachemanual/ssl/ssl_compat.html,根据文档在ssl.conf中增加

SSLOptions +ExportCertData

刷新https://localhost/CertLogonWebDemo,终于搞定。

 

唉,现在又到2:14 am了。洗澡!睡觉!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章