2010. 7. 20. 00:59 was
Tomcat SSL 적용, http를 https로 자동 바꾸기
1 아파치 톰캣 연동의 경우
http://mod-rewrite-cheatsheet.com/
민물님 블로그
http://mimul.com/pebble/default/2010/07/19/1279542240000.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteLog /log/rewrite.log
RewriteLogLevel 9
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>
- 톰캣 단독의 경우
1 인증서를 생성한다.
- eclipse 를 사용할 경우 keystore plugin 마켓이나 update 사이트를 이용해서 설치하면 편리
- gt1000.cert 라는 사설 인증서를 생성. 인증서 생성 방법은 다른 웹 문서를 참조
- 인증서 생성시 주의할 점의 CN 부분을 톰캣 설치 서버 IP로 해야 함
인증서 검증을 하면서 CN 부분이 맞지 않을 경우 오류가 발생하기 때문
인증기관에서 인증서를 발급 받는 경우는 도메인을 사용하기 때문에 신경 안 써도 됨. 사설 인증서의 경우만
2 톰캣 설정
- server.xml 파일을 아래와 같이 수정
redirectPort 443 포트 부분을 아래와 일치 시켜 주는게 중요
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443" URIEncoding="UTF-8"/>
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\workspace\workspace-kepler\gt1000\src\main\resources\gt1000.cert"
keystorePass="gt1000" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" URIEncoding="UTF-8"/>
3 web.xml 설정
- http 로 접속 했을 경우 자동으로 https 로 전환 해 줌
<security-constraint>
<web-resource-collection>
<web-resource-name>secured page</web-resource-name>
<url-pattern>*.do</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
4 maven 설정
- httpclient 4.4 버전 사용
- pom.xml 에 아래를 추가
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.6</version>
</dependency>
5 java 소스
- 테스트는 아래 두개 메서드만 해 봤음. 나머지 것들은 안해 봤음. 소스가 좀 거지 같음.
- ExternalService 는 원격 서버를 호출하기 위한 정보를 담고 있음
- httpsGetAPICall() 메서드는 인증서 있는거
- httpsGetAPICallWithoutCertificate() 메서드는 인증서 없이 하는거
- post 방식은 url에 변수를 & 로 연결해서 호출은 잘 실행 되는데,
NameValuePair 방식으로 하면 원격 호출은 되는데.... 이상하게 interceptor 통과 후 실행이 되지 않음(테스트 해 봐야 함)
http://mod-rewrite-cheatsheet.com/
민물님 블로그
http://mimul.com/pebble/default/2010/07/19/1279542240000.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteLog /log/rewrite.log
RewriteLogLevel 9
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>
2 톰캣 단독의 경우
* SSL 적용 방법- 톰캣 단독의 경우
1 인증서를 생성한다.
- eclipse 를 사용할 경우 keystore plugin 마켓이나 update 사이트를 이용해서 설치하면 편리
- gt1000.cert 라는 사설 인증서를 생성. 인증서 생성 방법은 다른 웹 문서를 참조
- 인증서 생성시 주의할 점의 CN 부분을 톰캣 설치 서버 IP로 해야 함
인증서 검증을 하면서 CN 부분이 맞지 않을 경우 오류가 발생하기 때문
인증기관에서 인증서를 발급 받는 경우는 도메인을 사용하기 때문에 신경 안 써도 됨. 사설 인증서의 경우만
2 톰캣 설정
- server.xml 파일을 아래와 같이 수정
redirectPort 443 포트 부분을 아래와 일치 시켜 주는게 중요
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443" URIEncoding="UTF-8"/>
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\workspace\workspace-kepler\gt1000\src\main\resources\gt1000.cert"
keystorePass="gt1000" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" URIEncoding="UTF-8"/>
3 web.xml 설정
- http 로 접속 했을 경우 자동으로 https 로 전환 해 줌
<security-constraint>
<web-resource-collection>
<web-resource-name>secured page</web-resource-name>
<url-pattern>*.do</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
4 maven 설정
- httpclient 4.4 버전 사용
- pom.xml 에 아래를 추가
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.6</version>
</dependency>
5 java 소스
- 테스트는 아래 두개 메서드만 해 봤음. 나머지 것들은 안해 봤음. 소스가 좀 거지 같음.
- ExternalService 는 원격 서버를 호출하기 위한 정보를 담고 있음
- httpsGetAPICall() 메서드는 인증서 있는거
- httpsGetAPICallWithoutCertificate() 메서드는 인증서 없이 하는거
- post 방식은 url에 변수를 & 로 연결해서 호출은 잘 실행 되는데,
NameValuePair 방식으로 하면 원격 호출은 되는데.... 이상하게 interceptor 통과 후 실행이 되지 않음(테스트 해 봐야 함)
'was' 카테고리의 다른 글
apache, tomcat 연동시 고려사항 (0) | 2010.11.30 |
---|---|
was 모니터링 툴(외국꺼 무료 같은데 영어 해석이 ㅠ.ㅠ) (0) | 2010.11.19 |
톰캣 한글 설정 관련 (0) | 2010.04.06 |
메모리 관련 (0) | 2010.02.19 |
Apache Mod_Security (0) | 2010.02.17 |