2013년 6월 11일 화요일

JEUS6.0_SSL적용


에서 퍼왔습니다. 좋은글 감사합니다.

Tomcat 같은경우는 지천에 깔린게 SSL적용 방법 글입니다.
이상하게 Jeus에 대해서는 명확하게 나온게 없고, 한번 해봤던 사람이 따라할 수 있게 글을 작성해 논것 같습니다.
그 사람꺼 다른사람이 긁어서 포스팅하고.. 또 그걸 다른사람이 배끼고.. 이 반복적인 검색에 짜증이 나던 찰라..

티맥스의 메뉴얼을 보고 검색한 내용도 보고 하면서 간단하게 정리해봤습니다.
지금부터 포스팅 시작합니다.

Jeus 6에 SSL을 적용하는 절차는 다음과 같습니다.

1. 서버에 keystore 파일 생성, 인증서 생성, truststore 생성
2. WEBMain.xml에 해당 내용 추가
3. JEUSMain.xml에 해당 내용 추가
4. 테스트

찬찬히 같이 살펴 보겠습니다.

1. 서버에 keystore 파일 생성, 인증서 생성, truststore 생성

모든 암호는 'password'로 한다는 가정이 깔려있습니다!!

keystore 파일 생성 명령어

C:\Users\catchbug>keytool -genkey -alias jeusssl -keyalg RSA -validity 7 -keystoreC:\TmaxSoft\JEUS6.0\config\Hyper2-WAS\keystore
keystore 암호를 입력하십시오:
새 암호를 다시 입력하십시오:
이름과 성을 입력하십시오.
  [Unknown]:  Bon Woong, Ku
조직 단위 이름을 입력하십시오.
  [Unknown]:  dev
조직 이름을 입력하십시오.
  [Unknown]:  Eloitcube
//시 이름을 입력하십시오?
  [Unknown]:  Seoul
/도 이름을 입력하십시오.
  [Unknown]:  Seoul
이 조직의 두 자리 국가 코드를 입력하십시오.
  [Unknown]:  KR
