2011. 2. 11. 15:23

APMSETUP7 버젼 기준입니다.


우선  인증서 파일이 필요하기에 간단하게 만들기 위한 방편으로 OpenVPN을 깔면 같이 깔리는 easy-rsa 를 사용하고자 합니다.
http://www.openvpn.se
이 글을 쓰는 시점에서의 최신 안정(stable)버젼은 openvpn-2.0.9-gui-1.0.3-install.exe 입니다.


0. 준비
C:\Program Files\OpenVPN\easy-rsa
cmd창을 열어서 위의 폴더로 이동한 다음 다음과 같이 타이핑 합니다.

init-config

vars

clean-all
(처음이면 상관없지만, 나중에 다시 이 명령을 하게되면 /keys 폴더내용이 통째로 날아가므로 미리 백업해주세요)


1. 기본 CA(인증기관??) 인증서 만들기...
build-ca
그냥 엔터 엔터 하시고...
Common Name 에는 Apache-CA 라고 입력합니다. (다른거로 임의로 주셔도 상관 없습니다.)


2. 서버에서 사용할 인증서 및 KEY 생성
build-key-server server
역시 그냥 엔터 엔터 하고...(단, CA 작성시 내용을 기술 하셨다면 똑같이 하셔야 합니다.)
Common Name 에는 자신이 사용할 도메인주소를 입력하고 나머지는 똑같이 입력합니다
(도메인 주소는 localhost, 127.0.0.1 mydomain.com 등이 될수 있습니다)

하단에 y/n 묻는게 나오는데 당연히 y 를 선택합니다.


정상적으로 완료 시, /keys 폴더 안에

ca.crt
ca.key
servet.crt
server.csr
server.key
... 
이런 파일들이 있을겁니다.

아파치의 conf 폴더에
server.crt
server.key
위 2개의 파일을 복사 합니다.


httpd.conf 파일 내용
LoadModule ssl_module modules/mod_ssl.so

...

Include conf/extra/httpd-ssl.conf
위 2줄의 주석을 제거 합니다.


extra/httpd-ssl.conf

##
## SSL Virtual Host Context
##

<VirtualHost _default_:443>

#   General setup for the virtual host
DocumentRoot "C:/APM_Setup/htdocs"
ServerName localhost:443
ServerAdmin
webmaster@localhost
ErrorLog "C:/APM_Setup/Server/Apache/logs/error_log"
TransferLog "C:/APM_Setup/Server/Apache/logs/access_log"

...

CustomLog "C:/APM_Setup/Server/Apache/logs/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

진하게 표시된 부분을 찾아서 자신의 환경에 맞도록 수정 합니다.
(제 경우 이 상태로 로컬 주소인 192.168.0.3 으로 테스트 하였는데 정상적으로 표시 됩니다.)


그리하여 테스트를 위해 https:// 로 접속을 시도해 보았습니다.
보안 인증서에 문제가 있다...?

중요한건 2번째 라인이죠..

이 웹사이트에서 제시한 보안 인증서는 신뢰할 만한 인증기관에서 발급한 것이 아니다...

그렇습니다... OpenSSL 로 임의로 발급한 것이기 때문에 인증기관에 등록이 되어있지 않으니 신뢰할수 없다는 경고입니다.

1.인증기관
2.도에인
3.인증서 유효기간
이 3가지를 충족해야 저 시뻘건 X방패 경고가 뜨지 않는데 우리는 1번 항목을 충족하지 못하고 있습니다.

뭐 돈내고 인증기관에 등록하시면 저 메시지는 안뜹니다.

그냥 써도 저 메시지 뜰뿐... 암호화 기능은 정상적으로 수행됩니다.

일단 https 접속을 위해서
이 웹사이트를 계속 탐색합니다(권장하지 않음) <- 이것을 클릭합니다.

주소 부분을 보면 정확하게 https:// 로 시작함을 확인할 수 있습니다.

다만... 시뻘건 색으로 뜰 뿐이죠;;

페이지 우클릭 후 속성 들어가보면... 암호화가 되고있음을 알 수 있습니다.
여기까지 https 설정은 끝입니다.



여기서부터는 추가 작업...
여기서 부터는 각 개별 클라이언트에서 설정 잡아야 하는 부분입니다.

저 시뻘건 문구 뜨지 않고 자물통이 보이도록 해 보는것이 목표입니다.

현재 우리가 충족하지 못한 항목이 1번의 신뢰된 인증기관에 등록... 되지 않았다는게 문제지요..

내 익스플로러에 저 인증서의 발급기관 CA 를 신뢰된 기관으로 등록함으로써 해결할 수 있습니다.
(이것은, 등록한 컴퓨터에서만 동작하고, 다른 컴퓨터에서는 마찬가지로 별도로 각각 개별로 등록 해야 합니다.)


