ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • http와 https의 차이
    Web Programming 2020. 9. 25. 14:48
    반응형

    HTTP(HyperText Transfer Protocol) :  www상에서 정보를 주고받을 수 있는 프로토콜

     

    HTTP는 프로토콜의 일종으로 웹브라우저(Client)와 서버(Server)간의 웹페이지와 같은 자원을 주고 받을 때 쓰는 통신 규약이다. 상태가 없는 웹문서의 형태로 제공되지만 HTTP 쿠키와 같은 세션을 통해 페이지와 상호작용을 할 수 있다. 기본 구조는 다음과 같다.

     

    1. 클라이언트가 서버에 필요한 정보를 담은 요청을 전송한다.
    2. 서버는 HTTP 메시지의 형태로 응답에 대한 정보를 담아 클라이언트에게 전송한다.

    이와 같이 기본적인 구조의 송수신에서 문제가 발생한다. HTTP 메시지는 결국 텍스트 교환이다. 단순 텍스트를 주고 받기 때문에 제3자가 네트워크에서 신호를 가로챌 경우 내용이 노출될 수 있다. 이러한 보안상의 문제로 인해 등장한 것이 HTTPS이다.

     

    HTTPS인터넷 상에서 SSL(Secure Socket Layer) 프로토콜을 이용하여 웹브라우저와 서버가 자원을 주고 받는 통신 규약이다. S가 SSL 즉, 보안 통신망을 의미한다. 모든 HTTP 요청과 응답 데이터는 네트워크로 전송 전 암호화된다. 그리고 이는 수신자에 의해 복호화된다. 기본 구조는 다음과 같다.

     

    1. 클라이언트가 서버로 필요한 정보를 담은 요청을 전송한다.
    2. 정보는 공개키로 암호화되어 호스트에게 전송된다. (공개키는 보통 디지털 인증서 안에 포함된다.)
    3. 암호화 된 정보는 호스트의 개인키에 의해 복호화된다.
    4. 호스트는 복호화된 문서를 수신한다.

    하지만 우리가 일반으로 웹사이트를 사용할 때 공개키와 개인키 등은 고려하지 않는다. 이는 통신 흐름을 좀 더 자세히 확인해서 알 수 있다. 디지털 인증서를 발급해주는 CA(Certificate Authority)가 그 중심에 있다.

     

    1. 웹 애플리케이션 위해 A 서버를 만드는 기업은 HTTPS 적용을 위해 공개키와 개인키를 만든다.
    2. 기업은 공개키 관리를 위해 CA 기업을 선택하고 돈을 지불한다.
    3. CA 기업 또한 고유의 공개키와 개인키가 존재하며 A 서버의 공개키와 사용 방법 등의 정보가 담긴 인증서를 CA기업의 개인키로 암호화해서 A 서버에 제공한다.
    4. 암호화 인증서를 가진 A 서버는 A 서버의 공개키로 암호화된 HTTPS 요청이 아닌 경우 클라이언트에게 암호화된 인증서를 전송한다.
    5. 클라이언트는 CA 기업의 개인키로 암호화된 A 서버의 정보인 인증서를 수신한다.
    6. 클라이언트의 브라우저는 검증된 기업인 CA의 공개키를 보유하고 있어 이 인증서를 해독하여 A 서버의 공개키를 획득한다.
    7. 클라이언트는 이를 통해 A 서버의 공개키로 암호화된 요청을 A 서버에 전송할 수 있다.

    그렇다면 의문점이 남는다. 왜 A 서버에서 직접 공개키를 공유하지 않고 CA의 인증을 거치는가? 물론 자체적인 인증서 발급 혹은 신뢰할 수 없는 CA 기업을 통해서도 인증서를 발급 받을 수 있다. 하지만 이러한 경우 브라우저에서는 검증된 CA의 공개키를 확인할 수 없으므로 "주의 요함", "안전하지 않은 사이트" 등의 알림을 띄워준다.

    반응형

    'Web Programming' 카테고리의 다른 글

    JDBC와 ODBC의 차이  (0) 2020.11.12
    정규표현식  (0) 2020.10.27
    프로세스(Process)와 쓰레드(Thread), 멀티쓰레드(Multi-Thread)  (0) 2020.09.17
    3 Way-Handshake 란?  (0) 2020.09.16
    JSTL(JSP Standard Tag Library) 정리  (0) 2020.09.15
Designed by Tistory.