CN="Bon Woong, Ku", OU=dev, O=Eloitcube, L=Seoul, ST=Seoul, C=KR(맞습니까?

  [아니오]:  y

<jeusssl>에 대한 키 암호를 입력하십시오.
        (keystore 암호와 같은 경우 Enter를 누르십시오):


위 명령어에서 C:\TmaxSoft\JEUS6.0\config\Hyper2-WAS\keystore 부분은 각자 환경에 맞게 변경해야 합니다.
JEUS_HOME에서 config 디렉토리 밑에 자신이 설정한 혹은 설치하는 과정에서 자동으로 결정된 (기본은 컴퓨터이름) 이름의 node 이름 디렉토리 밑에
keystore 파일을 생성해야 합니다.
이 위치에 keystore라는 이름으로 저장해두면 참으로 똑똑하신 제우스님께서 알아서 갖다 쓰신다고 합니다.

인증서 생성 명령어

C:\Users\catchbug>keytool -export -alias jeusssl -keystore C:\TmaxSoft\JEUS6.0\config\Hyper2-WAS\keystore -rfc –file C:\TmaxSoft\JEUS6.0\config\Hyper2-WAS\jeusssl.cer
keystore 암호를 입력하십시오:
인증서가 <C:\TmaxSoft\JEUS6.0\config\Hyper2-WAS\jeusssl.cer> 파일에 저장되었습니
.


위에서 만든 keystore파일을 이용해 인증서(공개키)를 생성합니다.
첫번째 명령어와 마찬가지로 각자의 경로에 맞게 변경하여 명령어를 쓰면 됩니다.
이 인증서는 truststore 파일을 생성하기 위한 임시파일로 나중에 지워버려도 상관없습니다.
만약 웹서비스를 https로 한다면 클라이언트한테 이 인증서랑 패스워드 알려주고 쓰라고 던져주면 됩니다.

truststore 생성 명령어

C:\Users\el01tcube>keytool -import -alias jeussslcert -file C:\TmaxSoft\JEUS6.0\config\Hyper2-WAS\jeusssl.cer-keystore C:\TmaxSoft\JEUS6.0\config\Hyper2-WAS\truststore
keystore 암호를 입력하십시오:
새 암호를 다시 입력하십시오:
소유자: CN="Bon Woong, Ku", OU=dev, O=Eloitcube, L=Seoul, ST=Seoul, C=KR
발급자: CN="Bon Woong, Ku", OU=dev, O=Eloitcube, L=Seoul, ST=Seoul, C=KR
일련 번호: 4de44a2a
유효 기간 시작: Tue May 31 10:53:46 KST 2011 : Tue Jun 07 10:53:46 KST 2011
인증 지문:
         MD5:  9E:E7:01:33:15:16:24:55:3A:13:0C:3E:9F:A6:53:68
         SHA1: 52:B0:93:0D:BF:D5:C7:28:F0:89:48:98:D4:4B:9A:15:76:9A:BB:4C
         서명 알고리즘 이름: SHA1withRSA
         버전: 3
이 인증서를 신뢰하십니까? [아니오]:  y
인증이 keystore에 추가되었습니다.


위에서 생성한 인증서(공개키)를 이용해 truststore를 생성합니다.
마찬가지로 각자의 경로에 맞게 수정해서 사용하면 됩니다.
keystore파일과 마찬가지로 truststore파일도 해당위치기 'truststore'라고 저장하면
제우스님께서 알아서 갖다 쓰신답니다.

여기까지 인증서 파일을 생성했다면, 1번의 해당하는 내용은 끝입니다.

이제 2번 WEBMain.xml에 적용하는 부분을 보겠습니다.

제우스는 기본적으로 한개의 Container를 가지고 있습니다.
저 같은 경우는 1개의 Container를 더 추가해서 container2를 생성하고 그 안에 servlet 엔진을 설정했습니다.
이 방법에 대한 내용은 아래 링크를 통하면 쉽게 아실수 있습니다.


그럼 다음과 같은 경로가 생성됩니다.

C:\TmaxSoft\JEUS6.0\config\Hyper2-WAS\Hyper2-WAS_servlet_engine2


이 디렉토리의 의미를 간단히 살펴보면, Hyper2-WAS가 제우스가 설치될때 사용했던 노드 이름입니다.
그 안에 생긴 Hyper2-WAS_servlet_engine2는 Hyper2-WAS라는 노드 밑에 servlet 엔진이 추가되었고, 2번째로 생성된 servlet엔진이기에 2가 붙었습니다.
각자 환경마다 조금씩 다르지만, 의미는 모두 같습니다.

각자 환경에 맞는 위 디렉토리에 가면 WEBMain.xml 파일이 있습니다.

세팅이 완료된 WEBMain.xml 파일입니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0">
    <context-group>
       <group-name>MyGroup</group-name>
       <webserver-connection>
           <http-listener>
               <listener-id>SNJServer</listener-id>
               <port>10001</port>
               <output-buffer-size>8192</output-buffer-size>
               <thread-pool>
                   <min>10</min>
                   <max>20</max>
               </thread-pool>
               <postdata-read-timeout>30000</postdata-read-timeout>
                <back-log>50</back-log>
                <server-access-control>false</server-access-control>
                <scheme>https</scheme>
                <ssl-config>
                    <enable-secure>true</enable-secure>
                </ssl-config>
           </http-listener>
       </webserver-connection>
    </context-group>
</web-container>


기본적으로 생성되는 WEBMain.xml에 제가 추가한 내용은 다음과 같습니다.

                <back-log>50</back-log>
                <server-access-control>false</server-access-control>
                <scheme>https</scheme>
                <ssl-config>
                    <enable-secure>true</enable-secure>
                </ssl-config>


이렇게 설정하면 제우스가 SSL을 사용한다고 인지하게 됩니다.

그렇다면 제우스가 SSL을 사용하려면 인증서가 필요하고, 인증서를 사용하려면 비밀번호가 필요합니다.
그 부분은 3. JEUSMain.xml에 설정해주는 것입니다.

3. JEUSMain.xml에 해당 내용 추가

JEUSMain.xml은 내용이 길어 어떤 위치에 넣어야 하는지에 대해 말씀 드리는걸로 대체하겠습니다.
예를 들어 나는 container2에 serlet engine2에 SSL을 적용하고 싶다!! 라면..
xml에서 아래와 같은 내용을 찾습니다.


      <engine-container>
         <name>container2</name>
         <id>78</id>
         <base-port>10531</base-port>
         <engine-command>
            <type>servlet</type>
            <name>engine2</name>
         </engine-command>
         <command-option>
             -Djeus.ssl.keypass=eloitcube
             -Djeus.ssl.trustpass=eloitcube
         </command-option>
      </engine-container>

보면 <engine-container태그 안에 <name>태그를 보면  container2라고 떡하니 써있습니다.
SSL은 container 단위로 설정을 같이 쓸수 있기 때문에 그 안에 다음과 같은 내용을 넣습니다.


            <command-option>
             -Djeus.ssl.keypass=password
             -Djeus.ssl.trustpass=password
            </command-option>


위에서 인증서를 생성할때 'password'를 암호로 사용한다는 전제가 있었습니다.
그래서 위 처럼 세팅이 되었고, 실제 반영할때는 각자에 맞게 수정해서 적용하면 됩니다.

이제 해당 servlet엔진에 port로 https를 사용해서 접속해 보십시요.
아마 보안경고창이 발생될겁니다.

무시하고 그래도 들어가겠다고 하면 https가 적용된 URL로 접속된 사이트가 보일것 입니당~~ ㅎㅎ

댓글 없음:

댓글 쓰기