내용 목차
본 장에서는 WebtoB 5의 신규 기능과 이전 버전에서 변경된 기능, 버그 패치에 대해서 설명한다.
HTH_THREAD 절 신규 생성
HTH_THREAD 절을 추가하여 WebtoB 4까지 프로세스로 처리되었던 HTMLS를 HTH 내의 Worker Thread로 전환하였다. HTMLS 프로세스를 제거하므로 SERVER 절 설정이 필수가 아닌 선택으로 변경한다. HTH_THREAD 절은 반드시 설정해야 하며 하나만 설정한다. 자세한 설정 및 설명은 "WebtoB 관리자 안내서"를 참고한다.
[예 6.1] HTH_THREAD 설정
*HTH_THREAD hworker WorkerThreads = 8, SendfileThreads = 4, SendfileThreshold = 32768, AccessLogThread = Y
Windows에서 SendfileThreads 및 AccessLogThread는 지원하지 않는다.
HTH_THREAD.HtmlsCompression 기능
기존의 HTMLS에서 처리하던 compression 기능을 Worker Thread에서 처리하도록 수정하였다.
HtmlsCompressionMinSize 설정을 추가하여 Response body가 해당 설정 값 이상인 경우에만 compression할 수 있도록 하였다.
[예 6.2] *HTH_THREAD.HtmlsCompression 설정
*HTH_THREAD hworker ... HtmlsCompression="text/html", HtmlsCompressionMinSize = 1, ...
FILTERS 프로세스에서 처리된 이후 요청을 JSV 서버(또는 다른 서버프로세스)에 요청을 전달할 때 사용자로부터 받은 요청을 그대로 전달할 때 사용하는 기능이다.
FILTERS 프로세스에서 처리되면서 URL 인코딩 등으로 요청 URL이 변경될 경우를 고려하여 사용될 수 있다.
[예 6.3] *SERVER.Options 설정 방법
*SERVER
MyGroup SvgName = jsvg, MinProc = 1, MAXProc = 10,
Options = "PassOriginalUriAfterFilters"
관련이슈 : IMS-100812
기존에 HEADERS 절 설정은 SERVER 절과 NODE(VHOST) 절에 적용 가능하였으나, WebtoB 5 버전부터 HTML 타입의 서버를 설정하지 않게 되었다. 특정 HTML에 대해서만 HEADERS 적용을 할 수 있도록 *SVRGROUP.Headers 설정을 추가하였다.
[예 6.4] *SVRGROUP.Headers 설정
*SVRGROUP htmlg NODENAME = "tmax", SVRTYPE = HTML, Headers = "header1", ... *HEADERS header1 ACTION="AddRequest", FieldName="ADDHEADER1", FieldValue="QMC_Test_Header1", RegExp="!html$", StatusCode=""
PROXY_SSL 절에도 추가된 CertificateChainFile 설정을 통해 Chain을 생성할 수 있다. 내부 서버의 Certificate의 인증을 하기 위해서는 다음과 같이 PROXY_SSL절에 CertificateChainFile을 설정한다.
[예 6.6] PROXY_SSL.CertificateChainFile 설정
*PROXY_SSL reverseSsl Verify=2, VerifyDepth=3, CertificateChainFile="$(WEBTOBDIR)/ssl/CHAIN.crt", CACertificateFile="$(WEBTOBDIR)/ssl/CA.crt", CertificateFile="$(WEBTOBDIR)/ssl/public.crt", CertificateKeyFile="$(WEBTOBDIR)/ssl/private.key", Protocols="-SSLv2, -SSLv3", RequiredCiphers = "HIGH:MEDIUM:!SSLv2:!PSK:!SRP:!ADH:!AECDH:!EXP:!RC4:!IDEA:!3DES"
관련이슈 : IMS-107342
WebDAV(Web Distributed Authoring and Versioning, 웹 분산 저작 및 버전 관리) 기능을 지원한다.
HTTP의 확장 프로토콜로 아래와 같이 NODE(VHOST) 절에 메소드를 추가하여 서버에 저장된 문서와 파일을 편집하고 관리할 수 있다. WebtoB에서는 PUT, DELETE, COPY, MOVE, MKCOL, PROPFIND 메소드를 지원한다. (LOCK/UNLOCK ,PROPPATCH 제외) 해당 기능을 사용하지 않으려면 특정 메소드를 disable하도록 설정하면 된다. 자세한 사항은 RFC-4918을 참고한다.
[예 6.9] WebDAV 기능 설정 방법
*VHOST
vhost1 ...
Method = "GET, POST, HEAD, OPTIONS, PROPFIND, PUT, DELETE, MKCOL, COPY, MOVE"
(default:"GET, POST, HEAD, OPTIONS")
...
Enterprise Edition License에서 지원하는 기능이다.
관련이슈 : IMS-82239
FILTER 절에 모듈(so)을 추가하여 CA사의 SSO 솔루션인 SiteMinder의 Policy Server와 연동하며 사용자 인증 및 인가 처리 기능을 지원한다.
[예 6.10] FILTER 절 및 filters 설정
*FILTER sm_filter RealPath = "$(WEBTOBDIR)/config/filter/wbSmISAPI.so" *SVRGROUP htmlg SVRTYPE = HTML jsvg SVRTYPE = JSV filterg SVRTYPE = FILTER, Filter = "sm_filter" *SERVER MyGroup SVGNAME = jsvg, MinProc = 5, MaxProc = 10 filters SVGNAME = filterg, MinProc = 1, MaxProc = 20 *URI testuri Uri= "/testuri/", SvrType = JSV *EXT fcc MimeType = "text/html", SvrType = JSV
Enterprise Edition License에서 지원하는 기능이다.
관련이슈 : IMS-92139
기존에는 1개의 port로 2개의 인증서를 서비스하기 위해서는 port를 분리하거나, 멀티 도메인 인증서를 사용하여야 했다. 신규 버전에서는 TLS의 확장 기능인 SNI 기능을 추가함으로써 1개의 port로 여러 도메인을 서비스할 수 있게 되었다.
[예 6.11] 1개의 port로 2개의 도메인을 서비스하는 방법
*VHOST vhost1 DOCROOT = "C:/TmaxSoft/WebtoB5.0/vdocs1", NODENAME = "tmax", HOSTNAME = "192.168.0.0", IndexName = "index.jsp", ServiceOrder = "ext,uri", #KeepAlive = N, PORT = "7410", SSLFLAG = Y, SSLNAME = "ssl1" vhost2 DOCROOT = "C:/TmaxSoft/WebtoB5.0/vdocs1", NODENAME = "tmax", HOSTNAME = "192.168.0.0", HostAlias = "vhost2.tmax.co.kr", IndexName = "index.jsp", ServiceOrder = "ext,uri", PORT = "7410", SSLFLAG = Y, SSLNAME = "ssl2" ... *SSL ssl1 CertificateFile = "C:/TmaxSoft/WebtoB5.0/ssl/server.crt", CertificateKeyFile = "C:/TmaxSoft/WebtoB5.0/ssl/server.key", CertificateChainFile = "C:/TmaxSoft/WebtoB5.0/ssl/chain.crt", RequiredCiphers = "AES256-SHA", PassPhraseDialog="exec:C:/TmaxSoft/WebtoB5.0/ssl/pass.bat" ssl2 CertificateFile = "C:/TmaxSoft/WebtoB5.0/ssl/server2.crt", CertificateKeyFile = "C:/TmaxSoft/WebtoB5.0/ssl/server2.key", CertificateChainFile = "C:/TmaxSoft/WebtoB5.0/ssl/chan2.crt", RequiredCiphers = "RC4-MD5", PassPhraseDialog="exec:C:/TmaxSoft/WebtoB5.0/ssl/pass.bat"
[예 6.12] test 방법
>wbssl s_client -connect 192.168.0.0:7410 -servername vhost2.tmax.co.kr RESULT> CONNECTED(00000160) ... New, TLSv1/SSLv3, Cipher is RC4-MD5 Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : RC4-MD5
"wsadmin > st -j"로 확인하는 경우 jengineid를 보여줄 때 base64 decoded 값을 보여주거나 JEUS로부터 받은 jenginename*를 보여주도록 하였다.
JEUS8에서 지원하는 기능이다.
Windows 서비스에서 30초 간격으로 WSM 프로세스가 살아있는지 체크하여 죽은 경우 wsdown 및 service를 종료하도록 한다.
관련이슈 : IMS-107294
*SERVER.CompressionMinSize를 설정하는 경우 Content-Length(또는 file size)가 해당 설정 이상인 경우에만 compression이 적용되도록 한다.
[예 6.13] *SERVER.CompressionMinSize 설정
*SERVER cgi SvgName = cgig, MinProc = 2, MaxProc = 10, CompressionMinSize = 1, Compression = "text/html"
*HTH_THREAD.HtmlsCompressionMinSize 설정과 같은 기능이다.
관련이슈 : IMS-107724
기존의 AccessLog File Format인 default 외에 많이 사용하는 format을 alias로 지정하여 사용할 수 있도록 common, combined를 추가한다. 자세한 설정 및 설명은 "WebtoB 관리자 안내서"를 참고한다.
[예 6.14] AccessLog File Format 설정 시 사용가능한 alias
default: "%h %t \"%r\" %s %b %D" common: "%h %l %u %t \"%r\" %s %b" combined: "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\""
관련이슈 : IMS-100553
MaxPersistentServerConnections 설정 등이 존재하기 때문에 WebtoB 5에서는 아래 불필요한 설정을 제거하였다.
[예 6.16] 불필요한 설정 제거
*NODE.MaxReverseProxyKeepAliveServerConnections *NODE.ReverseProxyRequestSlackBufferSize *NODE.AccessLogThroughWSM *NODE.UseInternalHtmls *NODE.InternalHtmlsReadSize *NODE.InternalHtmlsMaxCacheSize *NODE.InternalHtmlsAsyncReadThreads *NODE.InternalHtmlsAsyncReadThreshold *NODE.InternalHtmlsSendFileThreshold
HTMLS 프로세스는 사용하지 않게 되었으므로 HTMLS에서 static file 처리 전 적용했던 Filter 동작은 FILTERS 프로세스에서 처리하도록 변경하였다.
RequiredCiphers의 기본값을 다음과 같이 변경하였다.
변경 전
RequiredCiphers = "HIGH:MEDIUM:!SSLv2:!PSK:!SRP:!ADH:!AECDH:!EXP"
변경 후
RequiredCiphers = "HIGH:MEDIUM:!SSLv2:!PSK:!SRP:!ADH:!AECDH:!EXP:!RC4:!IDEA:!3DES"
관련이슈 : IMS-103369
WBSSL의 버전을 기존의 "WBSSL 2.2.2"에서 "WBSSL 2.2.4_B4"로 업그레이드하였다.
최근 계속해서 발생하는 OpenSSL의 보안 취약점 문제를 해결하기 위하여 SSL/TLS 통신 프로토콜 처리 부분을 개선한 OpenSSL 대체 라이브러리를 포함하였다.
관련이슈 : IMS-106426
Reverse proxey를 사용할 때 Content-Length Response Header를 파싱하여 해당 value를 저장할 때 4bytes 변수에 저장하면서, 2GB를 넘어가는 Content-Length의 경우 음수값으로 인식하게 되어 발생하는 버그를 수정하였다.
관련이슈 : IMS-107204
클라이언트의 pipelined request를 처리할 때 앞선 요청 처리를 위해 뒷단의 내부 서버로 connecting 중일 때 해당 클라이언트의 상태를 RUN 상태로 유지하도록 수정되었다.
관련이슈 : IMS-102899
*NODE(VHOST).IndexName에 index.php이 설정되어 있는 환경에서 body가 큰 "POST /" 요청이 왔을 경우 예상보다 큰 redirect 메시지를 buffer에 담지 못하고 기다리는 동작을 반복하여 발생한 현상이다.
관련이슈 : IMS-106208
WebDAV 지원을 위한 XML Parser Library로 lib/(bin) 하위에 libexpat.lib(dll)를 추가하였는데 해당 라이브러리의 문제로 wsboot가 실패하는 경우가 발생하였다. Windows x86 버전과 AIX x32 버전의 libexpat.lib(dll)을 수정하였다.
관련이슈 : IMS-105404
'Expires' Response header를 만들기 위해 request uri를 가져오는 도중 core가 발생하는 문제를 수정하였다.
관련이슈 : IMS-105697
Filters 프로세스에서 302 응답이 만들어질 때 클라이언트에게는 302 응답이 정상적으로 전달되지만, Accesslog에는 Response status code가 0으로 찍히는 문제를 수정하였다.