HTTP ( Hyper Text Transfer Protocol ) 란 ?
“하이퍼텍스트(HyperText)를 전송(Transfer)하기 위해 사용되는 통신 규약(Protocol)”.
HTTP는 80번 포트를 사용하고 있으며 HTTP는 80번 포트에서 요청을 기다리고 클라이언트는 80번 포트로 요청을 보냅니다.
HTTP의 특징
Stateless ( 무상태성 ) 을 가져, 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식입니다.
클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다는 특징을 가지고 있습니다.
정보를 일반 텍스트로 보내기 때문에 "안전하지 않은" 것으로 간주되기 때문에 사이버 공간을 통해 이동하는 데이터를 누구나 가로챌 수 있습니다.
그렇기 때문에 이러한 단점을 보완하고자 HTTP에 S(Secure Socket)가 추가된 HTTPS가 도입되었습니다.
HTTPS ( Hyper Text Transfer Protocol Secure ) 란 ?
HTTP에 SSL 데이터 암호화가 추가된 프로토콜입니다.
HTTP 와 SSL이 결합된 통신 프로토콜
HTTPS는 HTTP와 다르게 443 포트를 사용하며, 네트워크 상에서 제 3자가 정보를 볼 수 없도록 암호화를 지원합니다.
암호화를 지원하기 때문에 민감한 정보를 주고받을 때에 이것이 도난당하는 것을 방지할 수 있습니다.
HTTPS의 특징
HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화됩니다.
HTTPS는 페이지를 암호화한 키가 그 페이지를 보는 특정 사용자에게만 알려지도록 합니다.
HTTPS는 SSL을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 HTTPS 프로토콜이 동작합니다.
이러한 SSL 방식을 적용하려면 인증서를 발급받아 서버에 적용시켜야 하는데
인증서를 발급하는 기관을 CA(Certificate Authority)라고 부릅니다.
인증서는 사용자가 접속한 서버가 우리가 의도한 서버가 맞는지를 보장하는 역할을 하며
공인인증기관의 경우 웹 브라우저는 미리 CA 리스트와 함께 각 CA의 공개키를 알고 있습니다.
- SSL 이란 ? 아래의 포스팅을 참고하시면 이해가 되실 겁니다.
SSL 이란 ? TLS 이란 ?
SSL (Secure Sockey Layer) 이란 ? HTTPS에 사용되는 “클라이언트와 웹 서버버간의 통신 암호화 프로토콜.”입니다. SSL은 HTTPS와 같이 443 포트를 사용하며 통신 데이터가 암호화되어, 중간에 정보를 가르
hstory0208.tistory.com
CA 인증서 발급 과정
- 웹사이트(서버)가 CA에게 "제 웹사이트가 진짜라는 것을 증명해주세요"라고 요청
- 요청시 CSR이라는 신청서를 만드는데 여기에는 (웹사이트(서버)의 도메인 이름, 회사 정보, 웹사이트가 만든 공개키가 포함)
- CA는 이 사람이 정말 이 웹사이트(서버)의 주인인지 확인
- 신원이 확인되면 CA는 웹사이트(서버)의 정보와 공개키를 포함한 디지털 인증서를 만든다.
- 이 디지털 인증서를 CA의 비밀키로 서명을 하고 이는 CA가 인증한 웹사이트(서버)라는 것이 된다.
- CA는 서명된 디지털 인증서를 웹사이트(서버)에게 전달한다.
여기서 CA 디지털 서명 과정은 비밀키로 암호화한 것이 아닌 서명이다.
"CA가 인증한 디지컬 인증서"라는 것을 보장하기 위해 CA의 비밀키로 서명을 하는 것이다.
클라이언트는 브라우저에 내장된 CA의 공개키로 이 디지털 서명을 검증할 수 있다.
HTTPS 동작 과정
- 사용자가 사이트(서버)에 최초로 접속(요청)하면 서버는 자신의 인증서를 웹 브라우저(클라이언트)에게 보낸다.
- 웹 브라우저는 인증기관의 공개키로 암호화된 인증서를 해독하여 검증한다. 그러면 사이트(서버)의 정보와 사이트(서버)의 공개키를 알 수 있게 된다.
- 이렇게 얻은 사이트(서버)의 공개키로 대칭키를 암호화해서 다시 사이트에 보낸다.
- 사이트는 개인키로 암호문을 해독하여 대칭키를 얻게 되고, 이제 대칭키로 데이터를 주고받을 수 있게 된다.
- 세션이 종료되면 대칭키는 폐기된다.
.
'◼ CS 기초 지식 > [네트워크]' 카테고리의 다른 글
Port ( 포트 ) 란 무엇인가 ? 포트에 대해 알아보자. (1) | 2022.09.23 |
---|---|
SSL 이란 ? TLS 이란 ? (0) | 2022.09.22 |
URI와 URL 비슷해보이는데 차이점이 뭘까? ( 완벽 정리 ) (5) | 2022.09.22 |
TCP와 UDP란? 왜 사용하는지 알아보자 (0) | 2022.09.21 |
[네트워크] Class란 ? CIDR 란 ? 차이점 및 개념을 쉽게 이해해보자 (feat.서브넷팅, 슈퍼넷팅) (3) | 2022.09.20 |