상세 컨텐츠

본문 제목

CAFE24에서 운영 중인 서버 통신을 HTTP를 HTTPS로 강제 리다이렉트(Force re-direct)하기

카테고리 없음

by 개발잘하고싶은개발자 2024. 2. 5. 01:40

본문

이전에 현재 운영중인 CAFE24 호스팅 서버에 ZeroSSL에서 발급받은 무료 SSL 인증서를 등록한 뒤 "https:~"로 요청시 HTTPS로 안전하게 접속되는 것까지 확인하였다.

하지만 웹 브라우저에서 URL을 "http://~"로 요청시 여전히 HTTP로 접속이되는 것이 확인되었다. 그래서 "http://~"로 요청을 시도하면 "https://"로 리다이렉트 되도록 해보려 한다.

 

 

구글링과 관련 커뮤니티 등을 참고하여  3가지 방법을 찾아 시도해보았다.

 

 

방법 1. SSL 인증서로 keystore 파일을 생성해서 호스팅 서버에 올린 다음 server.xml 파일에 SSL Connector 설정 추가하기

https://itknowledgewarehouse.tistory.com/211

이 방법은 이전에 로컬 환경에서도 적용해보고 정리한 적이 있기때문에 가장 먼저 시도해 보았다.

하지만 현재 사용중인 CAFE24 호스팅 서버는 내부적으로 Tomcat서버가 Nginx로부터 요청을 넘겨받는 포워딩 구조이기 때문에 이 방법을 사용할 수 없다고 한다..ㅠㅠ

 

 

 

방법 2. 호스팅 서버의 Nginx 설정파일(/etc/...nginx.conf)을 수정

 

 

두번째로 알아낸 방법은 호스팅 서버쪽에 있는 Nginx의 설정 파일(/etc/.../nginx.conf)을 수정하는 방법이었다. 그런데 CAFE24에서 제공되는 챗봇을 통해 알아봤더니 현재 사용중인 "Tomcat JSP 호스팅 서비스" 요금제는 관리자 권한이 없기때문에 설정 파일을 수정하는 것이 불가능하다고 한다..ㅠㅠ

 

 

 

방법 3. *.jsp 파일내에서 리다이렉션 코드 추가

세번째 방법은 소스코드 내에서 브라우저 창에 표시되는 url의 프로토콜 부분을 http->https로 바꾸서 실행하는 방법이다.

이 방법은 웹 서버쪽에서 well-known port인 80 or 433을 사용해야 한다는 조건이 필요하다. 그래야 URL 요청시 포트 번호가 생략되더라도 리다이렉트가 정상적으로 적용된다. 나는 이 방법을 이용해 HTTPS 통신을 구현했다.

 

//*.jsp파일

...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>...</title>
</head>
<body>
	<script type="text/javascript">
	if (document.location.protocol == 'http:') {
    	document.location.href = document.location.href.replace('http:', 'https:');
	}
	</script>
	...
</body>
</html>

 

위와 같이 모든 *.jsp파일에 <script>태그를 사용하여 자바스크립트 코드를 추가했다. 이 코드는 전체 URL에서 protocol에 해당하는 부분이 "http:"인 경우 "https:"로 치환시킨다.

 

 

 

 

 

 

 

참고

https://cafe24.zendesk.com/hc/ko/articles/18527450445593-톰캣-Tomcat-서비스의-https-리다이렉트-설정은-어떻게-해야하나요

https://jins-dev.tistory.com/entry/미완forward-와-redirect-의-차이점-정리-필요: Jin's Dev Inside님의 서버 URL 처리 시, forwad와 redirect의 차이점

https://nookpi.tistory.com/56 : 엘레베이터에 낀 남자님의 자바스크립트 Window / Document 무슨 차이일까?

https://apost.dev/105/ : Location객체와 URL을 이해하자.

https://hasudoki.tistory.com/entry/Javascript-URL%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-Location-Redirect-Reload-%ED%86%B5%ED%95%B4-%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%90