COMODO SSL WebtoB 적용하기

Posted 2016. 12. 11. 00:42

갑작스럽게 WebtoB에 SSL을 적용하게 될 일이 발생했습니다.

이런거 익숙치 않아... 마음이 참 불편합니다.

Apache나 Tomcat 같은 경우 생각보다 간단하고, 구글링 자료도 많아 수월한데,

WebtoB같은 경우 특히 오래된 자료(현재버전 4.1 SP0)는 또 달라서 쉽지 않습니다.

기술지원을 받기엔 시간이 너무 늦어버렸고 내일은 주말입니다. ㅠ.ㅠ;;;

 

SSL 구매사이트 제공자료도 최신버전 기준으로, 또 싼게 비지떡이라고 했던가요... 자세히 설명도 않해줍니다.

 

1. SSL 구매사이트에서 보내온 인증서 목록입니다.

 

 

crt.pem, jks, key.pem, pfx 그리고 RootChain디텍토리의 파일들까지... ㅠ.ㅠ;;; 뭐가 이리 많을까?

 

2. 설정방법 구글링 들어갑니다. 예상대로 많지 않습니다.

  몇번의 실패를 극복하고 성공한 http.m 세팅은 아래와 같습니다.

 

*NODE
userWeb1
  WEBTOBDIR    = "/app/tmax/webtob",
  SHMKEY       = 54000,
  DOCROOT      = "/app/tmax/docRoot/userWeb/WebContent/",
  PORT         = "80,443",
  LOGGING      = "log1",
  ERRORLOG     = "log2",
  IPCPERM      = 0740,
  JSVPORT      = 9900,
  SERVICEORDER = "ext,uri",
  INDEXNAME    = "index.html,index.jsp",
  HTH          = 1 

 

*VHOST

was1          NODENAME=userWeb1,
                DOCROOT="/app/tmax/docRoot/userWeb",
                HOSTNAME="domain.com",
                SSLNAME="my_ssl",
                PORT="443",
                SSLFLAG=Y,
                ServiceOrder = "EXT,URI",
                LOGGING = "user_accesslog",
                ERRORLOG = "user_errorlog"

 

admin         NODENAME=userWeb1,
                DOCROOT="/app/tmax/docRoot/userAdmin",
                HOSTNAME="admin.domain.com",
                SSLNAME="my_ssl",
                PORT="443",
                SSLFLAG=Y,
                ServiceOrder = "EXT,URI",
                LOGGING = "admin_accesslog",
                ERRORLOG = "admin_errorlog" 

 

.... 중략....

 

*SSL
my_ssl
        CertificateFile = "/app/tmax/webtob/ssl/_wildcard_.domain.com_201xxxx.crt.pem",
        CertificateKeyFile = "/app/tmax/webtob/ssl/_wildcard_.domain.com_201xxxx.key.pem",
        CACertificateFile = "/app/tmax/webtob/ssl/AddTrustExtxxxCARoot.crt",
        CACertificatePath = "/app/tmax/webtob/ssl/Chain"

 

virtualhost형태로 구성되어 있던터라 위와같이 해 뒀다.

 

P.S. URLRewrite를 세팅하려고  했으나 WebtoB 버전이 너무 낮아서 그런지 tmax에서 제공하는 세팅을 인식하지 못하고 에러를 내뱉는다. ㅠ.ㅠ;;;

 

임시로 javascript로 처리하고 끝. ㅎㅎㅎ

 

 

 



운영을 하다보면, 또는 고객사의 정책이 변경되는 경우 기존 운영중인 apache를 추가적으로 연동해야 하는 경우가 있다.

 

아래는 일반적으로 고객용과 내부 관리자용 시스템을 구부하여 시스템 구성을 하는 경우이다.

 

 

 

 

대고객용은 WAS1, 2를 Clustering하여 로드밸런싱 형태로 아파치와 연동한다. 내부 관리자용은 아파치연동없이 WAS3만 서비스한다. 이에 대한 Apache와 Tomcat의 설정은 다음과 같다.

 

httpd.conf, httpd-ssl.conf는 일반적이니 생략하고 worker.properties만 보자

 

worker.list=loadbalancer
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=was1,was2

 

# WAS1 Worker
worker.was1.host={server_host or server ip}
worker.was1.port=8088
worker.was1.type=ajp13
worker.was1.lbfactor=1
worker.was1.fail_on_status=400,503


 

#Define WAS2 Worker
worker.was2.host={server_host or server ip}
worker.was2.port=8089
worker.was2.type=ajp13
worker.was2.lbfactor=1
worker.was2.fail_on_status=400,503


---------- uriworkermap.properties 설정 ----------

