728x90
반응형

요즘 많은 사이트들이 https 프로토콜을 사용을 합니다. 개발을 할때도 http 가 아닌 https 로 통신해야하는 경우가 있는데, SSL 인증서를 구입하기에는 비용이 비싼것으로 알고 있습니다. 간단하게 개발을 위한 사설 인증서를 발급받아서 https로 Tomcat을 구동하는 방법을 알아 보기로 합니다. 준비 사항이 있는데, 개발 PC에 JDK 와 Tomcat이 설치가 되어 있어야 합니다. 설치에 대한 내용은 간단한 것이므로 생략하도록 합니다.

* 명령어 중 빨간 글씨는 자신이 원하는 것으로 바꾸어도 됩니다.

JDK를 이용한 KeyStore 생성

JDK에서 제공하고 있는 keytool을 이용해 keystore를 생성합니다. Windows의 명령프롬프트를 관리자로 실행하여 아래와 같이 keytool을 실행합니다.

keytool -genkey -alias tomcat -keypass changeit -storepass changeit -keyalg RSA -keystore F:\Project\ssl\.keystore 

keytool은 다른 목적으로 storepass와 keypass를 사용합니다. storepass는 키 저장소에 액세스하는 데 사용됩니다. keypass는 특정 키 쌍의 개인 키에 액세스하는 데 사용됩니다. keyalg 는 key algorithm name 을 이야기하며 RSA라는 것으로 지정합니다. 그리고 저장장소는 "F:\Project\ssl\.keystore" 로 지정합니다. 

C:\WINDOWS\system32>keytool -genkey -alias tomcat -keypass changeit -storepass changeit -keyalg RSA -keystore F:\Project\ssl\.keystore
이름과 성을 입력하십시오.
  [Unknown]:  localhost
조직 단위 이름을 입력하십시오.
  [Unknown]:
조직 이름을 입력하십시오.
  [Unknown]:
구/군/시 이름을 입력하십시오?
  [Unknown]:
시/도 이름을 입력하십시오.
  [Unknown]:
이 조직의 두 자리 국가 코드를 입력하십시오.
  [Unknown]:
CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown이(가) 맞습니까?
  [아니오]:  예


Warning:
JKS 키 저장소는 고유 형식을 사용합니다. "keytool -importkeystore -srckeystore F:\Project\ssl\.keystore -destkeystore F:\Project\ssl\.keystore -deststoretype pkcs12"를 사용하는 산업 표준 형식인 PKCS12로 이전하는 것이 좋습니다.

C:\WINDOWS\system32>

C:\에 .keystore가 생성되었습니다. 그런데 키 생성시 경고가 발생했습니다. 생성된 keystoretype 이 JKS 키로 생성되었는데, 이는 "Java KyeStore"의 준말로 Java 환경에서만 사용이가능하니, 산업 표준 형식인 PKCS12(Public Key Cryptogrephic Standards)로 변환을 하라는 것 입니다. PKCS12 는 여러 플랫폼에서 사용이 가능합니다. 변환은 아래 명령어로 변환합니다.

keytool -importkeystore -srckeystore F:\Project\ssl\.keystore -destkeystore F:\Project\ssl\.keystore -deststoretype pkcs12

실행을 하면 아래와 같이 성공되었다고 나타납니다. 기존 keystore 파일은 keystore.old 로 백업이 된 것도 확인 됩니다.

C:\WINDOWS\system32>keytool -importkeystore -srckeystore F:\Project\ssl\.keystore -destkeystore F:\Project\ssl\.keystore -deststoretype pkcs12
소스 키 저장소 비밀번호 입력:
tomcat 별칭에 대한 항목이 성공적으로 임포트되었습니다.
임포트 명령 완료: 성공적으로 임포트된 항목은 1개, 실패하거나 취소된 항목은 0개입니다.

Warning:
"F:\Project\ssl\.keystore"을(를) Non JKS/JCEKS(으)로 이전했습니다. JKS 키 저장소가 "F:\Project\ssl\.keystore.old"(으)로 백업되었습니다.

C:\WINDOWS\system32>

CER 인증서 생성

앞에서 생성한 KeyStore를 이용하여 인증서를 만들어 줍니다. 명령어는 아래와 같습니다.

keytool -export -alias tomcat -storepass changeit -file f:\Project\ssl\tomcat.cer -keystore f:\Project\ssl\.keystore
C:\WINDOWS\system32>keytool -export -alias tomcat -storepass changeit -file f:\Project\ssl\tomcat.cer -keystore f:\Project\ssl\.keystore
인증서가 <f:\Project\ssl\tomcat.cer> 파일에 저장되었습니다.

C:\WINDOWS\system32>

명령어를 실행하면 tomcat.cer 파일이 F:\Project\ssl 폴더에 생성됩니다.

Tomcat 설정

