⊙ 윈도우 환경에서 Open SSL 설치

참고 사이트 :

http://blog.naver.com/PostView.nhn?blogId=crowehj&logNo=120016211553&redirect=Dlog&widgetTypeCall=true


컴파일을 하기 싫으면 Apach2를 설치할때 open-ssl 포함버전으로 설치하면된다. 


⊙ 리눅스(우분투) 환경에서 Open SSL 설치

 > apt-get install openssl

위의 명령을 치면 자동으로 설치된다. 만약 소스파일을 다운로드 받으면 make 명령으로 빌드해서 사용한다.


⊙ Open SSL 인증서 생성하기

/* 자료출처: http://golmong.tistory.com/112 */

1. Demo CA 설정
- 현재 디렉토리에 demoCA 디렉토리 생성 : mkdir demoCA
- demoCA 디렉토리 안에 시리얼 파일 생성 : serial 이란 이름의 text 파일에 00 을 적는다.
- index 파일 생성 :  index.txt 란 이름으로 빈 파일을 만든다.

2. CA 인증서 생성
- CA 개인키 생성 :  openssl genrsa -des3 -out ca.key 1024 
- Self-Signed CA 인증서 생성 :  openssl req -new -x509 -days 365 -key ca.key -out ca.crt 

3. 하위 인증서 생성 (예: HTTPS Web 서버용..)
- server 개인키 생성 : openssl genrsa -des3 -out server.key 1024 
- server 인증서 발급을 위한 요청파일 생성 : openssl req -new -days 365 -key server.key -out server.csr
- server 인증서 발급 : openssl ca -in server.csr -out server.crt -keyfile ca.key -cert ca.crt -outdir .

위 작업의 결과로 server.crt 라는 server용인증서가 생성되고 index 파일에 발급내역이, serial이 16진수로 1씩 증가한다.

4. 인증서 인코딩 포멧 변경
- openssl 이 생성하는 인증서의 인코딩은 발급 시 옵션을 주지 않으면 디폴트가 PEM (base64 encoding)이다.
- Java 등에서 사용하기 위한 DER 포맷(바이너리)으로 변경은 다음과 같이 수행한다.
   : openssl x509 -in ca.crt -out ca.der -outform DER

5. 인증서 내용 보기
- openssl x509 -in ca.crt -text   (PEM 포맷인 경우)
- openssl x509 -in ca.der -inform DER -text (DER 포맷인 경우)


6. 참고사이트 

http://knamhun.blogspot.com/2010/07/ssl-openssl.html

http://theeye.pe.kr/entry/how-to-install-apache2-with-mod-ssl-on-linux


⊙ Apache mod-ssl 설정 (윈도우 & 리눅스 공통이나 수정 파일 경로가 틀림)

위에서 만든 개인키와 인증서를 특정 디렉토리에 복사해놓는다.


- httpd.conf 파일 수정

Include conf/extra/httpd-ssl.conf 주석해제


- httpd-ssl.conf 설정
<VirtualHost *:443>

#   General setup for the virtual host
DocumentRoot "/www/test"
ServerName www.test.com
ServerAdmin sysadmin@test.com
ErrorLog "/logs/test.com-error_log"
TransferLog "/logs/test.com-access_log"

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

SSLCertificateFile "/usr/local/apache2/conf/server.crt" ---> 위에서 생성한 인증서
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key" ---> 위에서 생성한 개인키


JKMountFile conf/uriworkermap.properties ----> JBOSS의 URI 맵핑 파일 


설정이 완료되면 Apache를 재시작한다..


브라우저에 https://서버주소를 치고 들어가면 접속이 되는 것을 확인할 수 있다.


[출처]http://blog.naver.com/kittenjun/10130747724

'java IDE > apache' 카테고리의 다른 글

[apache] 톰캣 연동 후 아파치 SSL 인증서로 톰캣 SSL 연동  (0) 2013.04.02
[apache] 톰캣, SSL연동  (0) 2013.04.02
[apache] SSL 설정  (0) 2013.04.02
[apache] 톰캣 연동설정  (0) 2013.04.02
[apache] 설치  (0) 2013.04.02
Posted by airlueos
,

출처: http://blog.daum.net/question0921/766


■ 톰캣에 SSL 인증서 생성 방법

 

