제5장 WebtoB 4.1 SP8 Fix#0

내용 목차

5.1. 신규 기능
5.1.1. WebSocket 기능 추가 (ReverseProxy 사용)
5.1.2. OpenSSL Version(1.0.1i) 업그레이드
5.2. 추가 기능
5.2.1. REVERSE_PROXY/REVERSE_PROXY_GROUP에 RegExp 설정 추가
5.2.2. HEADERS 절에 RegExp 설정 추가
5.2.3. 특정 URL만 CacheRefresh하는 기능 추가
5.2.4. status(st) 정보에 Request Count및 Connection 접속 시간 정보 추가(wsadmin, wswebadmin)
5.2.5. RequestLevelPing 기능 추가
5.2.6. REVERSE_PROXY/REVERSE_PROXY_GROUP에 클라이언트가 보낸 Host Header 값을 설정하는 옵션 추가
5.2.7. REVERSE_PROXY_GROUP에 자체 routing 기능 추가
5.2.8. SVRGROUP에 PHP를 사용할 경우 php-cgi를 실행할 경우 옵션 적용 기능 추가
5.3. 변경 기능
5.3.1. Reqeust의 HTTP 버전이 지원하지 않는 경우 505 status로 응답하도록 변경
5.3.2. HTH 최대 설정값 변경
5.3.3. 서버 프로세스가 기동할 때 WSM에 connection을 실패한 경우 기능 변경
5.3.4. RequiredCiphers 최대 길이 변경
5.4. 버그 패치
5.4.1. OPTIONS Method 요청을 처리할 때 JEUS 응답을 WebtoB에서 처리하는 오류 수정
5.4.2. BRUN 상태인 connection을 JEUS에서 reconnection을 시도할 때 HTH CPU 사용량이 증가 오류 수정
5.4.3. suspend 명령 후 JEUS로 요청을 보낼 때 read-timeout 이후 요청이 처리되는 오류 수정
5.4.4. Connection Header Value가 여러 개일 경우 오류 수정
5.4.5. BRUN 상태에서 클라이언트가 연결을 끊어도 RDY가 되지 않는 오류 수정
5.4.6. POST 요청의 Body 데이터를 JEUS로 보내는 도중 응답을 받으면 클라이언트의 연결을 끊는 오류 수정
5.4.7. 클라이언트가 응답을 받지 못한 상태로 timeout이 발생하는 문제

5.1. 신규 기능

5.1.1. WebSocket 기능 추가 (ReverseProxy 사용)

  • ReverseProxy를 통한 WebSocket 기능을 지원한다.

    • *REVERSE_PROXY.MaxWebSocketConnections : reverse proxy로 WebSocket을 사용하는 경우 최대 WebSocket connection 수 (기본값: 0 unlimit)

    • *REVERSE_PROXY.WebSocketSessionTimeout : reverse proxy로 WebSocket을 사용하는 경우 WebSocket connection에 대한 session timeout

    [예 5.1] WebSocket Reqeust 및 Response

    *Reqeust
    GET /websocketTest/websocket/echoAnnotation HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0
    Accept:     text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language:    ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding:    gzip, deflate
    Sec-WebSocket-Version:      13
    Origin:     http://localhost
    Sec-WebSocket-Key:  4EOlZZPEjKYm79sPIHsvGA==
    Cookie:     W2BRID=d2Vic29ja2V0X2Nvbmc=.d2Vic29ja2V0MQ==
    Connection: keep-alive, Upgrade
    Upgrade:    websocket 
    *Response
    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Date: Thu, 21 Aug 2014 07:31:58 GMT
    Connection: upgrade
    Sec-WebSocket-Accept: 7pqtUendiSSfr2rRboExMm+HzyY=
    


5.1.2. OpenSSL Version(1.0.1i) 업그레이드

  • wbssl(OpenSSL)의 버전을 1.0.1h에서 1.0.1i로 업그레이드하였다.

    wbssl(OpenSSL) 업그레이드를 통해 OpenSSL 출력 함수에서 발생하는 메모리 정보 노출 취약점(CVE-2014-3508) 외에 8가지의 버그(CVE-2014-5139, CVE-2014-3509, CVE-2014-3505, CVE-2014-3506, CVE-2014-3507, CVE-2014-3510, CVE-2014-3511, CVE-2014-3512)를 해결하도록 하였다.

  • 관련리포트 : http://www.openssl.org/news/secadv_20140806.txt

5.2. 추가 기능