저는 이클립스를 사용할 것이기 때문에 아래와 같이 간단하게 Tomcat 서버 설정 후 Test 라는 프로젝트를 만들어 테스트를 진행하였습니다. 우선 http 통신과 Test 프로젝트가 동작되는 환경을 구성합니다.

 

1. 이클립스 [Window → Show View → Servers] 를 클릭합니다.

2. 아래와 같은 Servers 탭이 나타나는데 파란색 글씨를 클릭합니다.

3. Tomcat 을 추가하기 위하여 리스트의 apache 폴더 안의 Tomcat 을 자신의 PC에 맞는 버전으로 선택하여 줍니다. 저는 Tomcat 8.5가 설치되어 있기 때문에 "Tomcat v8.5 Server"를 선택하였습니다. 그리고 Tomcat 이 설치된 경로를 잡아주고 완료합니다.

4. 간단한 Test 프로젝트를 생성하고 "index.html" 파일을 만들어 줍니다. 그리고 Severs 탭에서 Tomcat v8.5에 마우스 오른쪽 버튼으로 나오는 메뉴 [Add and Remove] 선택합니다. Test 프로젝트를 Add 버튼으로 오른쪽으로 옮겨 줍니다.

5. 서버를 기동하여 "http://localhost:8080/Test/" URL로 접근하면 아래와 같이 화면이 나타납니다.

 

그렇다면 이제 Tomcat 설정 파일 server.xml 파일을 열어 SSL 통신을 위한 Connector 에 등록합니다. server.xml 파일은 아래와 같은 위치에 있으니 참고하십시오.

<Connector port="8443" protocal="HTTP/1.1" maxThreads="150"
    SSLEnabled="true" clientAuth="false" keyAlias="tomcat"
    keystoreFile="F:/Project/ssl/.keystore" keystorePass="changeit"
    scheme="https" secure="ture" sslProtocol="TLS" />

설정이 완료되었다면 Tomcat을 구동하여 "https://localhost:8443/Test/" 로 접속합니다. 그런데 아래 그림과 같이 안전하지 않은 사이트라고 판단을 하여 위험 화면이 나타납니다. 이는 신뢰하는 보안 인증서가 아니기 때문에 아래와 같이 위험 화면이 나타나는 것으로 화면 하단의 "고급" 버튼을 클릭하여 "localhost(안전하지않음)으로 이동" 을 클릭하면 정상적으로 페이지가 출력됩니다. 

 

이러한 위험 페이지가 계속 나타난다면 개발하기 귀찮아 집니다. 그래서 아래와 같이 인증서를 브라우저에 등록하여 위험 페이지가 나오지 않다록 설정할 수 있습니다. 저는 크롬을 기반으로 설명을 하도록 하겠습니다.

 

1. 크롬에서 "chrome://settings/security" 를 입력하여 아래 "인증서 관리"를 클릭합니다.

2. 인증서 팝업창에서 "가져오기"를 선택하여 줍니다.

3. 인증서 가져오기 마법사가 실행되며 다음을 눌러 진행합니다. 이때 파일을 선택하는 화면에서 위에서 만들어준 "tomcat.cer" 파일을 찾아보기하여 선택합니다. 

4. 인증서를 저장하는 부분은 "모든 인증서를 다음 장소에 저장" 선택 후, 인증서 저장장소는 찾아보기로 "신최할 수 있는 루트 인증 기관"을 선택하여 다음으로 진행하고 마법사를 완료합니다. "마침" 버튼을 클릭하면 보안 경고가 나오는데, "예"를 눌러 설치를 마무리 합니다.

 이제 크롬을 재기동 후 "https://localhost:8443/Test/" 로 접속하면 위험페이지 없이 원하는 index.html 페이지가 표시되는 것을 확인 할 수 있습니다.

지금까지 Tomcat 에서 HTTPS 통신을 하는 개발환경을 구성하여 보았습니다. 

728x90
반응형
728x90
반응형

어제 설치한 JBoss를 아파치와 연동을 하는 부분을 시도해보겠다. 일단 준비물은 아래와 같다.

1. httpd-2.2.11
     (apache 2.2.11 openssl을 이용하여 https 서비스가 가능게 설치된것)
     ---> 설치방법 바로가기
2. JBoss 5.1.0 GA 
     (5.x 버전이면 크게 상관이 없을듯하다. 4.x 버젼과 조금은 차이가 있지만....)
     ---> JBoss 설치 바로가기
3. mod_jk 1.2.28
     (apache 2.2.11 설치방법의 글을 참조해서 설치...)


아파치 설치방법에 나온것은 Tomcat 과 연동이 되도록 적혀있다. 연동설정하는 부분을 제외한 부분은 모두 동일하다. 즉, 톰켓을 연동하던 JBoss를 연동하던...설정부분만 바꿔주면 된다는 뜻...!!!!

1. %APACHE_HOME/conf/httpd.conf 수정