/*=loadbalancer

 

 

그런데 어느날 고객사에서 내부 관리자용 서비스도 apache를 연동해서 진행해달라고 한다.

또 보안지침이 강화가 되었으니 http로만 서비스하던것을 https로도 해달란다.

그래서 설정을 추가하기로 하는데...

 

1. WAS 용 SSL 인증서가 있냐고 문의 ==> 인증서는 Apache용만 있다고 한다.

 

그래서 아래와 같이 vHost를 이용하여 추가하기로 계획을 세웠다.

 

 

즉 기존 아파치에 도메인만 다르게 해서 세팅하는 방식. 즉 virtual host를 활용한 방법이다.

고객사에 관리자웹에서 사용할 sub-domain을 하나 달라고 했다.

고객사 담당자가 확인해 보더니 sub-domain을 추가로 만들수 없다고 한다. 에잉? 순간 난감.

기존 도메인을 그대로 쓰면서 포트만 다르게 해달라고 한다.

 

2. 사용자 Web과 관리자 Web이 같은 도메인을 사용하면서 포트만 다르게 사용하는 경우

 

 

 

할수 없이 위와같이 기존 아파치서버를 복사하여 관련설정만 바꿔서 세팅완료.

포트는 기존과 동일하게 사용하면서 프로토콜만 http에서  https로 변경.

 

이때의 workers.properties는 이전보다 간단해진다.

worker.list=was3
worker.was3.host={server_host or server ip}
worker.was3.port=9090
worker.was3.type=ajp13
worker.was3.fail_on_status=400,503

---------- uriworkermap.properties 설정 ----------
/*=was3

 

 

 

 

 



기본적으로 윈도우용 아파치를 구하기가 쉽지 않다.

아래 사이트에서 아파치와 톰캣연동을 위한 mod_jk를 구한다.

 

64비트용으로 다운받음

https://www.apachelounge.com/download/win64/

 

Apache2.x 를 설치한다.

다운받은 아파치를 적당한위치에 풀고 압축을 해제한다.

윈도우 서비스에 등록한다. : 서비스하지 않고 테스트용이라면 무시

 

~bin> httpd -k install

 

설치하려는 아파치가 2개이상이거나 별도의 서비스이름으로 서비스등록하고자 하다면  -n <service_name> 을 추가한다.

apache_2.4_server 라는 service 이름으로 등록하고자 한다면

~bin> httpd -k install -n apache_2.4_server

와 같이 입력한다.

 

기본 아파치가 설정정보에서 경로정도만 변경한다.

 

--------------------------  httpd.conf ----------------------------

 

 - ServerRoot "C:/ADMIN_UIS/Server/Apache24"

 - Listen 80

 - ServerName admin.domain.com:80

 - <Directory "C:/Server/Apache24/htdocs">

 - ScriptAlias /cgi-bin/ "C:/Server/Apache24/cgi-bin/"

 - <Directory "c:/Server/Apache24/cgi-bin">


#####  MOD_JK 설정 추가 ####
LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
  JkWorkersFile conf/workers.properties
  JkLogFile logs/mod_jk.log
  JkLogLevel info
</IfModule>

 

#vhost는 미사용이므로 일단 주석처리

 

 

------------------------------  workers.properties ---------------------------------

worker.list=tomcat_admin
worker.tomcat_admin.type=ajp13
worker.tomcat_admin.host=admin.domain.com
worker.tomcat_admin.port=8009

 

------------------------------  uriwokermap.properties ----------------------------

/*=tomcat_admin

 

https를 적용하기 위한 처리

 

------------------------------ httpd-ssl.conf  -----------------------------

Listen 443
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

SSLPassPhraseDialog  builtin


SSLSessionCache none
SSLSessionCacheTimeout  300

<VirtualHost *:443>

#   General setup for the virtual host
DocumentRoot "C:/Server/Apache24/htdocs"
ServerName admin.domain.com:443
ServerAdmin admin@domain.com
ErrorLog "logs/error.log"
TransferLog "logs/access.log"

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

SSLCertificateKeyFile "conf/cerFiles/key.pem"
SSLCertificateFile "conf/cerFiles/cert.pem"
SSLCertificateChainFile "conf/cerFiles/caChain.pem"
SSLCACertificateFile "conf/cerFiles/ca.pem"

 

#<FilesMatch "\.(cgi|shtml|phtml|php)$">
#    SSLOptions +StdEnvVars
#</FilesMatch>
<Directory "c:/Server/Apache24/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
CustomLog "logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>                                 

 

 

 



« PREV : 1 : ··· : 7 : 8 : 9 : 10 : 11 : 12 : 13 : ··· : 61 : NEXT »