5.2.1. REVERSE_PROXY/REVERSE_PROXY_GROUP에 RegExp 설정 추가

  • URL을 매칭할 때 Regular Expression을 추가하여 다양한 조건을 설정할 수 있게 하였다.

    다음은 RegExp을 사용하는 예이다.

    • 예1) jsp, do 확장자 요청에 대해서만 reverse proxy가 적용되는 설정

      *REVERSE_PROXY.RegExp="\.(jsp|do)$"
    • 예2) html 확장자 요청은 reverse proxy가 적용되지 않는 설정

      *REVERSE_PROXY.RegExp="!\.html$"
  • 관련이슈 : IMS-85691

5.2.2. HEADERS 절에 RegExp 설정 추가

  • URL을 매칭할 때 Regular Expression을 추가하여 다양한 조건을 설정할 수 있게 하였다.

  • 관련이슈 : IMS-82319

5.2.3. 특정 URL만 CacheRefresh하는 기능 추가

  • CacheRefresh를 실행할 때 (명령어 : cr) 원하는 URL만 삭제 가능한 옵션을 추가하였다.

    wsadmin에서 cr -u url_pattern 형식으로 명령을 하면 된다.

    다음은 cr -u 사용하는 예이다.

    • 예1)

      wsadmin> cr -u */*.gif 명령시..
      
      삭제되는 cache item
       - www.tmax.co.kr/logo1.gif
       - tims.tmax.co.kr/logo2.gif
       - technet.tmax.co.kr/logo3.gif
    • 예2)

      wsadmin> cr -u */logo*.* 명령시..
      
      삭제되는 cache item
       - www.tmax.co.kr/logo.html
       - www.tmax.co.kr/logo1.gif
       - tims.tmax.co.kr/logo2.gif
       - technet.tmax.co.kr/logo3.gif
  • 관련이슈 : IMS-85281

5.2.4. status(st) 정보에 Request Count및 Connection 접속 시간 정보 추가(wsadmin, wswebadmin)

  • wsadmin의 st -p와 st -v에 Request Count를 추가하였으며, st -p에 Server Connection Time 정보를 추가하였다.

5.2.5. RequestLevelPing 기능 추가

  • Reqeust를 서버(JSV 등)에 보내기 전에 Connection을 확인의 용도로 Ping을 보내는 기능을 추가하였다.

    *SERVER.RequestLevelPing: default N (Y/N)
    *SERVER.RequestLevelPingTimeout: default 3(sec)
    *SERVER.RequestLevelPingRetryCount: default 0 (retry count)
    
  • 관련이슈 : IMS-84621

5.2.6. REVERSE_PROXY/REVERSE_PROXY_GROUP에 클라이언트가 보낸 Host Header 값을 설정하는 옵션 추가

  • SetHostHeader를 설정할 때 설정된 값이 Host Header에 저장되어 Internal Server로 전달한다.

  • $ByPassHostHeader를 설정할 때 Reqeust에 있는 Host Header를 그대로 Internal Server로 전달한다.

  • 관련이슈 : IMS-86843

5.2.7. REVERSE_PROXY_GROUP에 자체 routing 기능 추가

  • 별도의 key를 Set-Cookie에 추가하여 REVERSE_PROXY_GROUP를 사용할 때 Routing을 하는 기능을 추가하였다.

    *REVERSE_PROXY_GROUP.WBRoutingCookieKey = "W2BRID"로 설정하면 Reverse Proxyg Group을 사용하여 여러 개의 WAS를 연동하는 경우 Cookie에 "W2BRID"를 사용하여 WebtoB 내부적인 Routing에 사용하게 된다.

    [예 5.2] WBRoutingCookieKey 사용예

    *REVERSE_PROXY_GROUP
    rproxyG1        PathPrefix = "/",
                    ServerPathPrefix = "/",
                    WBRoutingCookieKey = "W2BRID"
    *REVERSE_PROXY
    rproxy2         ReverseProxyGroupName = "rpg",
                    ServerAddress = "192.168.10.153:8001"
    rproxy3         ReverseProxyGroupName = "rpg",
                    ServerAddress = "192.168.10.153:8002" 

    클라이언트 요청을 받아 rproxy2에서 처리된 응답에 대해 아래와 같이 Set-Cookie 헤더에 추가한다.

    Set-Cookie: W2BRID=cnByb3h5RzE=.cnByb3h5Mg==
    • ReverseProxyGroupName.ReverseProxyName을 각각 base64 encoding된 값으로 변경하여 사용한다.

    • ReverseProxyName에 대해 base64 encoding된 값은 wsadmin> cfg -rp 에서 StickySessionRoutingId 항목으로 확인이 가능하다.

    • Set-Cookie에 매번 추가하는 것은 아니며 Request Header에 W2BRID가 없거나, 또는 있지만 다른 reverse_proxy로 routing된 경우 추가한다.

    클라이언트 요청 중 Cookie header에 W2BRID를 파싱하여 rproxy2 또는 rproxy3으로 요청을 forwarding하게 된다.


  • 관련이슈 : IMS-86843

