
HTTP (하이퍼텍스트 전송 프로토콜)
HTTPS (보안 소켓 레이어 전송 프로토콜)는 웹 통신에 사용되는 두 가지 프로토콜이다.
HTTP는 인터넷에서 데이터를 전송하기 위해 사용되는 프로토콜로, 웹 브라우저와 웹 서버 간에 텍스트를 주고 받을 수 있도록 해준다. HTTP는 암호화되지 않은 텍스트로 통신하기 때문에 데이터가 평문으로 전송되므로 보안에 취약하다.
반면, HTTPS는 HTTP와 비슷한 방식으로 동작하지만, 보안 기능이 추가된 프로토콜이다.
HTTPS는 SSL(Secure Socets Layer) 또는 TLS(Transport Layer Security)프로토콜을 사용하여 데이터를 암호화하고 인증서를 통해 웹 서버의 신뢰성을 확인한다. 이로써 데이터의 기밀성과 무결성을 보호할 수 있으며, 중간에서의 데이터 변조나 도청을 방지할 수 있다.
HTTPS를 사용하면 웹 사이트와 사용자간의 통신이 암호화되므로 개인 정보나 민감한 데이터를 안전하게 주고받을 수 있ㅇ다. 따라서, 로그인, 결제, 개인 정보 등을 포함한 보안이 필요한 데이터를 처리하는 웹 사이트에서는 HTTPS를 사용하는 것이 권장된다.
HTTP와 HTTPS의 주요차이점은 보안기능의 유무이다.
따라서, HTTPS를 사용하는 웹 사이트는 브라우저 주소 표시줄에 "https://"로 시작하며, 일반적으로 자물쇠 아이콘이 표시된다.
Spring Boot 환경에서 HTTPS 방식을 사용한다고 생각해보자.
1. SSL 인증서 획득 : HTTPS를 사용하기위해 SSL 인증서를 획득해야 한다.
SSL 인증서는 보안 통신을 위해 서버의 신원을 확인하는 역할을 한다.
보통 인증 기관(Certificate Authority)으로부터 인증서를 구매하거나, Let's Encrypt와 같은 무료 인증 기관에서 제공하는 인증서를 사용할 수 있다.
2. 인증서 설정 : 획득한 SSL인증서를 사용할 수 있도록 Spring 프로젝트의 설정 파일에서 설정해야한다.
주로 Spring Boot를 사용하는 경우 ' application.properties' 또는 ' application.yml ' 파일에서 관련 설정을 처리한다.
인증서의 경로, 비밀 키 파일, 포트 등의 정보를 설정해야 한다.
3. Tomcat 설정 : Spring Boot에서 내장된 Tomcat을 사용하는 경우, HTTPS를 위한 Tomcat 설정이 필요하다.
' application.properties' 또는 ' application.yml ' 파일에서 SSL 관련 설정을 추가하고, 포트 및 인증서 경로등을 지정해야 한다.
4. 리다이렉트 구성 : HTTP 요청을 HTTPS로 리다이렉트 하는 구성을 추가하는 것이 좋다.
이를 통해 모든 요청이 암호화된 연결로 전달되도록 할 수 있다.
5. 서버 실행 : 설정이 완료되면 Spring 애플리케이션을 실행하고 HTTPS포트에서 요청을 처리할 수 있다.
이제 HTTPS로 통신하는 클라이언트들은 암호화된 연결을 통해 서버와 통신하게 된다.
이처럼, Spring Security를 사용하여 인증 및 권한 부여를 구현하거나, 추가적인 보안 설정을 적용할 수도 있다.
Spring Boot에서는 HTTPS를 지원하는 여러 기능과 자동 설정이 제공되므로, 적절한 설정과 구성을 통해 간편하게
HTTPS를 사용할 수 있다.