익스플로러 설정으로 들어갑니다.
여기서 서버 인증서 작업전에 먼저 만들었던 CA 인증서를 등록합니다.


찾아보기를 눌러서 신뢰할 수 있는 루트 인증기관에 해당 인증서가 설치될 수 있도록 합니다.


우리가 임의로 만든 기관 Apache-CA 에 대한 출처를 확인할 수 없다고 합니다. 뭐 당연하겠지요 임의로 만든거니..;;
당연히 예 를 눌러 설치 합니다.


우리가 만든 임의의 기관 Apache-CA 가 다른 신뢰업체들과 어깨를 나란히? 하고 있는 모습입니다.


모든 익스플로러를 닫고 다시 접속을 시도하면??
아까 까지의 시뻘건 경고는 사라지고 정상적으로 위에 자물통? 아이콘이 채워져 있는것을 확인 할 수 있습니다. 





p.s. 이것은 어디 까지나 개인 컴퓨터에 강제로 Apache-CA 라는 인증서를 신뢰할수 있는 루트 기관에 포함시켜서 이렇게 보이도록 한 것이며, 다른 컴퓨터에서는 아까와 같은 시뻘건 화면이 뜹니다.

이렇게 뜨게 하고 싶으시다면 각각 CA 인증서 설치를 해 주거나...

아니면...

돈... 돈내고 진짜 신뢰된 루트 인증기관에 등록 하는 방법 뿐입니다.
Verisign 등등... 업체들 많죠...;;
비용이 얼마나 드는지는 모름니다 -_-;;



p.s. 2 직접 해보고 작성한 글 이기에 뭐 안되는 경우가 있으면 댓글 남겨주세요... 시간날때 확인해보고 답 드리도록 하겠습니다...
잘못된 내용 지적도 받아요~~ ^^

Posted by 해비
2011. 2. 10. 11:26
x86 Windows 버젼의 톰캣 7.0.4 기준으로 작성된 내용입니다.


분량이 큰 JSP페이지 작성중에 65535 limit 어쩌고 메시지와 함게 500 서버 에러 를 내는 경우가 있다...

해당 .jsp 파일이 내부에서 .java로 변환되어 지면서 이 용량이 65535를 초과 한다고 하는데
(틀린 부분이면 지적 바랍니다 -_-)

해결책은 2가지이다..
------------------------------
1. 소스 코드의 사이즈를 줄인다
2. 커스텀 태그를 사용한다
------------------------------

중간중간에 include 시킨 것들도 내부에서 .java 파일로 변환시 전부 포함되어버리니 커지는것은 당연할 듯...

그렇다면 소스코드용량을 줄이면 좋겠지만... 이것이 불가능하다면 커스텀 태그를 사용하여 해결하도록 한다.


페이지 상단에 커스텀태그를 정의 한다.
(커스텀 태그명은 사용자 임의로 주면 되므로 적당히 알아서 설정들 하시길...)
<%@ taglib prefix="inc" tagdir="/WEB-INF/tags" %>
prefix
inc라는 태그명을 정의합니다.
include 앞 3글자 따서 정의한건데, 뭐 맘대로 암거나 알아서 주셔도 되겠습네다 -_-;;

tagdir
/WEB-INF/폴더 하단에 tags 라는 폴더를 하나 생성하여 둡니다.


import 시킬 파일에 있던 내용을 tag 파일로 작성하여 보겠습니다.
(이 파일은 /WEB-INF/tags 안에 위치시켜 주세요)
sample.tag
<%@ tag body-content="empty" pageEncoding="UTF-8" %>
<%@ attribute name="value" type="java.lang.Integer" %>
<%@ attribute name="stVar" %>
<%@ attribute name="stVar2" %>
<%
(JSP 코드 기술...)
%>
진~ 하게 표시된 부분들은... 변수 입니다.
import 와 다르게 필요한 변수값이 있을경우, 이것들을 넘겨 받아야 하기 때문이죠

위에서 value 는 정수 형으로, stVar 과 stVar2 는 문자형 데이터를 넘겨 받기 위해 설정되었습니다.
중간에 기술된 JSP 코드들이 원래의 jsp파일에서 해당 위치에 import 됩니다.


커스텀 태그를 이용하여 import !!
<%
(기존 소스코드들...)
%>
<inc:sample value='<%=Integer.parseInt(varInt) %>' stVar='<%=var1 %>' stVar2='<%=var2 %>' />
<%
(기존 소스코드들...)
%>
jsp 코드 부분인 %를 닫은 다음 커스텀태그로 내용을 import 시킵니다.
<커스텀태그:파일명 파라미터1='값1' 파라미터2='값2' ... /> 의 형태로 작성합니다.

설정한 파라미터 값을 넘겨주게 되고, sample.tag 파일에서 넘겨받은 파라미터 값을 사용한 결과가 import 됩니다.


Posted by 해비