톰캣의 SSL 설정은 server.xml 설정파일에서 수정하며 된다. 우선 톰캣에 SSL설정을 지정하기 전에 인증서 생성 방식에 대해 알아보자. 톰캣은 인증서로 JKS(Java KeyStore) 포맷만 사용 가능하다. JKS는 PKCS11 형태와 PKCS12 형태의 key를 사용한다.(PKCS12는 국제 표준입니다.) 이 포맷은 자바의 JDK 의 Keytool 로 생성 가능하다.

 

keytool 을 사용하여 인증서를 생성하는 방법은 아래와 같다.

 

{자바 홈}/bin 이동

> keytool -genkey -alias tomcat -keyalg RSA

 

인증서는 Openssl로 생성할 수도 있고 여러 방법이 있다.

 

 

 

■ 톰캣에 SSL 보안서버 적용방법

 

톰캣에 SSL 적용 방법은 두 가지가 있다.

 

1. JSSE : 자바 실행 환경에서 SSL 적용(독자적인 톰캣 설정)

2. APR : Apache Portable Runtime. 아파치와 톰캣이 연동되어 있는 상태에서 아파치 인증서를 톰캣에서 사용하는 방법 

 

 아파치와 톰캣에 연동되어 있고 아파치에 SSL이 적용되어 있다면 톰캣도 아파치의 SSL 인증서를 사용하여 SSL를 구축할 수 있다. 이 방법은 다음과 같다. 

 

 

 

■ APR 을 적용한 server.xml 파일 수정

 

APR은 아파치와 톰캣이 연동되어 있을 때 사용하는 방법으로 아파치에 openssl 을 사용한 인증서를 SSL에 등록한 후 아파치에 SSL이 동작할 때 사용할 수 있다. APR은 아파치 인증서를 톰캣이 같이 사용하는 방법을 제공한다. 우선 APR은 필요한 패키지가 있다. 필요한 패키지는 "libapr1-dev" 패키지와 openssl에서 사용하는 "libssl-dev" 패키지가 설치되어 있어야 적용이 가능하다. 톰캣에 APR을 적용하여 SSL을 동작하게 하는 방법은 다음과 같다.

 

server.xml 파일을 연 후 </Engine> 태그위에 아래와 같이 작성한다. 이 때 <Listener>태그가 먼저 와야 인증서를 제대로 읽을 수 있다. <Connector> 태그에 SSLCertificateFile 속성에 crt 파일의 경로를 지정하고 SSLCertificateKeyFile 속성에 .key 파일의 경로를 지정한다.

 

    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" SSLRandomSeed="builtin" />

    <Connector port="443" maxHttpHeaderSize="8192"

                maxThreads="150"

                enableLookups="false" disableUploadTimeout="true"

                acceptCount="100" scheme="https" secure="true"

                SSLEnabled="true"

                SSLCertificateFile="C:/server/Apache2.2/conf/ssl/my-server.crt"

                SSLCertificateKeyFile="C:/server/Apache2.2/conf/ssl/my-server.key"

    /> 

</Engine> 

 

실제 수정한 내용 

 

주의할 점은 <Listener> 태그가 앞에 와야 crt 파일과 key 파일로 지정한 경로를 제대로 읽을 수 있다.

 

위와 같이 설정을 마쳤다면 URL 주소의 프로토콜 값을 "http:" 와 "https:"를 사용하여 같은 페이지를 요청하여 인증서 방식이 동작하면 설정이 완료된 것이다.

'java IDE > apache' 카테고리의 다른 글

[apache] Apache2 + Open SSL 설정  (0) 2013.04.03
[apache] 톰캣, SSL연동  (0) 2013.04.02
[apache] SSL 설정  (0) 2013.04.02
[apache] 톰캣 연동설정  (0) 2013.04.02
[apache] 설치  (0) 2013.04.02
Posted by airlueos
,

출처: http://blog.daum.net/question0921/


아파치에 PHP 모듈이 등록되어 있고, JSP를 사용하기 위해 톰캣이 설치되어 있다고 가정한 후 설명한다. 아파치와 톰캣을 연동하기 위해서는 mod_jk.so 모듈을 아파치에 등록한 후 톰캣이 필요한 경우 톰캣에 요청 처리를 위임하는 방법으로 동작한다. mod_jk.so 모듈을 아파치에 등록하면 URL 요청을 분석하여 해당 URL에 톰캣에서 지정한 경우 톰캣에서 요청을 위임 받아 처리하는 방법이다.

 

 

