<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    David.Turing's blog

     

    [原創]Apache Proxy with Weblogic Cluster under SSL

    有個兄弟在做Weblogic Cluster與Apache Proxy的SSL,他的問題是,當部署在Weblogic中的Web應用使用了SSL重定向(比如但你要訪問Weblogic的關鍵資源的時候,你需要重定向到SSL),比如下面的標準J2EE的Web.xml部署:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4"
    ?xmlns="?xmlns:xsi="?xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee?<display-name>ssl</display-name>
    ?<welcome-file-list>
    ??<welcome-file>index.html</welcome-file>
    ??<welcome-file>index.htm</welcome-file>
    ??<welcome-file>index.jsp</welcome-file>
    ??<welcome-file>default.html</welcome-file>
    ??<welcome-file>default.htm</welcome-file>
    ??<welcome-file>default.jsp</welcome-file>
    ?</welcome-file-list>

    ?<security-constraint>
    ??<display-name>Example SSL Security Constraint</display-name>

    ??<web-resource-collection>
    ???<web-resource-name>SSL Protected Area</web-resource-name>
    ???<url-pattern>/protected/*</url-pattern>
    ??</web-resource-collection>

    ??<user-data-constraint>
    ???<transport-guarantee>CONFIDENTIAL</transport-guarantee>
    ??</user-data-constraint>
    ?</security-constraint>
    </web-app>

    由于當前的URL到達了/propected,Web服務器發現客戶端還是走HTTP 7001方式,它會向客戶端發送HTTP 302,重定向客戶端到SSL端口,比如7002,但當我們對Weblogic集群使用了Proxy的時候,這可能有一點點麻煩。

    我們首先需要配置Weblogic的各個Managed Server,比如HTTP端口都是7001,SSL端口都是7002,然后配置一個由Weblogic提供給apache的proxy包(一個叫做mod_wl_20.so的文件),然后在Apache加載它,再提供幾個簡單的參數,便可以Run起來,為了讓一切變得很簡單,我們可以分開兩步來走:
    1,先配通HTTP方式
    2,提供SSL方式

    針對1,其實那是3分鐘的事情
    1.1 找到Weblogic中的mod_wl_20.so,放在%BEA_HOME%\weblogic81\server\bin,copy到Apache 2.0的modules目錄
    1.2 在httpd.conf中增加下面的配置:
    LoadModule weblogic_module modules/mod_wl_20.so

    <IfModule mod_weblogic.c>
    WebLogicCluster sourcesite:8001,destsite:8001
    MatchExpression *
    </IfModule>

    注意,sourcesite:8001,destsite:8001是我在另外兩臺機器上的Managed Server,針對所有類型資源的訪問請求,都會被Apache轉發Weblogic集群上去。然后,重啟Apache,測試一下。


    針對步驟2,需要注意一些問題,首先是要配置SSL的信任關系,也就是,Apache Proxy轉發請求的時候,會驗證服務器的身份,因此,我們配置一套Java證書庫,我是用XCA和SecureXRCP(
    http://m.tkk7.com/security/archive/2007/01/07/SecureXRCP.html)去完成的,圖形化操作比Openssl的純命令行要方便很多。

    2.1 創建證書庫
    首先,創建一個CA,它包括了cskey.pem的私鑰(保護密碼是weblogic)
    -----BEGIN RSA PRIVATE KEY-----
    Proc-Type: 4,ENCRYPTED
    DEK-Info: DES-EDE3-CBC,829FBE604B9F2544

    ej6WSSIsZVw+xU+ihKt4wkz+aGODjFp0vp4Gh+nUjLmWxc9oLgVr4gLzvveop0pk
    q1IyfriedXd2OK2etxkcTC0jRQQBs5r83UjCo+DV2bWsbgh+9fSekuRSoGBIbZC+
    tjuctihk4tenN5o7jygdI55k9ncH6O486X50aGgiRblzzk4GoYQfQn+2Hksso99T
    pzYZdP9KSN0FVHl7D+Zt/oKBw68kIYLV7n+Z2h8LPTW/w6c5rdnCylQZrPfu9ses
    b753HI0tcYgtE3ExmEbRhPgzITVGdA+crzEcxlmMxxjknnpg2VJiItlDpEyBXyQ8
    1wFB3inxQoqkrttuxLUZLjo+d3OSUZwEy0it/8oZWj5D1cnfafwOXaKuj7ys0FwF
    nPoD4Oz5hKfyEFdxXzDm+PKNRT39aYYcWYe73wws75nP3Dj5qfGJCZXzG0Pqbltm
    EZH4vJbV+vU75tX5fNo32UZNTKW5d0/jCIFWz5KjFl/7Ohra698FAlAiMMspcMUt
    9FNCKV8jT1Ntrxpp/KSauZHjkW7hUeXLsUp/NTIhPCZnzsjIM6zKCm9rCwyAXbav
    Rn2g1chzZKUj6RhRTEi8iYX6gKt6om9MEDewEu0EweZiJQ5M5efS8qUMJA+CYXUQ
    o2XM5J7blqBETcO8j/dgM1/DPnmLOkZdHgeNssVgld50vEbQN89W6w39H0DSre65
    TEFr9oMeJhWWavrh4bcdYn190kku5ZorMZqsacQqeoCznQw017FyyvzGzAy75s3s
    v8Wyea7egQ8YEsO5ecdyNxXY+eTKa1HNNbxqWPUcAB67EjXniiCzEkd4mOB/BQIv
    yQE8JofXemruflGvBXdBuPOzPWD0pY5FvnFzl6YhrOoMWuC02Fcr/X+a3MGnJPep
    9krtXbBQ318MOdeDwkk8dcm+8U76PHuLgWYG+Y7FGiqrHCi1EafHqlxM6jMetaX5
    Hjomj6gME1bpnOFzFEo1d74JwNF7Zf73PQZvWV3LGv/HmxXC+KQDi9SfRaFIKgtE
    syr3iVAMHauiIbL4vVGLE4sg+JgApYdNhuy1USz3Dxp0+NtOU6CUAeNNHVqS7+uF
    eP5PGoMplCF+7pPBUhqiRePVTrId+TuYKPfSBfW1MZ/5YYTzRUiMS14FmB49Ds7T
    xyODF4tVpV1j2IxyCAffYdEXOYDn0A13xu5pvU17R9Sd0XtHvq3uOHAtN8A6GQFy
    Wt5KesqCj179nSRMlBxs4NhjHmwerhLdIIMIDVROulYh0Abfq9kqTdiqqDnrmV+d
    93BDcc/wGq0OZNmMyqK4tmtz8KA520feBA9u9eT5j9MSsm/SWVorrjpPI8JBvqcg
    kb0PpQyvP6CcGMkpXDhE/AYEkAiT86fxpAXJnHvQIXRd6p7GscDnQ5AKj+hRro9J
    yyL1yrB9vih4xGUiTRycTiT+6LEuH9dWnlKyyv2pRfC0XMVHqJZ760bnjDuFPR2E
    6guobsKQx9pnEQGZa7VIJqN/DXmgzVHUTRvz7Pby9k8fS8Jc3iDVeZ2k/4tbbbeG
    SmNdQ2NVHwGAa0sDIb0vG7YYG6G2oD8R1EHG71MwZekTQaC7VFpJwg==
    -----END RSA PRIVATE KEY-----

    以及其對應的公開證書cs.pem

    -----BEGIN CERTIFICATE-----
    MIIFDjCCA/agAwIBAgIBATANBgkqhkiG9w0BAQQFADBxMQswCQYDVQQDEwJDUzEL
    MAkGA1UEBhMCQ04xCzAJBgNVBAcTAkdaMQswCQYDVQQIEwJHRDELMAkGA1UEChMC
    Q1MxDzANBgNVBAsTBk9OU0lURTEdMBsGCSqGSIb3DQEJARYOZGh1YW5nQGJlYS5j
    b20wHhcNMDcwMTAzMDI0MTQ2WhcNMTYxMjMxMDI0MTQ2WjBxMQswCQYDVQQDEwJD
    UzELMAkGA1UEBhMCQ04xCzAJBgNVBAcTAkdaMQswCQYDVQQIEwJHRDELMAkGA1UE
    ChMCQ1MxDzANBgNVBAsTBk9OU0lURTEdMBsGCSqGSIb3DQEJARYOZGh1YW5nQGJl
    YS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDLCKfrRzEcAwAd
    yt1os1vfNJ5dyYDwRqYaUB2n1hPmu7jchVDm8HHlLhZSxyK21rKlcfnrGnPLKWfY
    amNP1azmNYbJPDBtfa0rYmn2u33qqXxW61fB3UnSALoFwZ5eNG/vyesaPW+ok63k
    z+t+gUyzFXIfuPTVuJbdTkZtO1v44I6Wl0aWjxKpCJZSbw7PVD2g5dqoY2HaJN0W
    ZvnMY9e8MLNc0fSeyGhEp6N8NKKAn15prQ6wpudAG3HNuSrMYZTJqKffiSQCJEFe
    0UfI/AFQuPw7xk2d2wDMBKJOHxUtMtsUJ4pcxie0L7WSnU2YO3yVMCeLVJHp4JJ1
    EbS4jLUTAgMBAAGjggGvMIIBqzASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1UdDgQW
    BBQnpgv2gTClymABt62gsGyPtTm/bzCBmwYDVR0jBIGTMIGQgBQnpgv2gTClymAB
    t62gsGyPtTm/b6F1pHMwcTELMAkGA1UEAxMCQ1MxCzAJBgNVBAYTAkNOMQswCQYD
    VQQHEwJHWjELMAkGA1UECBMCR0QxCzAJBgNVBAoTAkNTMQ8wDQYDVQQLEwZPTlNJ
    VEUxHTAbBgkqhkiG9w0BCQEWDmRodWFuZ0BiZWEuY29tggEBMAsGA1UdDwQEAwIB
    BjARBglghkgBhvhCAQEEBAMCAAcwHQYJYIZIAYb4QgECBBAWDnd3dy5wZ3Aub3Jn
    LmNuMB0GCWCGSAGG+EIBAwQQFg53d3cucGdwLm9yZy5jbjAdBglghkgBhvhCAQQE
    EBYOd3d3LnBncC5vcmcuY24wHQYJYIZIAYb4QgEHBBAWDnd3dy5wZ3Aub3JnLmNu
    MB0GCWCGSAGG+EIBCAQQFg53d3cucGdwLm9yZy5jbjAdBglghkgBhvhCAQ0EEBYO
    d3d3LnBncC5vcmcuY24wDQYJKoZIhvcNAQEEBQADggEBAANNRHl+xc7lbLAIW8HK
    cNRJcSqYuUaPgLpMEZw5AnWngbUgs5KOYPCHpfft34DxrFsArV3fOiyhmznQE2f+
    BmX8afaDprlq4y4J5GZJz9b+comZEQgbhLqTvZcMW9JuHcIYB7eyvrMam8CEX/qZ
    asvYRnworD+LtzYRv9EFUfDPFtkxPpAZBFQJngE5icWI0HdG8W7rWQSOHq+FZxRi
    Zz70T97MEtU/MUZb6nDIVleaKB8o2OrSlJRP7ENYV9ueL3tKm7ZlZLbFEHLoyCeF
    c2qJp8d1BVx3n1unVABcZbGIFVwxXQqKhtmgd6pLbAfzd1lR6Yhd2p+yTZEvpAqG
    ErE=
    -----END CERTIFICATE-----

    因為pem是文本格式,讀者可以直接copy上面的文本然后各自保存為pem后綴名的文件即可使用!

    有了CA,各位就可以為Weblogic集群中的所有Managed Server創建對應的證書庫(我說的當然是Identity證書庫)。
    用SecureXRCP為每個Managed Server new一個證書庫,然后創建密鑰對,然后用私鑰去創建一個
    CSR(證書請求),保存為一個文件,再用XCA去對這個文件簽名(用上述的cskey.pem,你需要往XCA導入上面的
    PEM,也可以用你以前創建的CA根私鑰)。

    Note:如果讀者對XCA用法不是很熟悉,可以閱讀Weblogic Security In Action的中篇
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=26770&tstart=0
    或者直接使用Openssl,Openssl的安裝使用可以參考
    http://m.tkk7.com/Files/openssl/%e7%ac%ac15%e7%ab%a0%20OpenSSL%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5.rar
    http://m.tkk7.com/Files/openssl/%e7%ac%ac14%e7%ab%a0%20OpenSSL%e7%bc%96%e8%af%91%e5%92%8c%e5%ae%89%e8%a3%85.rar

    我在我的Weblogic Cluster中有兩臺被管Server,因此我分別創建了兩個證書庫
    sourcesite.jks
    destsite.jks
    然后導出了兩個簡單的csr,用XCA中的CS私鑰Sign了之后,便有了兩個證書(這個步驟跟你去VeriSign提交CSR和獲取證書一模一樣)
    從XCA,你導出了兩個der格式的證書,在SecureRCP中再針對上面兩個JKS證書庫分別Import CA Reply(就是sourcesite.der和destsite.der),
    就完成了證書庫的創建。

    OK,看看我們現在有些什么文件(這些文件大家可以在本文附件中找到)。
    CS.der
    CSKey.pem
    cs.jks
    cs.pem
    destsite.csr
    destsite.der
    destsite.jks
    sourcesite.csr
    sourcesite.der
    sourcesite.jks
    其中,對于Weblogic被管Server來說,需要的是sourcesite.jks(用作Identity JKS),cs.jks里面只有一個cs.der,它可以用作Weblogic Server的Trust JKS。

    對于Apache Proxy,它需要cs.der,即信任CA的根證書,但由于Apache Proxy是PEM格式Prefer的,因此,請用weblogic的der2pem命令去轉換一下cs.der為cs.pem。

    準備好證書庫以及證書等瑣碎事情之后,可以繼續配置Apache SSL。


    2.2? 配置Apache信任Weblogic集群
    修改上面提到的Apache的httpd.conf:

    LoadModule weblogic_module modules/mod_wl_20.so
    LoadModule ssl_module modules/mod_ssl.so

    <IfModule mod_ssl.c>
    ??? Include conf/ssl.conf
    </IfModule>

    <Location "/examplesWebApp">
    ? SetHandler weblogic-handler
    </Location>

    <Location "/ssl">
    ? SetHandler weblogic-handler
    </Location>

    <IfModule mod_weblogic.c>
    WebLogicCluster sourcesite:8002,destsite:8002
    SecureProxy ON
    TrustedCAFile C:\CertGen\CS\cs.pem
    RequireSSLHostMatch false

    Debug ALL
    WLLogFile C:\Apache2\Apache2\logs\wls_proxy_server.txt
    </IfModule>


    首先,你需要用LoadModule加載ssl以及weblogic提供給apache的mod。
    其次,打開SecureProxy(Set ON),然后Apache會將前端的所有請求轉發給Apache信任的ManagedServer(包括sourcesite, destsite兩個節點,前提是這兩個節點上的ManagedServer擁有TrustedCAFile信任的CA所簽發的證書/私鑰,即sourcesite.der和destsite.der)。
    最后,我們看看httpd.conf同一目錄下的ssl.conf文件,增加一個虛擬主機的配置即可:
    <VirtualHost _default_:8002>
    DocumentRoot "c:/apache/htdocs"
    ServerName adserver:8002
    ServerAdmin dhuang@bea.com
    ErrorLog logs/error_log
    TransferLog logs/access_log
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile conf/ssl.key/server.crt
    SSLCertificateKeyFile conf/ssl.key/server.key
    <FilesMatch "\.(cgi|shtml|phtml|php3?)$">
    ??? SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "c:/apache/cgi">
    ??? SSLOptions +StdEnvVars
    </Directory>
    SetEnvIf User-Agent ".*MSIE.*" \
    ???????? nokeepalive ssl-unclean-shutdown \
    ???????? downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_request_log \
    ????????? "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    </VirtualHost>?


    注意:下面的私鑰、證書可以獨立用Openssl生成,用SecureRCP或XCA也可以,但要注意,私鑰不能加密,因為Apache可能不支持私鑰解密。
    SSLCertificateFile conf/ssl.key/server.crt
    SSLCertificateKeyFile conf/ssl.key/server.key


    有些朋友可能會問到,如果我一個sourcesite上有兩個Managed Server, 分別使用8002和8004兩個SSL端口,怎么辦?
    那就需要配置兩個虛擬主機,增加一個
    <VirtualHost _default_:8004>
    DocumentRoot "c:/apache/htdocs"
    ServerName adserver:8004
    ServerAdmin dhuang@bea.com
    ErrorLog logs/error_log
    TransferLog logs/access_log
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile conf/ssl.key/server.crt
    SSLCertificateKeyFile conf/ssl.key/server.key
    <FilesMatch "\.(cgi|shtml|phtml|php3?)$">
    ??? SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "c:/apache/cgi">
    ??? SSLOptions +StdEnvVars
    </Directory>
    SetEnvIf User-Agent ".*MSIE.*" \
    ???????? nokeepalive ssl-unclean-shutdown \
    ???????? downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_request_log \
    ????????? "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    </VirtualHost>?

    這樣,Weblogic Managed Server重定向SSL的時候, Apache必須識別來自用戶的8002、8004的SSL請求。


    最后,配置完畢,我們看看問題是如何被解決的:
    #1,用戶訪問Apache Proxy http://adserver/ssl
    #2,Apache Proxy轉發請求給Managed Server sourcesite,http://sourcesite:8001/ssl
    #3,http://sourcesite:8001/ssl返回頁面,頁面有一個protected的鏈接
    #4,Apache Proxy轉發響應給用戶
    #5,用戶看到Protected鏈接,點擊它(http://adserver/ssl/protected)
    #6,Apache Proxy轉發protected請求給Managed Server sourcesite,http://sourcesite:8001/ssl/protected
    #7,ManagedServer發現是protected HTTP請求,要求做SSL,返回HTTP 302,要用https://sourcesite:8002/ssl/protected
    #8,Apache Proxy轉發響應給用戶
    #9,是IE而不是用戶代替用戶處理了HTTP 302的重定向,提交給https://adserver:8002/ssl/protected給Apache
    #10,由于你配置了上面的針對SSL的虛擬主機,Apache會繼續為你效勞,轉發給sourcesite,https://sourcesite:8002/ssl/protected
    #11,ManagedServer發現是protected SSL請求,That's OK,返回正確的響應, HelloWorld!

    本來有一些SSL握手動作在Apache與ManagedServer通訊之前發生,但都無非是ManagedServer向Proxy提交自己的證書的過程,只要Managed Server的證書確實被CS這個CA簽發過,則可以確保后面的請求繼續,否則Apache會終止與該Managed Server通訊!

    所需的證書,私鑰以及證書庫可以在該文件中找到
    http://m.tkk7.com/Files/security/CS.rar

    ?

    posted on 2007-01-07 14:34 david.turing 閱讀(9183) 評論(2)  編輯  收藏 所屬分類: Security領域

    評論

    # re: [原創]Apache Proxy with Weblogic Cluster under SSL 2007-03-21 21:32 guest

    真是好文章!解決了很多疑問,謝謝!  回復  更多評論   

    # re: [原創]Apache Proxy with Weblogic Cluster under SSL 2007-12-04 16:22 ljw

    看完文章,順便在這問個WebLogic集群的問題:
    比如集群中有兩個Managed Server,分別為nodeA,nodeB
    現在實際業務也分兩塊,一塊主要是查詢/query/*,另一塊是數據處理/datahandle/*
    怎么配置這個集群,讓查詢塊分發到nodeA,數據處理塊分發到nodeB  回復  更多評論   

    導航

    統計

    常用鏈接

    留言簿(110)

    我參與的團隊

    隨筆分類(126)

    隨筆檔案(155)

    文章分類(9)

    文章檔案(19)

    相冊

    搜索

    積分與排名

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 18gay台湾男同亚洲男同| 亚洲AV成人噜噜无码网站| 亚洲依依成人亚洲社区| a级毛片免费观看网站| 你懂得的在线观看免费视频| 最新欧洲大片免费在线| 国产乱辈通伦影片在线播放亚洲| wwwxxx亚洲| 成人免费无码H在线观看不卡| 日本阿v免费费视频完整版| 国产亚洲一区二区在线观看| 亚洲人成小说网站色| 特级一级毛片免费看| 毛片在线看免费版| 亚洲第一AAAAA片| 亚洲精品人成网线在线播放va | 亚洲精品动漫人成3d在线| 亚洲精品视频观看| 在线观看免费黄网站| 青青青国产免费一夜七次郎| 久久亚洲私人国产精品| 成人无码视频97免费| 国产精品免费视频播放器| 亚洲av不卡一区二区三区| 亚洲爆乳AAA无码专区| 2021久久精品免费观看| 国产亚洲真人做受在线观看| 野花视频在线官网免费1| 日韩欧毛片免费视频| 亚洲av无码一区二区三区网站| 黄色a三级免费看| 在线jlzzjlzz免费播放| wwwxxx亚洲| 最近中文字幕无免费| 77777亚洲午夜久久多人| 疯狂做受xxxx高潮视频免费| 97视频免费在线| 亚洲国产第一页www| 两个人看www免费视频| xvideos亚洲永久网址| 亚洲精品9999久久久久无码|