HTTP와 HTTPS

JP·2022년 1월 9일
0

컴퓨터

목록 보기
2/2

HTTP

  • HTTP는 클라이언트와 서버 모델을 따르는 프로토콜로 TCP/IP위에서 동작하며 80번 포트를 사용한다.
  • Hypertext 문서를 클라이언트와 서버간 송수신 하기 위한 프로토콜이다.
  • HTTP는 비연결성, 무상태성이다.
    - 비연결성(Connectionless) : 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질.
    - 연결을 계속 유지하는데에 들어가는 리소스가 크기 때문이다
    - 하지만 연결을 계속 끊고 맺는데에 드는 리소스가 더 클수도 있다.(오버헤드 발생)
    - 이러한 문제를 해결하기 위해 HTTP 1.1 이후에 KeepAlive라는 속성이 추가 되었다.
    - KeepAlive는 지정된 시간동안 서버와 클라이언트 사이에서 패킷 교환이 없을 경우, 상대방의 안부를 묻기위해 패킷을 주기적으로 보내는것을 말한다. 이 때 패킷에 반응이 없으면 접속을 끊는다.
    • 무상태성(Stateless) : 위의 Connectionless의 성격으로 인해 서버는 클라이언트의 상태에 대해 알 수 없다. 이를 무상태성이라고 한다.
      • 상태를 확인하는 방법으로는 Session, Cookie, Token 방식이 있다.

HTTPS

  • HTTPS 는 기존의 HTTP프로토콜을 암호화 한 것이다.
  • HTTPS는 443번 포트를 사용하며 중간에 제3자가 정보를 볼 수 없도록 공개키를 암호화한다.
    - HTTP는 보안을 고려하고 만들어진 프로토콜이 아니기 때문에 오가는 패킷을 중간에서 가로채어 확인하는 것이 매우 쉽다.
    • 이를 보완하기 위해 HTTPS의 S에 해당하는 SSL이 나왔다(현재는 TLS라고도 부르며 둘의 의미는 같다)

TLS를 통한 암호화 방식

TLS는 공개키 암호화 방식이다.
1. 공개키로 암호화된 HTTPS 요청을 서버가 받으면
2. 개인키를 이용하여 암호화된 데이터를 해독한다.
3. 서버는 요청이 무엇인지 알게 되고 개인키로 암호화하여 HTTPS에 요청을 한다.
4. 클라이언트는 공개키를 이용해서 개인키로 암호화된 HTTPS 응답을 해독하고 사용한다.

CA(Certificate Authority)

  • 공개키를 사용한다고 해도 현재 이용중인 사이트가 위조된 사이트인지 우리가 알 방법이 없다.
  • 이를 해결하기 위해 CA(Certificate Authority,인증 기관)에서는 TLS(SSL) 인증서를 발급해준다.
  • 브라우저는 이미 CA 리스트와 이들의 공개키를 알 고 있다.
  1. 웹 서비스는 CA를 통해 발급받은 SSL인증서를 사용자에게 전달한다.
  2. 브라우저는 SSL인증서가 CA리스트에 포함되어 있는지를 확인한다.
  3. 포함되어 있다면 브라우저는 해당 SSL인증서에 대응하는 CA리스트에 존재하는 공개키를 이용해 SSL인증서를 복호화 한다.
  4. 공개키로 복호화에 성공한다면 이에 대응되는 비밀키로 암호화 되었다는 의미이므로 신뢰 할 수 있는 서버임을 확신할 수 있다.
profile
to Infinity and b

0개의 댓글