HTTP vs HTTPS

hoya.a·2022년 8월 17일
0

웹을 구성하는 요소

  1. HTML : 웹 페이지를 만드는 컴퓨터 언어
  2. URL : 원하는 웹페이지에 방문할 수 있게 해주는 주소 체계
  3. Web browser & Web server : 웹 페이지를 주고 받는 소프트웨어
  4. HTTP : Web browser 와 Web server 가 통신할때의 규약

HTTP(Hypertext Transfer Protocol)란?

서버와 클라이언트간에 데이터를 주고 받는 프로토콜이다.
HTTP는 텍스트, 이미지, 영상 등 거의 모든형태의 데이터를 전송할 수 있다.

요청과 응답

웹브라우저는 사용자가 요청한 정보를 웹서버에게 텍스트 (header라고 하는)를 만들어서 대신 물어봐준다. 그러면 웹서버는 응답헤더를 만들어서 웹브라우저에게 주고 웹브라우저는 응답받은 정보를 화면에 그려준다.

Request message

GET / doc / test.html HTTP/1.1         --- > Request Line
Host: www.test101.com                  
Accept: image/gif, image/jpeg, \*/*    
Accept-Language: en-us
Accept-Enconding: gzip, deflate
User-Agent: Mozilla/4.0						
Content-Lenght: 35                    --- > 두번째 Host 부터 여기까지
(여기는 빈칸으로 header와 body를 구분한다.)		   Request Headers
bookID=12345&author=Tan+Ah+Teck		  --- > Request Message Body
  • 첫행은 GET 방식으로 정보를 가져오는 것을 뜻하고 HTTP의 버전을 알 수 있다.
  • 두번째 행부터는 요청 헤더로 요청에대한 정보를 담고 있다.
  • Host는 인터넷에 연결되어 있는 인터넷 한대한대를 식별하는 것
  • User-Agent는 웹브라우저의 다른 표현으로 요청하는 이 웹브라우저가 어떤 웹브라우저인지 알려주고 사용하고 있는 운영체제, CPU, 운영체제의 버전을 알려준다.
  • Accept-Encoding은 웹의 여러 요소를 그냥 주고 받기에 효율적이지 못하기 때문에 여러 알고리즘으로 압축한다음에 주고 받는데 그에 대한 내용이다.

Response message

HTTP/1.1 200 OK							--- > Status Line
Date: Sun, 08 Feb xxxx 01:11:11 GMT
Server: Apache/ 1.3.29 (Win32)
Last-Modified: Sat, 07 Feb xxxx
ETag: "0-23-4024c3a5"
Accept-Range: bytes
Content-Length: 35
Connection: Colse						
Content-Type: text/html				  --- > 두번째 행부터  여기까지 
(A blank line separates header & body)		Response Headers
<h1\>My Home page<\h1>
  • 첫행에 status는 서버가 응답했을때 잘 응답이 됐는지 안됐으면 어떤게 안됐는지 알려준다
  • HTTP 버전과 status code(응답결과) pahrase(응답결과를 사람이 알기쉽게 풀어쓴것)을 알 수 있다.
  • content-Type 은 응답할때 이 응답의 타입과 어떤 언어로 응답했는지 나와있다.
  • Content-Length 는 응답하는 이 컨텐츠의 사이즈(단위는 bite)

정리

Web sever와 Web browser가 통신할 때 Web browser에서 Request headers 코드를 짜서 보내면 Web server는 response headers를 만들어주고 그 밑에 Reponse코드를 빈칸으로 구분해서 보내면 Web browser가 이것을 참고해서 화면에 띄운다.

HTTPS(Hyper Text Transfer Protocol Secure)란?

HTTPS는 SSL 위에 HTTP를 얹어서 보안이 보장된 통신을 하는 프로토콜이다. 이 통신 방식을 SSL암호화 통신 이라고도 합니다.

SSL(Secure Sockets Layer)

  • 암호화 기반 인터넷 보안 프로토콜. 인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 Netscape가 개발. SSL은 현재 사용 중인 TLS 암호화의 전기신호이다.

TLS(Transport Layer Security)

  • SSL의 다음 버전으로 이름이 바뀐것은 소유권 변경을 나타내기 위한 것

암호화 방식

대칭키 암호화

  • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행한다.
  • 키가 노출되면 매우 위험하지만 연산속도가 빠르다.

비대칭키 암호화

  • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용한다.
  • 키가 노출되어도 비교적 안전하지만 연상 속도가 느리다.

  • 공개키로 암호화화면 개인키는 나만 가지고 있으므로 나만 볼 수 있다.
  • 개인키로 암호화하면 공개키는 모두 가지고 있으므로 내가 인증한 정보임을 알릴 수 있다.

HTTPS의 동작과정

  • 대칭키와 공개키(비대칭키)방식을 전부 사용하는 하이브리드 방식. 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 대칭키 방식을 사용하며 대칭키를 안정하게 전달하기 위해 공개키 방식을 사용한다.


1. 클라이언트가 서버에 암호화 알고리즘과 TLS버전 정보를 전송하며, 난수 값을 생성하여 전송.
2. 서버가 클라이언트에게 사용할 TLS버전, 사용할 암호화 알고리즘, 난수값을 전송.
3. 서버가 클라이언트에 CA로 부터 발급받은 인증서(공개키)를 전송
4. 클라이언트는 인증서의 유효성을 검사하고 세션키를 발급
5. 클라이언트는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
6. 서버는 개인키로 암호화된 세션키를 복호화.
7. 클라이언트와 서버는 동일한 세션키로 데이터를 전달할 때 세션키로 암호화/복호화를 진행

* 인증서와 CA(Certifivate authority)
SSL을 적용하기 위해서는 인증서라는 것이 필요하다.
인증서의 내용은 1.서비스의 정보(CA,도메인 등..)  2.서버측의 공개키(공개키의 내용, 공개키의 암호화 방식) 
이 인증서를 발급해주는 기업을 CA라고 한다. 

참고한자료
https://mysterico.tistory.com/30!
https://mangkyu.tistory.com/98
유튜브 생활코딩-HTTP https://www.youtube.com/watch?v=t7ASgtJoVz4&list=PLBukFigBWXZKFBYkjzFRRcFmqCmyUJbKM&index=1

profile
TIL 정리

0개의 댓글