[Spring Security] SSL & HTTPS
- Spring/Security
- 2020. 9. 8.
이번글에서는 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
추천서적
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'Spring > Security' 카테고리의 다른 글
[Spring Security] HTTP Basic Authentication - Spring Boot (2) (0) | 2020.09.08 |
---|---|
[Spring Security] Default Configuration - Spring Boot (1) (0) | 2020.09.08 |
[Spring Security] JWT Authentication (0) | 2020.09.08 |
[Spring Security] Form Based Authentication (0) | 2020.08.31 |
[Spring Security] HTTP Basic Authentication (0) | 2020.08.31 |