3학년 1학기 Computer Network 시간에 배웠는데 실제 개발을 할 때 내가 짠 API를 Postman에서 돌려볼때 처음에 http로 하다가 별 생각이 없었는데 배포할때 보니 보안상의 이유로 https로 바꿔야 한다는 것을 알게되었다. 당장 네이버, 구글 등 대부분의 사이트들은 https기반이였어서 왜 굳이 HTTPS 여야만 하는지 확실히 알고싶어서 공부하게 되었다.
하이퍼텍스트를 빠르게 교환하기 위한 프로토콜. 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해 놓은 규칙 같은 것. 서버와 클라이언트의 사이에서 어떻게 메시지를 교환할지를 정해 놓은 규칙이다. 요청(Request)과 응답(Response)으로 구성되어 있으며, HTTP는 80번 포트를 사용하고 있으며 HTTP는 80번 포트에서 요청을 기다리고 클라이언트는 80번 포트로 요청을 보낸다.
HTTP의 특징
Stateless(무상태성) 을 가져, 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이다.
클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다.
정보를 일반 텍스트로 보내기 때문에 "안전하지 않은" 것으로 간주되기 때문에 사이버 공간을 통해 이동하는 데이터를 누구나 가로챌 수 있기 때문에 이러한 단점을 보완하고자 HTTP에 S(Secure Socket)가 추가된 HTTPS가 도입되었다.
HTTP에 SSL 데이터 암호화가 추가된 프로토콜이다. 즉, HTTP 와 SSL이 결합된 통신 프로토콜으로 HTTPS는 HTTP와 다르게 443 포트를 사용하며, 네트워크 상에서 제 3자가 정보를 볼 수 없도록 암호화를 지원한다. 암호화를 지원하기 때문에 민감한 정보를 주고받을 때에 이것이 도난당하는 것을 방지할 수 있다.
HTTPS의 특징
HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화된다.
HTTPS는 페이지를 암호화한 키가 그 페이지를 보는 특정 사용자에게만 알려지도록 한다.
HTTPS는 SSL을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 HTTPS 프로토콜이 동작한다.
HTTPS, SSL에 대해서 다음 글에서 더 자세하게 다뤄보겠다.