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了。洗澡!睡覺!

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