설치 환경

Apache 2.2 버전  /  Tomcat 6.0 버전

 

설치 방법은 두 가지가 있다.

1. 톰캣 auto-configure 방식

2. 아파치 httpd.conf 설정 파일에 직접 모듈을 등록하는 방법 

 

 

 

* mod_jk.so 파일 다운로드

 

 위의 사이트로 접속한 후 해당 운영체제를 선택한다. so 파일을 다운로드 할 때 아파치 서버의 버전을 확인하고 해당 아파치 서버 버전의 so 파일을 다운로드해야 한다. 아파치 서버 버전이 다른 so 파일은 모듈을 등록해도 아파치 서버가 읽지 않는다. 이 때 아파치 서버는 "The requested operation has failed" 에러를 출력한다. 에러 로그를 볼 때는 아파치의 "test configure" 실행파일을 실행하면 된다.

 

 

 

1. 톰캣 auto-configure 방식

 

 톰캣 ${톰캣 경로}/conf/server.xml  파일을 열어 <Engine ... ></Engine>태그 사이에 다음과 같이 모듈을 등록한다.

 

<Engine name="Catalina" defaultHost="localhost">

    <Listener className="org.apache.jk.config.ApacheConfig" modJk="C:/server/Apache2.2/modules/mod_jk.so"/>
</Engine>

 

 <Listener> 태그를 추가한 후 톰캣을 다시 실행한다. 톰캣을 다시 실행한 후 " ${톰캣 경로}/conf/ "에 /auto 와 /jk 디렉토리가 생성된다. /auto 디렉토리에서 mod_jk.conf 파일을 /jk 디렉토리로 복사한다.

 

 

mod_jk.conf 파일 내용

########## Auto generated on Mon Apr 05 15:05:08 KST 2010##########

<IfModule !mod_jk.c>
    LoadModule jk_module "C:/server/Apache2.2/modules/mod_jk.so"
</IfModule>


