일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 랜도 노리스
- 헤밀턴
- 공격
- max verstappen
- Red Bull
- attack
- 하스
- Ferrari
- 노리스
- 정보보안기사
- Norris
- 2025
- 레드불
- lawson
- 그랑프리
- Hamilton
- 정보보안
- liam lawson
- 안토넬리
- 사인츠
- 유키 츠노다
- 페라리
- f1
- sainz
- 리암 로슨
- 보안기사
- 맥라렌
- 로슨
- 르클레르
- 베르스타펜
- Today
- Total
테크엔카
tomcat 톰캣 http 접속 시 https 자동 전환(리다이렉트/redirect) 설정 본문
도메인 입력시 프로토콜 입력 없이 접속할 경우 자동으로 https 로 접속하게 설정해야 할 경우가 있다.
최근 WAS를 설정하며 경험한 사항을 아래에 정리해본다.
1. web.xml 설정
vi 명령어로 web.xml를 열어 제일 아래 아래의 내용을 넣어준다. (vi server.xml)
<security-constraint> <web-resource-collection> <web-resource-name>Protected Context</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> |
위의 설정은 톰캣(Tomcat) 서버의 웹 어플리케이션에 대한 보안 제약을 설정하는데 사용된다.
<security-constraint> 보안 제약을 설정하기 위한 최상위 요소이다. 이 요소 안에는 보안 관련 설정들이 포함된다.
<web-resource-collection> 보안 제약이 적용될 웹 리소스(패턴)를 지정한다. 여기서는 "/*" 패턴이 사용되었는데, 이는 모든 요청에 대해 보안 제약을 적용한다는 것을 의미한다.
<web-resource-name> 이 웹 리소스 집합에 대한 이름을 지정한다. 여기서는 "HTTPSOnly"라는 이름이 사용되었다.
<url-pattern> 보안 제약이 적용될 URL 패턴을 지정한다. "/*"는 모든 URL에 해당하며, 따라서 모든 요청에 대해 보안 제약이 적용된다.
<user-data-constraint> 이 요소는 사용자 데이터에 대한 제약을 설정한다. 여기서는 주로 연결 보장(Transport Guarantee)을 설정하는 데 사용된다.
<transport-guarantee> 연결 보장 수준을 설정한다. 여기서 "CONFIDENTIAL"이라는 값이 사용되었는데, 이는 SSL(HTTPS)을 통해 통신할 것임을 나타낸다. 따라서 이 설정은 해당 웹 리소스에 접근할 때 반드시 안전한 연결(HTTPS)을 사용해야 함을 의미한다.
즉, 위의 설정은 모든 요청에 대해 SSL(HTTPS)을 통한 통신을 강제하는 보안 제약을 설정한다는 것이다.
2. server.xml 설정
vi 명령어로 server.xml를 열어 아래의 내용과 같이 수정해준다.
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" maxParameterCount="1000" /> |
이 설정은 톰캣 서버가 웹 애플리케이션과의 통신을 담당하는 커넥터에 대한 구성을 정의한다.
port="8080": 이 커넥터가 리스닝할 포트를 나타낸다. 여기서는 8080 포트를 사용하고 있으므로, 일반적으로 HTTP 트래픽을 처리한다.
protocol="HTTP/1.1": 이 커넥터가 사용하는 프로토콜을 지정하는 것이다. 여기서는 HTTP 1.1을 사용하고 있다.
connectionTimeout="20000": 클라이언트와의 커넥션을 유지할 수 있는 최대 시간을 밀리초 단위로 지정한다. 이 경우 20,000밀리초(20초)로 설정되어 있으므로, 클라이언트와의 연결이 20초 동안 유지되지 않으면 서버는 해당 연결을 종료한다.
redirectPort="443": 리다이렉션에 사용할 포트를 지정한다. 일반적으로 HTTPS 트래픽을 처리하는 포트인 443을 지정한다.
maxParameterCount="1000": 요청에서 허용되는 최대 매개변수 수를 지정한다. 이 경우 1000으로 설정되어 있으므로, 요청에 포함된 매개변수의 수가 1000개를 초과하면 서버가 요청을 거부한다.
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/usr/local/ssl/해당인증서파일" keystorePass="인증서비밀번호" clientAuth="false" sslProtocol="TLS" /> |
위의 내용은 톰캣(Tomcat)의 설정 파일 중 하나인 server.xml의 일부분을 나타낸다. 이 설정은 톰캣이 HTTPS 프로토콜을 사용하여 8443 포트에서 서비스하도록 구성하고 있다.
port="443": 톰캣이 HTTPS 연결을 위해 사용할 포트 번호를 지정한다.
protocol="org.apache.coyote.http11.Http11NioProtocol": HTTP/1.1 프로토콜을 처리하기 위해 사용되는 프로토콜을 지정된다. 이 경우 NIO 기반의 Http11 프로토콜이 사용된다.
SSLEnabled="true": SSL(암호화된 통신)이 활성화되었음을 나타낸다.
scheme="https": 스키마를 HTTPS로 지정한다.
secure="true": 보안 연결을 요구함을 나타낸다.
keystoreFile="/usr/local/ssl/해당인증서파일": SSL 인증서 및 개인 키가 저장된 KeyStore 파일의 경로를 지정한다.
keystorePass="taeyoungssl": KeyStore 파일의 암호를 지정한다.
clientAuth="false": 클라이언트 인증을 요구하지 않음을 나타낸다.
sslProtocol="TLS": SSL 프로토콜을 TLS로 지정한다.
3. 방화벽 설정
firewall-cmd 명령을 이용하여 방화벽 설정에 443포트와 80포트를 추가한다.
firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --permanent --zone=public --add-port=443/tcp |
포트포워딩 설정도 추가한다.
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 |
방화벽을 재기동하여 접속여부를 확인한다
firewall-cmd --reload |
'서버&네트워크&DB' 카테고리의 다른 글
톰캣(tomcat) 서버 버전 정보 숨기기(감추기) (0) | 2024.04.01 |
---|---|
tomcat (톰캣) SSL (https) 적용 (1) | 2024.03.29 |