2. %APACHE_HOME/conf/mod-jk.conf 생성

3. %APACHE_HOME/conf/workers.properties 생성

4. %APACHE_HOME/conf/uriworkermap.properties 생성

5. %JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml 수정

6. %APACHE_HOME/conf/extra/httpd-ssl.conf 수정 
(https 통신을 위한 설정 - https가 필요없다면 하지 않아도 된다.)

7. apache 구동

8. JBoss 구동

※ 주의
 JBoss만 구동하여 외부에서 접속하기 위해서는 구동시 -b 옵션으로 서버IP를 설정해야 하지만, 아파치와 연동시 -b 옵션을 주게되면 아파치와 연동이 안된다.
 %APACHE_HOME/conf/workers.properties 파일에서 설정한 host 부분때문인것 같은데, host 부분이 localhost로 되어있기때문에 127.0.0.1의 호출로 JBoss를 연결하지 못하기 때문인듯하다. 외부에서 직접 JBoss의 접속을 사용하지 않는다면 그냥 설정한데로 사용하면 될듯!!!

9. https://[서버]/jmx-console/ 테스트



10. https://[서버]/web-console/ 테스트


위 테스트는 https 를이용하여 접속한것이기 때문에 주소창이 빨강색으로 표시된다. https 를 사용하지 않고 하는 방법은 위에 https 설정만 빼고 하면 된다.
728x90
반응형
728x90
반응형










지난번 포스트에서 https 설정(apache2.2.x + tomcat6.0 + mod_jk1.2.28 + openssl0.9.8k (ssl인증 설치, https))을 알아보았다. 근데 https 라고함은 사용자들이 직접 https라는 프로토콜을 입력하지는 않는다. 그럼 어떻게 해야할까?

정답은 바로 http 로 들어오면 https로 돌려주는 방법을 사용하면 된다. 
예를 들어 http://test.com/ttt.html 을 사용자가 호출하면 아파치에서 https가 아닌 http 요청을 판단하여 https로 돌려줘 https://test.com/ttt.html 로 만들어 주는 것있다. 

처음엔 리다이렉트를 이용하여 자료를 검색하여 해봤으나 리다이렉트 방법으로는 잘 되지 않았다.
(왜 안되는지 잘 모르겠지만, 설정 방법을 다시 공부해야 할듯...)

리다렉트에 관한 자료
리라이트에 관한 자료
위 자료를 참조하면 리다이렉트와 리라이트에 대해서 알수 있을것이다.

그럼 내가 설정한 httpd.conf 파일은 아래와 같다.


httpd.conf 파일 가장 아랫부분에 추가해줬다.
728x90
반응형
728x90
반응형

CentOS5.2 (업그레이드를 해서 5.3) 에 SSL 인증..즉 HTTPS 서비스가 되도록 아파치를 설치를 해보도록 한다.

아파치는 2.2.x 버전이며 1.3.x 버전과 설치 방법이 조금 다르다. 

아파치 1.3.x 는 mod_ssl을 따로 설치를 해줘야 하지만 아파치 2.2.x 는 아파치안에 포함이 되었기 때문이다.

아파치 1.3.x. 는 이곳에서 설치를 참고

즉, 아파치2.2.x 가 설치가 되어있다면...다시 지우고 설치를 해야한다는 것이다..(설치시 ssl 옵션을 줬다면 상관없다...)

1) openssl 설치
아래 사이트에서 최신 소스를 다운로드 한다. (openssl-0.9.8k.tar.gz)
압축을 풀고 설치를 한다.


2) 아파치 설치
아파치는 httpd-2.2.11을 설치하였다.


3) mod_jk 설치
tomcat-connectors-1.2.28-src.tar.gz 을 설치하였다.
다운로드 하는 주소가 기억이...;;;;


4) SSL 생성
SSL에 관한 자세한 설명은 여기서 다루지 않도록한다.
인증기관에서 받아오는 방식은 아래 순서대로 하면 된다.
1. openssl을 이용요해서 개인키(비밀키) 생성
2. 개인키 확인
3. openssl로 CSR 생성
4. CSR 확인
5. 개인키 백업
6. 인증기관에 CSR 접수
7. 네트웍 확인 사항 - SSL 적용에 따른 방화벽(443번 포트 열어야 함), L4 switch 설정 확인
8. 인증기관에서 CSR 파일 답신 확인



5) 설정 파일 설정
(mod_jk 설정 파일)
# /usr/local/apache2/conf/workers.properties


# /usr/local/apache2/conf/httpd.conf


# /usr/local/apache2/conf/extra/httpd-ssl.conf


6) 아파치를 재구동하고 https 접속
접속하면 아래 화면처럼 나온다.


여기서 이 웹 사이트를 계속 탐색합니다(권장하지 않음) 를 누르면...



완료~!!!!!!ㅎㅎㅎㅎ
728x90
반응형

+ Recent posts