<VirtualHost localhost>
    ServerName localhost

    JkMount /manager ajp13
    JkMount /manager/* ajp13

    JkMount /docs ajp13
    JkMount /docs/* ajp13

    JkMount /examples ajp13
    JkMount /examples/* ajp13

    JkMount /host-manager ajp13
    JkMount /host-manager/* ajp13
</VirtualHost>

 

 mod_jk.conf 파일을 보면 요청 URL의 매핑을 정의하고 있다. 매핑 URL 주소 뒤에 ajp13이라는 값은 리다이렉트시 어떤 톰캣 컨터이너를 선택하는가를 결정하는 것이다. ajp12는 톰캣 3버전이고 ajp13은 톰캣 4버전~5버전까지이다. 앞의 URL 값이 들어온다면 리다이렉트 시킨다는 것이다.

 

 

톰캣을 재 시작한 후 아파치 설정 파일 수정 ( mod_jk.so 파일을 아파치에 등록 )

${아파치 경로}/conf/httpd.conf

 

아파치 설정 파일의 맨 마지막에 생성된 mod_jk.conf 설정 파일을 등록

<IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
</IfModule>

 

Include C:\server\tomcat-6.0.26\conf\jk\mod_jk.conf

 

 모듈을 등록했으면 아파치를 다시 시작한다. 이 때 에러가 발생하지 않고 정상적으로 동작한다면 아파치와 톰캣은 연동이 된 것이고 mod_jk.conf 파일에서 지정한 URL값으로 들어오는 요청은 톰캣 컨테이너가 처리하게 된다.

 

worker.properties  파일 작성 ( ${톰캣 경로}/conf/jk )

## workers.properties register ##

workers.tomcat_home = C:\server\tomcat-6.0.26
workers.java_home = C:\server\Java\jdk1.6.0_19

 

worker.list = ajp13
worker.ajp13.port = 8009
worker.ajp13.host = localhost
worker.ajp13.type = ajp13

 

/*.jsp = worker1

 

톰캣과 아파치를 재 시작하여 제대로 연동이 되었나 확인해 본다.

 

 

 

 이 때 루트 경로를 공유하고자 할 경우가 있다. 즉, 아파치 PHP 루트 경로와 톰캣 JSP 루트 경로를 같이 사용하여 .php 일 경우 PHP 루트 경로를 기준으로 문서를 요청할 수 있고 .jsp 인 경우 톰캣의 루트 경로를 기준으로 문서를 요청할 수 있게 만들고 싶다면아파치 웹 서버의 루트 경로를 .jsp 톰캣의 루트 경로를 지정해야 하며 mod_jk.conf 파일에 jk 모듈을 사용하지 않을 시 경로를 지정해 주어야 한다.

 

# All URL goes to tomcat except the one containing /home
  <VirtualHost *:80>
      ServerName testxxx.mysys
      DocumentRoot /www/testxxx/htdocs

  # Use SetEnvIf to st no-jk when /home/ is encountered
      SetEnvIf Request_URI "/home/*" no-jk

  # Now /home will goes to /home/dataxxx/
      Alias /home /home/dataxxx/

      <Directory "/home/dataxxx">
          Options Indexes MultiViews
          AllowOverride None
          Order allow,deny
          Allow from all
      </Directory>

      JkMount /* myssys-xxx

  </VirtualHost>

 

 즉, jk 모듈을 사용하는 모듈을 기본 문서 루트로 잡고 jk모듈을 사용하지 않는 경우(PHP)는 가상으로 문서를 요청하게 해야 한다.

'java IDE > apache' 카테고리의 다른 글

[apache] Apache2 + Open SSL 설정  (0) 2013.04.03
[apache] 톰캣 연동 후 아파치 SSL 인증서로 톰캣 SSL 연동  (0) 2013.04.02
[apache] SSL 설정  (0) 2013.04.02
[apache] 톰캣 연동설정  (0) 2013.04.02
[apache] 설치  (0) 2013.04.02
Posted by airlueos
,

출처: http://blog.daum.net/question0921/


아파치에 PHP 모듈이 등록되어 있고, JSP를 사용하기 위해 톰캣이 설치되어 있다고 가정한 후 설명한다. 아파치와 톰캣을 연동하기 위해서는 mod_jk.so 모듈을 아파치에 등록한 후 톰캣이 필요한 경우 톰캣에 요청 처리를 위임하는 방법으로 동작한다. mod_jk.so 모듈을 아파치에 등록하면 URL 요청을 분석하여 해당 URL에 톰캣에서 지정한 경우 톰캣에서 요청을 위임 받아 처리하는 방법이다.

 

 

설치 환경

Apache 2.2 버전  /  Tomcat 6.0 버전

 

설치 방법은 두 가지가 있다.

1. 톰캣 auto-configure 방식

2. 아파치 httpd.conf 설정 파일에 직접 모듈을 등록하는 방법 

 

 

 

* mod_jk.so 파일 다운로드

 

 위의 사이트로 접속한 후 해당 운영체제를 선택한다. so 파일을 다운로드 할 때 아파치 서버의 버전을 확인하고 해당 아파치 서버 버전의 so 파일을 다운로드해야 한다. 아파치 서버 버전이 다른 so 파일은 모듈을 등록해도 아파치 서버가 읽지 않는다. 이 때 아파치 서버는 "The requested operation has failed" 에러를 출력한다. 에러 로그를 볼 때는 아파치의 "test configure" 실행파일을 실행하면 된다.

 

 

 

1. 톰캣 auto-configure 방식

 

 톰캣 ${톰캣 경로}/conf/server.xml  파일을 열어 <Engine ... ></Engine>태그 사이에 다음과 같이 모듈을 등록한다.

 

<Engine name="Catalina" defaultHost="localhost">

    <Listener className="org.apache.jk.config.ApacheConfig" modJk="C:/server/Apache2.2/modules/mod_jk.so"/>
</Engine>

 

 <Listener> 태그를 추가한 후 톰캣을 다시 실행한다. 톰캣을 다시 실행한 후 " ${톰캣 경로}/conf/ "에 /auto 와 /jk 디렉토리가 생성된다. /auto 디렉토리에서 mod_jk.conf 파일을 /jk 디렉토리로 복사한다.

 

 

mod_jk.conf 파일 내용

########## Auto generated on Mon Apr 05 15:05:08 KST 2010##########

<IfModule !mod_jk.c>
    LoadModule jk_module "C:/server/Apache2.2/modules/mod_jk.so"
</IfModule>


<VirtualHost localhost>
    ServerName localhost

    JkMount /manager ajp13
    JkMount /manager/* ajp13

    JkMount /docs ajp13
    JkMount /docs/* ajp13

    JkMount /examples ajp13
    JkMount /examples/* ajp13

    JkMount /host-manager ajp13
    JkMount /host-manager/* ajp13
</VirtualHost>

 

 mod_jk.conf 파일을 보면 요청 URL의 매핑을 정의하고 있다. 매핑 URL 주소 뒤에 ajp13이라는 값은 리다이렉트시 어떤 톰캣 컨터이너를 선택하는가를 결정하는 것이다. ajp12는 톰캣 3버전이고 ajp13은 톰캣 4버전~5버전까지이다. 앞의 URL 값이 들어온다면 리다이렉트 시킨다는 것이다.

 

 

톰캣을 재 시작한 후 아파치 설정 파일 수정 ( mod_jk.so 파일을 아파치에 등록 )

${아파치 경로}/conf/httpd.conf

 

아파치 설정 파일의 맨 마지막에 생성된 mod_jk.conf 설정 파일을 등록

<IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
</IfModule>

 

Include C:\server\tomcat-6.0.26\conf\jk\mod_jk.conf

 

 모듈을 등록했으면 아파치를 다시 시작한다. 이 때 에러가 발생하지 않고 정상적으로 동작한다면 아파치와 톰캣은 연동이 된 것이고 mod_jk.conf 파일에서 지정한 URL값으로 들어오는 요청은 톰캣 컨테이너가 처리하게 된다.

 

worker.properties  파일 작성 ( ${톰캣 경로}/conf/jk )

## workers.properties register ##

workers.tomcat_home = C:\server\tomcat-6.0.26
workers.java_home = C:\server\Java\jdk1.6.0_19

 

worker.list = ajp13
worker.ajp13.port = 8009
worker.ajp13.host = localhost
worker.ajp13.type = ajp13

 

/*.jsp = worker1

 

톰캣과 아파치를 재 시작하여 제대로 연동이 되었나 확인해 본다.

 

 

 

 이 때 루트 경로를 공유하고자 할 경우가 있다. 즉, 아파치 PHP 루트 경로와 톰캣 JSP 루트 경로를 같이 사용하여 .php 일 경우 PHP 루트 경로를 기준으로 문서를 요청할 수 있고 .jsp 인 경우 톰캣의 루트 경로를 기준으로 문서를 요청할 수 있게 만들고 싶다면아파치 웹 서버의 루트 경로를 .jsp 톰캣의 루트 경로를 지정해야 하며 mod_jk.conf 파일에 jk 모듈을 사용하지 않을 시 경로를 지정해 주어야 한다.

 

# All URL goes to tomcat except the one containing /home
  <VirtualHost *:80>
      ServerName testxxx.mysys
      DocumentRoot /www/testxxx/htdocs

  # Use SetEnvIf to st no-jk when /home/ is encountered
      SetEnvIf Request_URI "/home/*" no-jk

  # Now /home will goes to /home/dataxxx/
      Alias /home /home/dataxxx/

      <Directory "/home/dataxxx">
          Options Indexes MultiViews
          AllowOverride None
          Order allow,deny
          Allow from all
      </Directory>

      JkMount /* myssys-xxx

  </VirtualHost>

 

 즉, jk 모듈을 사용하는 모듈을 기본 문서 루트로 잡고 jk모듈을 사용하지 않는 경우(PHP)는 가상으로 문서를 요청하게 해야 한다.

'java IDE > apache' 카테고리의 다른 글

[apache] Apache2 + Open SSL 설정  (0) 2013.04.03
[apache] 톰캣 연동 후 아파치 SSL 인증서로 톰캣 SSL 연동  (0) 2013.04.02
[apache] 톰캣, SSL연동  (0) 2013.04.02
[apache] 톰캣 연동설정  (0) 2013.04.02
[apache] 설치  (0) 2013.04.02
Posted by airlueos
,