[root로 tomcat 실행시]
운영서버 이관 작업 도중 SSL 인증서를 등록하라는 요청이 들어왔다.
SSL 인증서 생성 및 적용방법은 나중에 포스팅 하기로하고..
일단 이전 글에서 Ubuntu 환경에서 80포트를 사용하는 방법에 대해서 포스팅한적이 있다.
[Linux] Tomcat, 일반 사용자 80포트 열기
그래서 이번에도 SSL 인증서 등록 후 80포트 호출 시 https 포트인 443 포트를 호출하도록 시도해보았다.
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 443
https://xxx.xxx를 를 호출하여 https 접근이 정상적으로 작동하는 것을 확인했다.
그런데 여기서 문제는 사용자가 실수로 http://xxx.xxx를 를 호출하게 되면 여전히 8080 포트를
호출하고 있는 것이 문제가 됐다.
요청사항은 http호출 시에도 https를 호출하도록 REDIRECT 하는 것이었다.
그래서 이번에는 iptables에서 8080 redirect 부분을 삭제 후 다시 시도해보았다.
$ sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
https://xxx.xxx 를 호출하는 데는 문제가 없었으나
http://xxx.xxx 를 호출하게 되면
Bad Request
This combination of host and port requires TLS. 라는 문구가 화면에 노출된다.
이 문제는 현재 호출된 포트(443)의 요청이 HTTPS 이므로 HTTP가 아닌 HTTPS로 호출하라는 내용이다.
현재 iptables에 등록된 내용을 보면 80 포트를 호출하면 443 포트로 REDIRECT 시키기 때문에
위와 같은 오류 메시지가 노출되는 것이다.
그렇다면 다시 iptables에서 모든 redirect요청을 삭제한 후 구글링 하였다.
방법은 두 가지로
첫 번째 Apache 모듈인 httpd.conf의 내용을 수정하여 http 요청 시 https로 REDIRECT 하는 것이다.
httpd.conf 수정 방법이 있지만 Apache 연동 작업이 귀찮아서 두 번째 방법으로 해결했다
두번째 방법은 server.xml의 Connector부분을 수정했다.
기존의 8080 포트를 80 포트로 변경 후 web.xml에서 security-constraint를 추가했다.
여기까지 진행한 후 tomcat을 재시작 후 http, https를 각각 호출해 테스트를 진행했고
http호출 시 https로 redirect 되어 정상적으로 구동하는 모습까지 확인했다.
참조:http://tkurek.blogspot.com/2013/07/tomcat-7-http-to-https-redirect.html
'WAS > Tomcat' 카테고리의 다른 글
[Linux] Tomcat9 File.io.IOException permission denied 오류 처리 (0) | 2020.06.08 |
---|