5.2.8. SVRGROUP에 PHP를 사용할 경우 php-cgi를 실행할 경우 옵션 적용 기능 추가

  • php-cgi를 사용랄 경우 실행 옵션을 적용할 수 있는 기능을 추가하였다.

    다음과 같이 설정해서 php.ini 파일을 지정할 수 있다.

    *SVRGROUP.ScriptArgs="-c /php_conf/php.ini"
  • 관련이슈 : IMS-87610

5.3. 변경 기능

5.3.1. Reqeust의 HTTP 버전이 지원하지 않는 경우 505 status로 응답하도록 변경

  • WebtoB가 지원하는 HTTP/0.9, HTTP/1.0, HTTP/1.1 이외의 버전이 올 경우 "505 HTTP Version Not Supported."로 응답하도록 변경하였다.

  • 관련이슈 : IMS-85138

5.3.2. HTH 최대 설정값 변경

  • HTH 최대 설정값을 20에서 100개로 확장하였다.

  • 관련이슈 : IMS-84699

5.3.3. 서버 프로세스가 기동할 때 WSM에 connection을 실패한 경우 기능 변경

  • 서버 프로세스가 기동 후 WSM과 connection을 실패할 경우 reconnect를 하지 않는 것을 최대 20번 시도하도록 변경하였다.

  • 관련이슈 : IMS-86838

5.3.4. RequiredCiphers 최대 길이 변경

  • *SSL(PROXY_SSL).RequiredCiphers의 최대 길이를 기존 255자에서 1023자로 확장하였다.

  • 관련이슈 : IMS-86485

5.4. 버그 패치

5.4.1. OPTIONS Method 요청을 처리할 때 JEUS 응답을 WebtoB에서 처리하는 오류 수정

  • OPTIONS Method 요청을 처리할 때 JEUS에서 처리한 응답을 WebtoB에서 처리하여 응답하는 문제를 수정하였다. 해당 요청의 경우 JEUS로 Reqeust를 전달하여 JEUS에서 처리하도록 수정하였다.

    참고

    WebtoB 4.1 SP7 Fix#1 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-84635

5.4.2. BRUN 상태인 connection을 JEUS에서 reconnection을 시도할 때 HTH CPU 사용량이 증가 오류 수정

  • JSV가 BRUN 상태이며 JEUS가 해당 connection을 reconnect할 경우 HTH CPU 사용량이 100%까지 증가하는 오류를 수정하였다.

    참고

    WebtoB 4.1 SP6 Fix#0 이상 WebtoB 4.1 SP7 Fix#1 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-85854

5.4.3. suspend 명령 후 JEUS로 요청을 보낼 때 read-timeout 이후 요청이 처리되는 오류 수정

  • suspend 명령 후 JEUS에서 처리하는 요청을 보낼 경우 read-timeout 설정값이 지난 후 요청이 JEUS에서 처리되는 문제를 수정하였다.

    참고

    WebtoB 4.1 SP7 Fix#1 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-86828

5.4.4. Connection Header Value가 여러 개일 경우 오류 수정

  • Connection Header의 Value를 1개의 값만 처리하는 오류를 수정하였다.

    참고

    WebtoB 4.1 SP7 Fix#1 이하 버전에서 발생하는 오류 현상이다.

5.4.5. BRUN 상태에서 클라이언트가 연결을 끊어도 RDY가 되지 않는 오류 수정

  • BRUN 상태에서 클라이언트가 연결을 끊어도 BRUN인 상태로 Hang이 걸리는 오류를 수정하였다.

    참고

    WebtoB 4.1 SP6 Fix#0 이상 WebtoB 4.1 SP7 Fix#1 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-86997

5.4.6. POST 요청의 Body 데이터를 JEUS로 보내는 도중 응답을 받으면 클라이언트의 연결을 끊는 오류 수정

  • POST 데이터가 JEUS(또는 ReverseProxy)로 보내는 도중 응답을 받을 경우 클라이언트에 전달하지 않고 연결을 끊는 오류를 수정하였다.

    참고

    WebtoB 4.1 SP7 Fix#1 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-87214

5.4.7. 클라이언트가 응답을 받지 못한 상태로 timeout이 발생하는 문제

  • 특정 클라이언트가 BRUN 상태에서 종료된 경우 event 처리가 잘못되어 다른 클라이언트가 응답을 받아갈 수 없는 상태가 되어 "Client Timeout has expired."가 발생하는 오류를 수정하였다.

    참고

    WebtoB 4.1 SP7 Fix#1 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-87614