목차
2024/07/16 변경
$ cd apache-tomcat-5.5.27/conf
$ vi server.xml
이부분을 수정 해주고
이부분을 추가 해준뒤 톰켓을 재 실행 한다.
그러면 8443 포트로 https가 뜨는 것을 확인 할수 있다
SSL의 인증서를 적용 한 경우 https로 접속을 해야한다. http로 접속을 한 경우에는 안전하지 않음이라는 경고가 url 옆의 창에 표시된다.
그러나 우리는 보통 url로 접속하는 경우 프로토콜을 명시해주는 경우가 거의 없이 www.naver.com 이런식으로 입력하여 접속한다.
프로토콜을 입력하지 않고 url만 입력해도 자동으로 https로 리다이렉트를 시켜주자.
1. web.xml 설정 추가
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
2. 톰캣 server.xml 수정
tomcat하위의 conf 폴더의 server.xml을 열어 아래와 같이 수정해준다.
vi /tomcat/conf/server.xml
8080 포트로 들어오는 경우 443포트로 리다이렉트 시켜준다.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443"/>
나는 리눅스에서 iptables를 사용하여 포트 80으로 들어오는 경우 8080으로 포트포워딩, 포트 443으로 들어오는 경우 포트 8443으로 포트포워딩을 해놓은 상태이다.
따라서 유저는 http://localhost로 입력하면(http의 기본 포트는 80) 리눅스에 의해 localhost:8080으로 포트포워딩이 되고
이후 톰캣을 통해서 localhost:443으로 리다이렉트 된다. 그리고 다시 리눅스에 의해서 localhost:8443으로 포트포워딩이 된다.
👇🏼 포트포워딩 하는 이유와 방법이 궁금하다면 아래 참고
https://yes-admit.tistory.com/67
SSL 이란?
기본 브라우저는 http로 접속을 합니다. URL을 통해 정보를 주고받고, 우리가 원하는 페이지로 이동 및 기능을 제공합니다. 이 URL은 기술의 발달에 따라 여러 가지 기능도 추가됐지만, 동시에 해킹의 수단으로도 이용이 됩니다.
이를 방지하고자 암호화통신을 요구하게 되었고, 그렇게 탄생한 것이 https입니다.
SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 보안 프로토콜을 통해 클라이언트와 서버가 보안된 통신을 하게 만들어줍니다.
설치 환경 확인하기
최근 톰캣은 openssl이 설치가 되어있습니다.
그러나 모르겠다 하시는 분은 openssl version 명령어로 확인하시면 됩니다.
openssl version 체크하기
1.openSSL이 없을 경우에는 아래 링크를 통해 설치를 부탁드리겠습니다.
2021.05.22 - [Computer/기타] - [CentOs] OPEN SSL 설치
2. SSL 적용을 위해서 아래의 프로그램을 설치 부탁드리겠습니다.
SSL Key 확인하기
key의 사용은 개발서버를 위한 key와 실제 서비스 중인 상용키로 구분됩니다.
개발키는 개발환경 적용을 위한 Test용 키입니다.
개발용 key 만들기
기본적으로 https 적용 시 이 문구가 뜨면서 정상적인 웹 접속이 힘든 상태입니다.
정상적인 상용 키는 현재 상용 중인 사이트 윗부분에서 쉽게 볼 수 있습니다. 보통 유료이며, 아무런 설정 없이 쉽게 사이트 접근이 가능합니다.
만약 키를 만들게 된다면, 이렇게 제공하게 되는데, 우리가 살펴봐야 할 것은 확장명이 crt와 key입니다.
인증서 중에서 특히 발급대상이 자신이 적용할 서버의 도메인을 가리키는 crt여야 합니다.
key 생성에 대해서는 차후 따로 설명드리겠습니다.
keystore 만들기
위의 제가 드린 파일 중 OpenSSL/bin/openssl.exe 프로그램이 있습니다.
이 프로그램을 열은 후에 아래와 같이 적용합니다.
pkcs12 -export -in 사용할 인증서.crt -inkey 사용할 개인 키.key -out .keystore -name tomcat
파란색 네모의 key와 crt를 이용해서 .keystore를 생성한다.
keystore
위의 crt와 key를 활용하여 keystore를 생성합니다.
톰캣에 적용할 키이며,. keystore가 중요한 역할을 합니다.
단, 리눅스 콘솔 창에서는. keystore가 보이지 않으므로, 폴더(디렉터리)를 생성하여 구분 지을 수 있도록 해야 합니다.
톰켓에 key 적용하기
tomcat의 server.xml에 주석처리된 Connector을 풀거나 만든다.
자신이 서비스 중인 tomcat에 tomcat/conf/server.xml에 다음과 같이 추가 작업을 합니다.
여기서 유심히 살펴볼 부분은 port와 certificateKeystoreFile입니다.
port는 도메인 뒤에 https를 표현할 port를 의미하며, certificateKeystoreFile는 keystore의 위치를 나타냅니다.keystore를 생성 시 비밀번호가 존재한다면, 패스워드를 입력하시고 사용하시면 됩니다.
마무리
https적용 방식은 톰캣의 버전에 따라 달라진다고 합니다.
이번 과정에서는 최근에 제가 https로 인해 많이 고생을 했고, 이 문제는 아직도 현재 진행형인 상태입니다.
서비스가 제공되는 환경문제가 결정적인 원인이었습니다.
모두 필승하시기를 바랍니다.
'기존 > 🐸Utils' 카테고리의 다른 글
[ubuntu] 그라파타 설치 방법 (0) | 2024.08.08 |
---|---|
[Ubuntu] 프로메테우스 설치 (0) | 2024.08.08 |
[JMeter] Apache JMeter를 이용한 간단한 성능 테스트 (1) | 2024.03.13 |
[ubuntu] MariaDB 설치 (1) | 2023.12.26 |
[ubuntu] MariaDB 재설치 (0) | 2023.12.26 |