본문 바로가기

개발 공부

HTTP, HTTPS?

HTTP

데이터를 주고 받는 양식을 정의한 통신 규약 중 하나. 전 세계에서 널리 쓰이는 통신 규약이다.

컴퓨터끼리 데티터를 주고 받을 때 정해둔 약속을 의미함.

HTTPS

기본적으로 HTTP에 보안 기능을 추가한 프로토콜이다. SSL, TLS 프로토콜을 사용해 데이터를 암호화 한다.

즉, 서버와 브라우저 사이에 있는 모든 통신을 암호화 하여 보안성을 높인 것이다. 요즘은 모든 웹사이트는 웬만하면 HTTPS를 쓰는 듯.

그렇다면 무엇이 다른가요?

 

HTTPS도 기본적으로 HTTP와 동일하게 작동하나 위에서 말 했듯이 보안 기능이 추가 되었다.

작동 방식
HTTP HTTPS
브라우저가 서버에게 요구(Request)
→ 서버에서는 원하는 데이터가 있는지 확인 있으면 응답(Response), 없으면 없는 데이터 반환
브라우저는 전달 받은 데이터를 기반으로 브라우저에 그림.
브라우저가 HTTPS를 통해 서버에 접속하려고 함. 이 때, 서버는 브라우저에게 SSL 인증서를 제공.
→ 브라우저는 이 인정서를 검증한다. 대부분의 브라우저에는 공신력 있는 CA들의 정보와 CA가 만든 공개키가 있음. 서버가 보낸 SSL 인증서가 정말 CA가 만든 것인지 확인함.
→ 인증서가 유효하다면 브라우저는 서버에게 암호화 된 정보를 전송할 수 있는 [세션키] 를 생성하고 공개키로 암호화해서 서버에게 전송함.
→ 서버는 자기만 가지고 있는 비밀키를 사용해서 세션 키를 복호화 하고 이후 이를 이용하여 브라우저와 서버 사이에 있는 모든 데이터를 암호화와 복호화를 함.
SSL 핸드셰이크를 종료하고 HTTPS 통신을 시작한다.

 

 

그럼에도 불구하고.

 

HTTPS만 사용하면 100% 안전하느냐? 그건 또 아니다. 이는 가장 보안을 위한 아주 기본적인 단계이므로 서버 측 보안을 강화하는 등의 다양한 보안 측정과 함께 사용되어야 한다.

 


프론트단에서는 사실 백엔드 팀원들과 HTTP로 하느냐 HTTPS로 하느냐로 토론을 많이 했던 걸로 기억한다. 결국은 HTTPS로 했지만... 암호화를 어떻게 하지? 같은 고민도 많았었다. 항상 백엔드분들과 HTTP로 하네, HTTPS로 하네 하고 투닥거렸는데, 이제는 내가 백엔드를 공부하고 있다... 인생사 어찌 될지 모른다더니. 진짜 아닌가...

'개발 공부' 카테고리의 다른 글

java의 컴파일 과정  (0) 2024.01.22
MVC 모델?  (0) 2024.01.19
CORS란?  (1) 2023.12.22
라이프사이클(클래스형 vs 함수형), react hooks  (0) 2023.05.01
React에서 State, Props, 리렌더링 발생 조건 및 성능 최적화  (0) 2023.04.24