More

톰캣 http 주소에서 https로 강제 리다이렉트 하는 방법

http https 리다이렉트 연결
https 연결

사내에서 제한된 인원들만 사용하던 서비스라 SSL인증서를 사용하지 않고 http 포트로 사용하던 서비스에 SSL인증서를 적용하기로 했습니다.

SSL인증서를 사용하지 않고 있었기 때문에 약간의 보안을 위해 80포트 대신 특정 포트를 접속 주소에 붙여 사용하고 있었는데 https 주소를 적용하면 https 기본 포트인 443 포트를 사용하려고 했기 때문에 주소가 변경되는데요.

한번 정해진 주소를 오래 사용하던 사람들은 이 변경을 받아들이지 못하기 때문에 원래 주소에서 https로 강제 리다이렉트 하기로 했습니다.


http https 강제 리다이렉트

1. 먼저 톰캣에 있는 server.xml 파일을 열고 수정해줘야 합니다. 원래 8080포트를 쓰고 있었기 때문에 이 부분은 그대로 두고 리다이렉트 포트 부분을 redirectPort="443" 으로 변경합니다.

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="443" />


2. https 포트 설정을 합니다. 원래 포트가 붙어있던 주소에서 포트가 안 붙은 https주소로 변경할 것이기 때문에 기본 포트인 443포트를 사용했습니다.

<Connector port="443" 

protocol="org.apache.coyote.http11.Http11NioProtocol" 

SSLEnabled="true"

scheme="https" secure="true"

clientAuth="false" 

keystoreFile="C:\"

keystorePass="password" 

sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" />


3. 톰캣 폴더 내 web.xml 파일에 아래 내용을 추가합니다. 위치는 하단 부분 적당한 장소에 넣어주면 됩니다.

<!-- https redirect -->

<security-constraint>

<web-resource-collection>

<web-resource-name>Entire Application</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>


4. 원래 접속 주소로 접속하여 https로 강제 리다이렉트가 잘 되는지 확인 해봅니다.