[Spring Security] SSL & HTTPS

반응형

이번글에서는 SSL과 HTTPS에 대해 알아보도록 하겠습니다.

1. SSL & HTTPS

HTTPS란 기존의 HTTP 프로토콜에 SSL이라는 Security Layer를 한층 올린 통신 프로토콜입니다.

따라서 기본적인 통신 원리는 기존의 HTTP와 동일하며, endpoints 간에 data를 주고받을때 secure하게 data를 주고받는다는 점이 다릅니다.

1-1) http

기존의 http는 보안상의 문제점이 존재했습니다. 😅

예를 들어 위와 같이 두 endpoints 간의 credentails한 data를 transfer 하는 경우, 악의적인 공격자가 해당 data를 탈취해 악용할 가능성이 존재했습니다.

1-2) https

따라서 이를 개선하기 위해 https가 등장하게 되었습니다. 😎

https는 endpoints 간의 data를 endpoints 끼리 약속한 secret key 로 encrypted해 전달하기 때문에, 악의적인 공격자가 탈취하더라도 해당 정보를 해석할 수 없게 되었습니다.

1-3) SSL Certificates

위와 같은 HTTPS 통신의 보안은 SSL Certificate를 통해 보장됩니다.

SSL Certificates에는 크게 2가지 종류가 있으며 내용은 다음과 같습니다.

Self-Signed : 사용자 본인이 생성한 SSL Certificate로 오직 개발단계에서만 사용되어야 합니다.

Signed by Trusted Authority : Symantec, Comodo와 같이 인증된 기관이 발급해준 SSL Ceritifcate로 실제 운영 환경에서 사용됩니다.

1-4) flow

https의 전체적인 flow는 다음과 같습니다.

• client가 application으로 https request를 요청합니다.

• application은 client에게 발급받은 SSL 인증서와 public key를 전달해 정상적인 applicatoin임을 인증합니다.

• client는 전달받은 certificate를 확인해 trusted authority로 부터 발급받은 SSL 인증서인지 등을 확인합니다. 만약 정상적으로 SSL verification이 완료되었을 경우, browser가 application에 session key를 전달합니다.

• 이후 client와 application 간의 모든 communication은 전달 받은 session key를 사용해 encrypted 됩니다.

위와 같이 https는 보안적으로 굉장히 중요한 요소이므로, 반드시 사용해야 합니다. 😎


참고 자료 : https://www.youtube.com/playlist?list=PLVApX3evDwJ1d0lKKHssPQvzv2Ao3e__Q


추천서적

 

스프링5 레시피:스프링 애플리케이션 개발에 유용한 161가지 문제 해결 기법

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY